pax_global_header 0000666 0000000 0000000 00000000064 14720254634 0014521 g ustar 00root root 0000000 0000000 52 comment=f2e627455ef3f28e3871139c69fad6aa320d41e8
strcase-0.0.5/ 0000775 0000000 0000000 00000000000 14720254634 0013167 5 ustar 00root root 0000000 0000000 strcase-0.0.5/.github/ 0000775 0000000 0000000 00000000000 14720254634 0014527 5 ustar 00root root 0000000 0000000 strcase-0.0.5/.github/dependabot.yml 0000664 0000000 0000000 00000000405 14720254634 0017356 0 ustar 00root root 0000000 0000000 version: 2
updates:
- package-ecosystem: gomod
directory: /
labels:
- dependencies
schedule:
interval: daily
- package-ecosystem: github-actions
directory: /
labels:
- dependencies
schedule:
interval: daily
strcase-0.0.5/.github/workflows/ 0000775 0000000 0000000 00000000000 14720254634 0016564 5 ustar 00root root 0000000 0000000 strcase-0.0.5/.github/workflows/codeql-analysis.yml 0000664 0000000 0000000 00000001617 14720254634 0022404 0 ustar 00root root 0000000 0000000 # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning
name: CodeQL
on:
push:
branches: [ master, devel ]
pull_request:
branches: [ master ]
paths-ignore:
- '**/*.md'
- '**/*.txt'
- '**/*.json'
workflow_dispatch:
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ['go']
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
strcase-0.0.5/.github/workflows/exhaustive.yml 0000664 0000000 0000000 00000001245 14720254634 0021476 0 ustar 00root root 0000000 0000000 # We only run the "release" test on the latest version
# of Go since it is slow.
---
name: Release
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '>=1.23.x'
- name: Test Core
run: make codecov
- name: Upload results to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Test
run: make testgenpkg testgenerate testbenchmarks testskipped calibrate vet
strcase-0.0.5/.github/workflows/golangci-lint.yml 0000664 0000000 0000000 00000001435 14720254634 0022041 0 ustar 00root root 0000000 0000000 # # TODO: run this against gen.go as well
# https://github.com/marketplace/actions/run-golangci-lint
name: golangci-lint
on:
push:
tags:
- v*
branches:
- master
- main
pull_request:
permissions:
contents: read
pull-requests: read
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v5
with:
go-version: '1.23'
- uses: actions/checkout@v4
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: latest
- name: golangci-lint gen package
uses: golangci/golangci-lint-action@v6
with:
version: latest
working-directory: ./internal/gen
args: --config=${{ github.workspace }}/.golangci.yaml
strcase-0.0.5/.github/workflows/macos.yml 0000664 0000000 0000000 00000000554 14720254634 0020415 0 ustar 00root root 0000000 0000000 ---
name: Test macOS arm64
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '>=1.23.x'
- name: Test
run: make release
strcase-0.0.5/.github/workflows/test-386.yml 0000664 0000000 0000000 00000001024 14720254634 0020601 0 ustar 00root root 0000000 0000000 # Test on 386 to make the logic for platforms that
# we do not have assembly implementations for works.
---
name: Test GOARCH 386
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '>=1.23.x'
- name: Test
shell: bash
run: |
GOARCH=386 make env
GOARCH=386 make test
strcase-0.0.5/.github/workflows/test-generate.yml 0000664 0000000 0000000 00000001540 14720254634 0022056 0 ustar 00root root 0000000 0000000 ---
name: Test Generate
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/cache@v4
name: Cache unicode
with:
path: ${{ github.workspace }}/internal/gen/gentables/DATA
key: ${{ runner.os }}-data-${{ hashFiles('${{ github.workspace }}/**/*.txt') }}
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '>=1.23.x'
# Test the gen package
- name: Test Gen
run: make test
working-directory: ./internal/gen
# Vet the gen package
- name: Vet Gen
run: make vet
working-directory: ./internal/gen
# Test that the generated tables are up-to-date
- name: Test Generate
run: make testgenerate
strcase-0.0.5/.github/workflows/test.yml 0000664 0000000 0000000 00000002040 14720254634 0020262 0 ustar 00root root 0000000 0000000 ---
name: Test
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: ['1.19.x', '1.20.x', '1.21.x', '1.22.x', '1.23.x']
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
name: Cache unicode
with:
path: ${{ github.workspace }}/internal/gen/gentables/DATA
key: ${{ runner.os }}-data-${{ hashFiles('${{ github.workspace }}/**/*.txt') }}
# Cache richgo and golangci-lint
- uses: actions/cache@v4
name: Cache bin
with:
path: bin
# The Makefile sets the version of richgo and golangci-lint
key: ${{ runner.os }}-bin-${{ hashFiles('${{ github.workspace }}/common.mk') }}
- uses: actions/setup-go@v5
name: Setup Go ${{ matrix.go-version }}
with:
go-version: ${{ matrix.go-version }}
- name: Test
run: make ci --jobs=$(nproc)
- name: Test Skipped
run: make testskipped
strcase-0.0.5/.gitignore 0000664 0000000 0000000 00000000102 14720254634 0015150 0 ustar 00root root 0000000 0000000 coverage.txt
*.out
*.test
/bin
/gen
/vendor
/DATA
/internal/phash
strcase-0.0.5/.golangci.yaml 0000664 0000000 0000000 00000000712 14720254634 0015714 0 ustar 00root root 0000000 0000000 ---
linters:
enable:
- gofmt
- goimports
- mirror
- misspell
- unconvert
- wastedassign
- gocheckcompilerdirectives
output:
sort-results: true
issues:
max-issues-per-linter: 100
max-same-issues: 100
# We need to exclude each dir twice since we run golangci-lint
# with the --path-prefix option in CI, which changes how paths
# are matched.
exclude-dirs:
- 'gen/gen'
- 'gen/ucd'
- '^gen$'
- '^ucd$'
strcase-0.0.5/.richstyle.yml 0000664 0000000 0000000 00000001124 14720254634 0015774 0 ustar 00root root 0000000 0000000 labelType: long
buildStyle:
bold: true
foreground: yellow
startStyle:
foreground: lightBlack
# foreground: lighYellow
passStyle:
foreground: green
failStyle:
bold: true
foreground: lightBlack
skipStyle:
foreground: lightBlack
# foreground: lightYellow
passPackageStyle:
foreground: green
hide: true
failPackageStyle:
bold: true
foreground: red
hide: true
coverThreshold: 50
coveredStyle:
foreground: green
uncoveredStyle:
bold: true
foreground: yellow
fileStyle:
foreground: cyan
lineStyle:
foreground: magenta
leaveTestPrefix: true
removals:
- '=== CONT'
strcase-0.0.5/.tables.json 0000664 0000000 0000000 00000002206 14720254634 0015412 0 ustar 00root root 0000000 0000000 {
"tables_go116.go": {
"filename": "tables_go116.go",
"unicode_version": "13.0.0",
"cldr_version": "32",
"case_fold_hash": "3ab0454d1a85064a4c401b9a0c7162bd08a306ebd0dc34065b25701e6d38dba9",
"gen_go_hash": "3c10a98fa2bf15161cfaf5db1abba335476a0583661c37ea204bddef6d61cba0",
"table_hashes": {
"CaseFolds": 2422855,
"FoldMap": 2521300993,
"UpperLower": 1793588629,
"_CaseFolds": 2422855,
"_FoldMap": 2521300993,
"_UpperLower": 1793588629
}
},
"tables_go121.go": {
"filename": "tables_go121.go",
"unicode_version": "15.0.0",
"cldr_version": "32",
"case_fold_hash": "26ed8b8eee3e8fb11d5bc828b898e9b714fed8d34dea08089dde133d0b10fb04",
"gen_go_hash": "3c10a98fa2bf15161cfaf5db1abba335476a0583661c37ea204bddef6d61cba0",
"table_hashes": {
"CaseFolds": 4292873350,
"FoldMap": 2521300993,
"UpperLower": 1793588629,
"_CaseFolds": 4292873350,
"_FoldMap": 4263480156,
"_UpperLower": 4290248538
}
}
} strcase-0.0.5/CONTRIBUTING.md 0000664 0000000 0000000 00000006145 14720254634 0015426 0 ustar 00root root 0000000 0000000 # Contributing
## How to contribute
We definitely welcome patches and contribution to this project!
In particular we would love feedback and contributions from anyone with real
world experience using this project, and would love help with adding assembly
implementations of IndexByte, CountByte, and IndexNonASCII for processor
architectures (GOARCH) that we don't already have asm implementations for (a
review of the current amd64 and arm64 implementations by someone who actually
knows these architectures would also be welcome).
## Discuss Significant Changes
Before you invest a significant amount of time on a change, please create a
discussion or issue describing your proposal. This will help to ensure your
proposed change has a reasonable chance of being merged.
## Avoid Dependencies
Adding a dependency is a big deal. While on occasion a new dependency may be
accepted, the default answer to any change that adds a dependency is no.
## Avoid Allocating
Allocating memory is never allowed unless the corresponding function in
the [strings](https://pkg.go.dev/strings) package also allocates memory
or if the change was previously discussed and provides a speedup that
justifies the allocation.
## Development Environment Setup
Run `make pre-commit` to install a git pre-commit hook that checks if either
[internal/gen/gentables/main.go](./internal/gen/gentables/main.go) or
[.tables.json](./.tables.json) are out of date. Any change to
`internal/gen/gentables` requires the code generation to be re-run (`go
generate`) and the resulting changes to `.tables.json` to be committed along
side any changes to `internal/gen/gentables`. The `.tables.json` stores a hash
of the `internal/gen/gentables` Go files so that we don't accidentally change
hash table generation logic without also re-running the generation code (this
may change in a future release since re-generating the hash tables is slow).
The `testgenerate` make target can be used to check if `go generate` needs to
be ran.
**NOTE:** The [gen.go](./gen.go) is a wrapper that can be used to run the
generation code for all supported Unicode version and is what the Makefile
uses. It exists because `internal/gen` is a separate module and it handles
the building of the generate binary. This was done to prevent the separate
the generate dependencies from the strcase dependencies.
## Running Tests
Before submitting a PR run the `release` make target (`make release`).
This will run all the tests, perform a more exhaustive fuzz test, and
lint the code.
During development running `go test` is generally sufficient.
If working on the generation code the [internal/gen/Makefile](./internal/gen/Makefile)
can be used.
## Running Benchmarks
The [internal/benchtest](./internal/benchtest) directory contains the release
benchmarks that are used to compare strcase to the strings package see the
packages [README](./internal/benchtest/README.md) for more information. But
TLDR `make release` can be ran from that directory to generate a statistically
accurate comparison (note: it is very slow).
Any strcase specific benchmarks should be added to
[`strcase_test.go`](./strcase_test.go).
strcase-0.0.5/LICENSE 0000664 0000000 0000000 00000002070 14720254634 0014173 0 ustar 00root root 0000000 0000000 The MIT License (MIT)
Copyright 2024 Charlie Vieth
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.
strcase-0.0.5/Makefile 0000664 0000000 0000000 00000010633 14720254634 0014632 0 ustar 00root root 0000000 0000000 # vim: ts=4 sw=4 ft=make
# Packages to run exhaustive tests against
EXHAUSTIVE_PKGS = github.com/charlievieth/strcase \
github.com/charlievieth/strcase/bytcase
# Run tests and linters. If this passes then CI tests
# should also pass.
.PHONY: all
all: install test testbenchmarks testgenerate testgenpkg vet golangci-lint
include common.mk
# Install pre-commit hooks and download modules
.PHONY: install
install: pre-commit
@$(GO) mod download
@$(GO) install
# Run verbose tests
testverbose: override GO_TEST_FLAGS += -v
# Run short tests
testshort: override GO_TEST_FLAGS += -short
testshort: override GO_COVER_FLAGS = ''
# TODO: add back "testinvalid" once we find an easy way
# to construct fuzz tests with invalid UTF-8 sequences.
.PHONY: test testshort testverbose
test testshort testverbose:
@GOGC=$(GO_GOGC) $(GO_TEST) ./...
# Run exhaustive fuzz tests
.PHONY: exhaustive
exhaustive:
@GOGC=$(GO_GOGC) $(GO_TEST) $(EXHAUSTIVE_PKGS) -exhaustive
# Generate code coverage report for strcase/bytecase
.PHONY: codecov
codecov: override GO_COVER_FLAGS = -covermode=count
codecov: override GO_COVER_FLAGS += -coverprofile=coverage.txt
codecov: exhaustive
# Assert that there are no skipped tests
.PHONY: testskipped
testskipped:
@if $(MAKE) testverbose | $(xgrep) --fixed-strings -- '--- SKIP:'; then \
echo ''; \
echo '$(red)FAIL: $(cyan)^^^ skipped tests ^^^$(term-reset)'; \
echo ''; \
exit 1; \
fi
# The gen package is separate from the strcase package (so we don't pollute
# our go.mod with its dependencies) so we need to cd into its directory to
# run the tests.
.PHONY: testgenpkg
testgenpkg:
@$(MAKE) -C $(MAKEFILE_DIR)/internal/gen --quiet test
# Test that `go generate` does not change tables.go
.PHONY: testgenerate
testgenerate: bin/gen
@if ! $(GEN_TARGET) -dry-run -skip-tests >/dev/null; then \
$(GEN_TARGET) -dry-run -skip-tests; \
fi;
# Make sure the benchmarks pass (we run them with a short benchtime)
.PHONY: testbenchmarks
testbenchmarks:
@cd $(MAKEFILE_DIR) && ./scripts/test-benchmarks.bash
# Run all tests (slow)
.PHONY: testall
testall: exhaustive testskipped testgenerate testgenpkg
# CI tests
.PHONY: ci
ci: test
ci: testbenchmarks
ci: vet
# Calibrate brute-force cutover
.PHONY: calibrate
calibrate: GO_COVER_FLAGS =
calibrate: GO_TEST_FLAGS += -v
calibrate:
@$(GO_TEST) -run 'Test.*Calibrate' -calibrate
.PHONY: vet-strcase
vet-strcase:
@$(GO) vet ./...
.PHONY: vet-gen
vet-gen:
@$(GO) vet -tags gen gen.go
.PHONY: vet-genpkg
vet-genpkg:
@cd $(MAKEFILE_DIR)/internal/gen && $(MAKE) --quiet vet
# NOTE: we don't run vet-genpkg here since it requires Go version 1.20
# and we run this against Go 1.19 in CI.
.PHONY: vet
vet: vet-strcase vet-gen
golangci-lint-gen: override GOLANGCI_EXTRA_FLAGS += --build-tags=gen gen.go
golangci-lint-gen: override GOLANGCI_SKIP =
# Run golangci-lint
.PHONY: golangci-lint-strcase golangci-lint-gen
golangci-lint-strcase golangci-lint-gen: bin/golangci-lint
@$(GOLANGCI_TARGET) run $(GOLANGCI_FLAGS)
.PHONY: golangci-lint
golangci-lint: golangci-lint-strcase golangci-lint-gen
.PHONY: lint
lint: vet golangci-lint golangci-lint-gen
# Make sure there aren't any comments that need addressing (TODO or WARN)
#
# NOTE: not currently part of the "lint" target.
.PHONY: lint-comments
lint-comments:
@if $(xgrep) $(GREP_COMMENTS) $(COMMENTS); then \
echo ''; \
echo '$(red)FAIL: $(cyan)address comments!$(term-reset)'; \
exit 1; \
fi
# Generate tables.go file
.PHONY: generate
generate:
@$(GO) generate
# Install pre-commit hook
# TODO: omit on Windows ???
.git/hooks/pre-commit: scripts/pre-commit
@mkdir -p $(MAKEFILE_DIR)/.git/hooks
ln -s $(MAKEFILE_DIR)/scripts/pre-commit $(MAKEFILE_DIR)/.git/hooks/pre-commit
# Install pre-commit hooks
# TODO: omit on Windows ???
pre-commit: .git/hooks/pre-commit
# Run pre-release tests (excluding: golangci-lint)
.PHONY: release
release: exhaustive testgenpkg testgenerate testbenchmarks calibrate vet
# Print information about the version of go being used
.PHONY: env
env:
@$(GO) env
.PHONY: clean
clean:
@rm -f cpu*.out mem*.out
@rm -rf DATA bin
@$(GO) -i ./...
@cd $(MAKEFILE_DIR)/internal/gen && $(MAKE) --quiet clean
strcase-0.0.5/README.md 0000664 0000000 0000000 00000245507 14720254634 0014463 0 ustar 00root root 0000000 0000000 [](https://github.com/charlievieth/strcase/actions/workflows/test.yml)
[](https://pkg.go.dev/github.com/charlievieth/strcase@master)
[](https://codecov.io/github/charlievieth/strcase)
# strcase
Package [strcase](.) and [bytcase](bytcase/README.md) are case-insensitive and
Unicode aware implementations of the Go standard library's
[`strings`](https://pkg.go.dev/strings) and [`bytes`](https://pkg.go.dev/bytes)
packages that are accurate, fast, and never allocate memory.
Simple Unicode case-folding is used for all comparisons. This matches the behavior
of [strings.EqualFold](https://pkg.go.dev/strings#EqualFold) and [regexp.Regexp](https://pkg.go.dev/regexp#Regexp)
(when the pattern is compiled with the case-insensitive flag `(?i)`) and is more
accurate (and significantly more efficient) than using [strings.ToLower](https://pkg.go.dev/strings#ToLower) or
[strings.ToUpper](https://pkg.go.dev/strings#ToUpper) to normalize the needle /
haystack before searching.
**Note:** The bytcase package is analogous to the strcase package; whatever
applies to strcase also applies to bytcase. For simplicity, the documentation
primarily refers to strcase. Unless otherwise noted, all comments apply to both
packages.
## Overview
* Drop-in replacement for the [`strings`](https://pkg.go.dev/strings) and
[`bytes`](https://pkg.go.dev/bytes) packages that provides Unicode
aware case-insensitive matching.
* Simple Unicode case-folding is used for all comparisons - making it more
accurate than using [strings.ToLower](https://pkg.go.dev/strings#ToLower) or
[strings.ToUpper](https://pkg.go.dev/strings#ToUpper) for case-insensitivity.
* Any string matched by strcase or bytcase will also match with
[strings.EqualFold](https://pkg.go.dev/strings#EqualFold) or
[bytes.EqualFold](https://pkg.go.dev/bytes#EqualFold)
* Fast and optimized for amd64 and arm64. For non-pathological inputs strcase
is only 25-50% slower than the strings package.
* On average strcase/bytcase are 25x faster than using than using a case-insensitive
[regexp.Regexp](https://pkg.go.dev/regexp#Regexp) (see the below
[benchmarks](#benchmarks) section).
## Installation
strcase is available using the standard `go get` command.
Install by running:
```sh
# strcase
go get github.com/charlievieth/strcase
# bytcase
go get github.com/charlievieth/strcase/bytcase
```
## Features
- Fast: strcase is optimized for `amd64` and `arm64` and strives to be no worse
than 2x slower than the strings package and is often only 30-50% slower.
- The `IndexByte`, `IndexNonASCII` and `Count` functions are implemented in
assembly and use SSE/AVX2 on `amd64` and NEON on `arm64`.
- Instead of using the [unicode](https://pkg.go.dev/unicode) package for case
conversions strcase uses its own multiplicative hash tables that are roughly
10x faster (at the cost of package size).
- Accurate: Unicode simple folding is used to determine equality.
- Any matched text would also match with
[`strings.EqualFold`](https://pkg.go.dev/strings#EqualFold).
- Zero allocation: none of the strcase functions allocate memory.
- Thoroughly tested and fuzzed.
## Additional Features
strcase provides two functons for checking if a string contains non-ASCII
characters that are highly optimized for amd64/arm64:
- [strcase.IndexNonASCII](https://pkg.go.dev/github.com/charlievieth/strcase#IndexNonASCII):
IndexNonASCII returns the index of first non-ASCII rune in s, or -1 if s consists
only of ASCII characters.
- [strcase.ContainsNonASCII](https://pkg.go.dev/github.com/charlievieth/strcase#ContainsNonASCII):
ContainsNonASCII returns true if s contains any non-ASCII characters.
## Caveats
All invalid UTF-8 sequences are considered equal. This is because Go converts
invalid UTF-8 sequences to the Unicode replacement character `0xFFFD`
([unicode.ReplacementChar](https://pkg.go.dev/unicode#pkg-constants) /
[utf8.RuneError](https://pkg.go.dev/unicode/utf8#pkg-constants)).
This occurs both when [ranging](https://go.dev/ref/spec#For_statements) over
a string or using the [utf8](https://pkg.go.dev/utf8) package's `Decode*`
functions.
```go
strcase.Compare("\xff", string(utf8.RuneError)) // returns 0
strcase.Index("a\xff", string(utf8.RuneError)) // returns 1
```
Thus it is the callers responsibility to ensure strcase functions are called
with valid UTF-8 strings and not arbitrary binary data.
## Performance
strcase aims to be seriously fast and can beat or match the performance of the
strings package in some benchmarks (EqualFold and IndexRune). Overall, strcase
tends to be only 30-50% slower than the strings package for non-pathological inputs.
#### Optimizations
- Instead of using the standard library's Unicode package, which uses a binary
search for its lookup tables, strcase uses multiplicative hashing for its
lookup tables. This is 10x faster at the cost of larger tables.
- Searching for runes (IndexRune) is a big determinant of the strcase packages
performance. Instead of searching for runes by their first byte (like the
strings package) strcase searches for the second byte, which is more unique,
then looks backwards/forwards to complete the match.
* **NB:** [CL 539116](https://go-review.googlesource.com/c/go/+/539116) added
this logic to Go's strings/bytes packages and is available starting with Go 1.23.
- Package strcase is optimized for amd64 and arm64 and includes assembly
implementations of `IndexByte`, `CountByte` and `IndexNonASCII` that
leverage the same SIMD technologies used in the standard library (SSE, AVX2,
NEON).
- On armv7l (Raspberry Pi), which we do not optimize for, the average
performance penalty is only ~30%.
## Notes:
- All invalid Unicode points and invalid multibyte UTF-8 sequences are
considered equal.
This is because the [utf8](https://pkg.go.dev/unicode/utf8) package converts
invalid runes and multibyte UTF-8 sequences to
[`utf8.RuneError`](https://pkg.go.dev/unicode/utf8#RuneError).
* This matches the behavior of [strings.EqualFold](https://pkg.go.dev/strings#EqualFold).
- `İ` (LATIN CAPITAL LETTER I WITH DOT ABOVE) and `ı`: (LATIN SMALL LETTER DOTLESS
I) doe not fold to ASCII `[iI]` (U+0069 / U+0049)
* This matches the behavior of [strings.EqualFold](https://pkg.go.dev/strings#EqualFold)
* See [unicode.org/UCD/CaseFolding.txt](https://www.unicode.org/Public/UCD/latest/ucd/CaseFolding.txt)
for an explanation, basically this folding is normally ignored for non-Turkic languages
- Kelvin `K` (U+212A) matches ASCII `K` and `k`
- Latin small letter long S `ſ` matches ASCII `S` and `s`
## Contributing / Hacking
Contributions are welcome. Please, see the [CONTRIBUTING](./CONTRIBUTING.md)
document for details.
## Benchmarks
The following benchmarks were created using
[internal/benchtest](https://github.com/charlievieth/strcase/tree/master/internal/benchtest).
Additional, processor specific benchmarks can be found in
[internal/benchtest/results](https://github.com/charlievieth/strcase/tree/master/internal/benchtest/results).
", "", "",
"regexp vs. strcase
```
goos: darwin
goarch: arm64
pkg: github.com/charlievieth/strcase/internal/benchtest
cpu: Apple M1 Max
│ regexp.10.txt │ strcase.10.txt │
│ sec/op │ sec/op vs base │
IndexRune-10 587.45n ± 2% 11.15n ± 1% -98.10% (p=0.000 n=10)
IndexRuneLongString-10 584.15n ± 2% 12.67n ± 1% -97.83% (p=0.000 n=10)
IndexRuneFastPath-10 673.300n ± 6% 5.130n ± 3% -99.24% (p=0.000 n=10)
Index-10 671.900n ± 2% 4.982n ± 1% -99.26% (p=0.000 n=10)
EqualFold/ASCII-10 2920.500n ± 1% 9.418n ± 2% -99.68% (p=0.000 n=10)
EqualFold/UnicodePrefix-10 3892.00n ± 1% 32.35n ± 2% -99.17% (p=0.000 n=10)
EqualFold/UnicodeSuffix-10 3885.50n ± 2% 26.17n ± 1% -99.33% (p=0.000 n=10)
IndexHard1-10 334.1µ ± 0% 340.4µ ± 0% +1.90% (p=0.000 n=10)
IndexHard2-10 9.963m ± 6% 1.362m ± 1% -86.33% (p=0.000 n=10)
IndexHard3-10 10.727m ± 0% 1.369m ± 1% -87.24% (p=0.000 n=10)
IndexHard4-10 10.385m ± 0% 1.361m ± 1% -86.89% (p=0.000 n=10)
CountHard1-10 338.1µ ± 1% 336.4µ ± 1% ~ (p=0.218 n=10)
CountHard2-10 9.844m ± 1% 1.365m ± 1% -86.13% (p=0.000 n=10)
CountHard3-10 10.684m ± 0% 1.362m ± 1% -87.25% (p=0.000 n=10)
IndexTorture-10 27787.99µ ± 1% 18.04µ ± 2% -99.94% (p=0.000 n=10)
CountTorture-10 27631.25µ ± 1% 17.86µ ± 2% -99.94% (p=0.000 n=10)
CountTortureOverlapping-10 14204.297m ± 2% 4.058m ± 1% -99.97% (p=0.000 n=10)
CountByte/10-10 570.100n ± 1% 7.684n ± 1% -98.65% (p=0.000 n=10)
CountByte/32-10 964.050n ± 2% 4.501n ± 1% -99.53% (p=0.000 n=10)
CountByte/4K-10 63123.0n ± 1% 103.1n ± 0% -99.84% (p=0.000 n=10)
CountByte/4M-10 87646.31µ ± 0% 96.02µ ± 7% -99.89% (p=0.000 n=10)
CountByte/64M-10 1433.190m ± 1% 1.574m ± 1% -99.89% (p=0.000 n=10)
IndexAnyASCII/1:1-10 742.800n ± 2% 5.513n ± 1% -99.26% (p=0.000 n=10)
IndexAnyASCII/1:2-10 915.150n ± 2% 7.462n ± 0% -99.18% (p=0.000 n=10)
IndexAnyASCII/1:4-10 1031.500n ± 7% 7.453n ± 0% -99.28% (p=0.000 n=10)
IndexAnyASCII/1:8-10 1217.000n ± 2% 7.397n ± 0% -99.39% (p=0.000 n=10)
IndexAnyASCII/1:16-10 1802.000n ± 2% 7.710n ± 1% -99.57% (p=0.000 n=10)
IndexAnyASCII/1:32-10 3100.000n ± 4% 7.711n ± 0% -99.75% (p=0.000 n=10)
IndexAnyASCII/1:64-10 5183.500n ± 2% 8.037n ± 0% -99.84% (p=0.000 n=10)
IndexAnyASCII/16:1-10 731.000n ± 4% 5.457n ± 0% -99.25% (p=0.000 n=10)
IndexAnyASCII/16:2-10 1096.00n ± 2% 13.44n ± 1% -98.77% (p=0.000 n=10)
IndexAnyASCII/16:4-10 1231.00n ± 4% 15.39n ± 3% -98.75% (p=0.000 n=10)
IndexAnyASCII/16:8-10 1429.50n ± 2% 19.38n ± 1% -98.64% (p=0.000 n=10)
IndexAnyASCII/16:16-10 2009.50n ± 3% 34.40n ± 1% -98.29% (p=0.000 n=10)
IndexAnyASCII/16:32-10 3325.00n ± 1% 61.90n ± 0% -98.14% (p=0.000 n=10)
IndexAnyASCII/16:64-10 5380.5n ± 1% 124.8n ± 3% -97.68% (p=0.000 n=10)
IndexAnyASCII/256:1-10 727.600n ± 2% 8.571n ± 3% -98.82% (p=0.000 n=10)
IndexAnyASCII/256:2-10 4038.5n ± 1% 153.7n ± 0% -96.19% (p=0.000 n=10)
IndexAnyASCII/256:4-10 4167.5n ± 1% 156.2n ± 1% -96.25% (p=0.000 n=10)
IndexAnyASCII/256:8-10 4356.0n ± 1% 161.6n ± 0% -96.29% (p=0.000 n=10)
IndexAnyASCII/256:16-10 4953.0n ± 1% 176.3n ± 3% -96.44% (p=0.000 n=10)
IndexAnyASCII/256:32-10 6819.5n ± 4% 207.5n ± 1% -96.96% (p=0.000 n=10)
IndexAnyASCII/256:64-10 8949.5n ± 6% 271.9n ± 0% -96.96% (p=0.000 n=10)
IndexAnyUTF8/1:16-10 1860.500n ± 1% 7.296n ± 0% -99.61% (p=0.000 n=10)
IndexAnyUTF8/16:16-10 2100.50n ± 1% 86.67n ± 0% -95.87% (p=0.000 n=10)
IndexAnyUTF8/256:16-10 5902.0n ± 1% 119.8n ± 1% -97.97% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic2-10 1451.35µ ± 1% 84.06µ ± 0% -94.21% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic4-10 1529.07µ ± 1% 83.80µ ± 0% -94.52% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic8-10 1349.62µ ± 18% 83.59µ ± 1% -93.81% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic16-10 1234.51µ ± 1% 64.12µ ± 1% -94.81% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic32-10 1196.96µ ± 1% 30.81µ ± 1% -97.43% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic64-10 1169.90µ ± 8% 14.68µ ± 0% -98.75% (p=0.000 n=10)
IndexByte_Bytes/10-10 4.517n ± 20%
IndexByte_Bytes/32-10 4.518n ± 1%
IndexByte_Bytes/4K-10 81.42n ± 2%
IndexByte_Bytes/4M-10 74.80µ ± 1%
IndexByte_Bytes/64M-10 1.237m ± 5%
IndexRune_Bytes/10-10 12.56n ± 1% 12.32n ± 0% -1.91% (p=0.000 n=10)
IndexRune_Bytes/32-10 12.59n ± 1% 12.32n ± 0% -2.10% (p=0.000 n=10)
IndexRune_Bytes/4K-10 85.06n ± 1% 83.56n ± 0% -1.76% (p=0.000 n=10)
IndexRune_Bytes/4M-10 65.05µ ± 1% 64.33µ ± 0% -1.11% (p=0.030 n=10)
IndexRune_Bytes/64M-10 1.149m ± 4% 1.169m ± 5% ~ (p=0.089 n=10)
IndexRuneASCII_Bytes/10-10 6.439n ± 1% 6.388n ± 0% -0.79% (p=0.025 n=10)
IndexRuneASCII_Bytes/32-10 6.462n ± 1% 6.369n ± 1% -1.43% (p=0.000 n=10)
IndexRuneASCII_Bytes/4K-10 83.87n ± 0% 83.49n ± 11% ~ (p=0.210 n=10)
IndexRuneASCII_Bytes/4M-10 75.19µ ± 2% 74.01µ ± 1% -1.57% (p=0.023 n=10)
IndexRuneASCII_Bytes/64M-10 1.256m ± 5% 1.300m ± 2% ~ (p=0.218 n=10)
IndexNonASCII_Bytes/10-10 3.063n ± 0% 2.967n ± 0% -3.13% (p=0.000 n=10)
IndexNonASCII_Bytes/32-10 3.835n ± 2% 3.759n ± 0% -1.98% (p=0.027 n=10)
IndexNonASCII_Bytes/4K-10 80.74n ± 1% 79.59n ± 0% -1.44% (p=0.016 n=10)
IndexNonASCII_Bytes/4M-10 74.47µ ± 1% 74.51µ ± 1% ~ (p=0.529 n=10)
IndexNonASCII_Bytes/64M-10 1.271m ± 4% 1.307m ± 2% ~ (p=0.089 n=10)
geomean 12.78µ 595.2n -96.26% ¹
¹ benchmark set differs from baseline; geomeans may not be comparable
│ regexp.10.txt │ strcase.10.txt │
│ B/s │ B/s vs base │
IndexRune-10 27.60Mi ± 2% 1454.81Mi ± 1% +5171.18% (p=0.000 n=10)
IndexRuneLongString-10 191.0Mi ± 2% 8802.1Mi ± 1% +4508.17% (p=0.000 n=10)
IndexRuneFastPath-10 25.50Mi ± 5% 3346.27Mi ± 3% +13024.42% (p=0.000 n=10)
Index-10 3.365Gi ± 1%
EqualFold/ASCII-10 3.920Mi ± 1% 1215.096Mi ± 2% +30900.49% (p=0.000 n=10)
EqualFold/UnicodePrefix-10 4.411Mi ± 1% 530.591Mi ± 2% +11929.51% (p=0.000 n=10)
EqualFold/UnicodeSuffix-10 4.416Mi ± 2% 656.018Mi ± 1% +14757.13% (p=0.000 n=10)
IndexHard1-10 2.869Gi ± 0%
IndexHard2-10 734.1Mi ± 1%
IndexHard3-10 730.6Mi ± 1%
IndexHard4-10 734.5Mi ± 1%
CountHard1-10 2.888Gi ± 1% 2.903Gi ± 1% ~ (p=0.218 n=10)
CountHard2-10 101.6Mi ± 1% 732.6Mi ± 1% +621.19% (p=0.000 n=10)
CountHard3-10 93.59Mi ± 0% 734.10Mi ± 1% +684.35% (p=0.000 n=10)
IndexTorture-10 325.0Mi ± 2%
CountTorture-10 214.8Ki ± 0% 336108.4Ki ± 2% +156343.18% (p=0.000 n=10)
CountTortureOverlapping-10 214.8Ki ± 5% 756987.3Ki ± 1% +352243.18% (p=0.000 n=10)
CountByte/10-10 16.73Mi ± 1% 1240.98Mi ± 1% +7318.84% (p=0.000 n=10)
CountByte/32-10 31.66Mi ± 2% 6780.62Mi ± 1% +21318.89% (p=0.000 n=10)
CountByte/4K-10 61.88Mi ± 1% 37908.26Mi ± 0% +61157.04% (p=0.000 n=10)
CountByte/4M-10 45.64Mi ± 0% 41657.45Mi ± 7% +91177.83% (p=0.000 n=10)
CountByte/64M-10 44.66Mi ± 1% 40660.56Mi ± 1% +90953.26% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic2-10 743.5Mi ± 0%
IndexPeriodic/IndexPeriodic4-10 745.8Mi ± 0%
IndexPeriodic/IndexPeriodic8-10 747.7Mi ± 1%
IndexPeriodic/IndexPeriodic16-10 974.8Mi ± 1%
IndexPeriodic/IndexPeriodic32-10 1.981Gi ± 1%
IndexPeriodic/IndexPeriodic64-10 4.159Gi ± 0%
IndexByte_Bytes/10-10 2.062Gi ± 17%
IndexByte_Bytes/32-10 6.598Gi ± 1%
IndexByte_Bytes/4K-10 46.85Gi ± 2%
IndexByte_Bytes/4M-10 52.23Gi ± 1%
IndexByte_Bytes/64M-10 50.52Gi ± 5%
IndexRune_Bytes/10-10 759.2Mi ± 1% 773.8Mi ± 0% +1.93% (p=0.000 n=10)
IndexRune_Bytes/32-10 2.367Gi ± 1% 2.418Gi ± 0% +2.17% (p=0.000 n=10)
IndexRune_Bytes/4K-10 44.85Gi ± 1% 45.65Gi ± 0% +1.79% (p=0.000 n=10)
IndexRune_Bytes/4M-10 60.05Gi ± 1% 60.72Gi ± 0% +1.12% (p=0.035 n=10)
IndexRune_Bytes/64M-10 54.38Gi ± 4% 53.46Gi ± 5% ~ (p=0.089 n=10)
IndexRuneASCII_Bytes/10-10 1.446Gi ± 1% 1.458Gi ± 0% +0.80% (p=0.023 n=10)
IndexRuneASCII_Bytes/32-10 4.612Gi ± 1% 4.679Gi ± 1% +1.46% (p=0.000 n=10)
IndexRuneASCII_Bytes/4K-10 45.48Gi ± 0% 45.69Gi ± 10% ~ (p=0.218 n=10)
IndexRuneASCII_Bytes/4M-10 51.95Gi ± 2% 52.78Gi ± 1% +1.60% (p=0.023 n=10)
IndexRuneASCII_Bytes/64M-10 49.75Gi ± 5% 48.09Gi ± 3% ~ (p=0.218 n=10)
IndexNonASCII_Bytes/10-10 3.040Gi ± 0% 3.138Gi ± 0% +3.23% (p=0.000 n=10)
IndexNonASCII_Bytes/32-10 7.772Gi ± 2% 7.928Gi ± 0% +2.01% (p=0.023 n=10)
IndexNonASCII_Bytes/4K-10 47.24Gi ± 1% 47.93Gi ± 0% +1.46% (p=0.019 n=10)
IndexNonASCII_Bytes/4M-10 52.46Gi ± 1% 52.43Gi ± 1% ~ (p=0.529 n=10)
IndexNonASCII_Bytes/64M-10 49.19Gi ± 4% 47.81Gi ± 2% ~ (p=0.089 n=10)
geomean 832.0Mi 3.764Gi +1121.52% ¹
¹ benchmark set differs from baseline; geomeans may not be comparable
│ regexp.10.txt │ strcase.10.txt │
│ B/op │ B/op vs base │
IndexRune-10 811.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
IndexRuneLongString-10 811.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
IndexRuneFastPath-10 791.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
Index-10 791.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
EqualFold/ASCII-10 4.658Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
EqualFold/UnicodePrefix-10 6.480Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
EqualFold/UnicodeSuffix-10 6.480Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexHard1-10 914.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
IndexHard2-10 1.433Ki ± 4% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexHard3-10 3.665Ki ± 1% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexHard4-10 6.977Ki ± 1% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
CountHard1-10 914.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
CountHard2-10 1.427Ki ± 3% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
CountHard3-10 3.668Ki ± 1% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexTorture-10 647.6Ki ± 6% 0.0Ki ± 0% -100.00% (p=0.000 n=10)
CountTorture-10 647.6Ki ± 6% 0.0Ki ± 0% -100.00% (p=0.000 n=10)
CountTortureOverlapping-10 4424.21Ki ± 0% 10.53Ki ± 1% -99.76% (p=0.000 n=10)
CountByte/10-10 765.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
CountByte/32-10 1021.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
CountByte/4K-10 19.36Ki ± 0% 0.00Ki ± 0% -100.00% (p=0.000 n=10)
CountByte/4M-10 27.79Mi ± 0% 0.00Mi ± 0% -100.00% (p=0.000 n=10)
CountByte/64M-10 421.2Mi ± 0% 0.0Mi ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:1-10 1.255Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:2-10 1.524Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:4-10 1.556Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:8-10 1.635Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:16-10 1.849Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:32-10 2.358Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:64-10 3.119Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:1-10 1.255Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:2-10 1.522Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:4-10 1.554Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:8-10 1.635Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:16-10 1.851Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:32-10 2.360Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:64-10 3.122Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:1-10 1.255Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:2-10 1.515Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:4-10 1.547Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:8-10 1.628Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:16-10 1.844Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:32-10 2.352Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:64-10 3.112Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyUTF8/1:16-10 1.890Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyUTF8/16:16-10 1.889Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexAnyUTF8/256:16-10 1.877Ki ± 0% 0.000Ki ± 0% -100.00% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic2-10 984.000 ± 1% 4.000 ± 0% -99.59% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic4-10 987.500 ± 1% 4.000 ± 0% -99.59% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic8-10 975.500 ± 1% 4.000 ± 0% -99.59% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic16-10 971.000 ± 1% 3.000 ± 0% -99.69% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic32-10 963.000 ± 1% 1.000 ± 0% -99.90% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic64-10 967.0 ± 1% 0.0 ± 0% -100.00% (p=0.000 n=10)
IndexByte_Bytes/10-10 0.000 ± 0%
IndexByte_Bytes/32-10 0.000 ± 0%
IndexByte_Bytes/4K-10 0.000 ± 0%
IndexByte_Bytes/4M-10 261.0 ± 1%
IndexByte_Bytes/64M-10 69.35Ki ± 5%
IndexRune_Bytes/10-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRune_Bytes/32-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRune_Bytes/4K-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRune_Bytes/4M-10 226.0 ± 1% 224.0 ± 0% -0.88% (p=0.001 n=10)
IndexRune_Bytes/64M-10 64.47Ki ± 2% 64.75Ki ± 8% ~ (p=1.000 n=10)
IndexRuneASCII_Bytes/10-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/32-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/4K-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/4M-10 260.5 ± 2% 258.0 ± 1% -0.96% (p=0.011 n=10)
IndexRuneASCII_Bytes/64M-10 73.51Ki ± 5% 73.26Ki ± 3% ~ (p=0.896 n=10)
IndexNonASCII_Bytes/10-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/32-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/4K-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/4M-10 258.5 ± 1% 260.0 ± 1% ~ (p=0.343 n=10)
IndexNonASCII_Bytes/64M-10 72.14Ki ± 4% 71.55Ki ± 4% ~ (p=0.305 n=10)
geomean ² ? ³ ² ⁴
¹ all samples are equal
² summaries must be >0 to compute geomean
³ benchmark set differs from baseline; geomeans may not be comparable
⁴ ratios must be >0 to compute geomean
│ regexp.10.txt │ strcase.10.txt │
│ allocs/op │ allocs/op vs base │
IndexRune-10 13.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexRuneLongString-10 13.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexRuneFastPath-10 11.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
Index-10 11.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
EqualFold/ASCII-10 71.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
EqualFold/UnicodePrefix-10 82.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
EqualFold/UnicodeSuffix-10 82.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexHard1-10 14.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexHard2-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexHard3-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexHard4-10 24.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
CountHard1-10 14.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
CountHard2-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
CountHard3-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexTorture-10 255.0 ± 47% 0.0 ± 0% -100.00% (p=0.000 n=10)
CountTorture-10 255.0 ± 47% 0.0 ± 0% -100.00% (p=0.000 n=10)
CountTortureOverlapping-10 3.141k ± 0% 0.000k ± 0% -100.00% (p=0.000 n=10)
CountByte/10-10 10.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
CountByte/32-10 12.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
CountByte/4K-10 202.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
CountByte/4M-10 190.7k ± 0% 0.0k ± 0% -100.00% (p=0.000 n=10)
CountByte/64M-10 3.051M ± 0% 0.000M ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:1-10 16.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:2-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:4-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:8-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:16-10 20.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:32-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/1:64-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:1-10 16.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:2-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:4-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:8-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:16-10 20.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:32-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/16:64-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:1-10 16.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:2-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:4-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:8-10 18.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:16-10 20.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:32-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyASCII/256:64-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyUTF8/1:16-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyUTF8/16:16-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexAnyUTF8/256:16-10 22.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic2-10 12.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic4-10 12.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic8-10 12.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic16-10 12.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic32-10 12.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexPeriodic/IndexPeriodic64-10 12.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10)
IndexByte_Bytes/10-10 0.000 ± 0%
IndexByte_Bytes/32-10 0.000 ± 0%
IndexByte_Bytes/4K-10 0.000 ± 0%
IndexByte_Bytes/4M-10 0.000 ± 0%
IndexByte_Bytes/64M-10 0.000 ± 0%
IndexRune_Bytes/10-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRune_Bytes/32-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRune_Bytes/4K-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRune_Bytes/4M-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRune_Bytes/64M-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/10-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/32-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/4K-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/4M-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexRuneASCII_Bytes/64M-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/10-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/32-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/4K-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/4M-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
IndexNonASCII_Bytes/64M-10 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
geomean ² ? ³ ² ⁴
¹ all samples are equal
² summaries must be >0 to compute geomean
³ benchmark set differs from baseline; geomeans may not be comparable
⁴ ratios must be >0 to compute geomean
```
arm64
```
goos: darwin
goarch: arm64
pkg: github.com/charlievieth/strcase/internal/benchtest
│ stdlib.5.1681417522.txt │ strcase.5.1681417522.txt │
│ sec/op │ sec/op vs base │
IndexRune-10 12.11n ± 1% 11.67n ± 1% -3.59% (p=0.002 n=6)
IndexRuneLongString-10 13.44n ± 1% 13.02n ± 1% -3.12% (p=0.002 n=6)
IndexRuneFastPath-10 2.990n ± 1% 4.776n ± 1% +59.75% (p=0.002 n=6)
Index-10 3.155n ± 0% 4.729n ± 2% +49.87% (p=0.002 n=6)
LastIndex-10 3.511n ± 1% 6.615n ± 1% +88.38% (p=0.002 n=6)
IndexByte-10 2.441n ± 1% 3.572n ± 0% +46.33% (p=0.002 n=6)
EqualFold/ASCII-10 9.619n ± 1% 9.287n ± 0% -3.45% (p=0.002 n=6)
EqualFold/UnicodePrefix-10 80.37n ± 1% 32.03n ± 2% -60.14% (p=0.002 n=6)
EqualFold/UnicodeSuffix-10 73.48n ± 1% 25.54n ± 2% -65.25% (p=0.002 n=6)
IndexHard1-10 326.9µ ± 0% 331.7µ ± 0% +1.47% (p=0.002 n=6)
IndexHard2-10 327.6µ ± 0% 2165.8µ ± 1% +560.99% (p=0.002 n=6)
IndexHard3-10 357.0µ ± 1% 1854.5µ ± 3% +419.51% (p=0.002 n=6)
IndexHard4-10 1.304m ± 0% 1.348m ± 2% +3.35% (p=0.002 n=6)
LastIndexHard1-10 1.305m ± 0% 1.419m ± 1% +8.68% (p=0.002 n=6)
LastIndexHard2-10 1.305m ± 1% 1.420m ± 1% +8.76% (p=0.002 n=6)
LastIndexHard3-10 1.311m ± 4% 1.420m ± 1% +8.36% (p=0.002 n=6)
CountHard1-10 333.0µ ± 2% 335.8µ ± 1% ~ (p=0.485 n=6)
CountHard2-10 331.3µ ± 2% 2166.3µ ± 1% +553.98% (p=0.002 n=6)
CountHard3-10 357.6µ ± 1% 1851.0µ ± 1% +417.59% (p=0.002 n=6)
IndexTorture-10 9.834µ ± 3% 17.747µ ± 1% +80.48% (p=0.002 n=6)
CountTorture-10 10.09µ ± 0% 20.17µ ± 1% +99.81% (p=0.002 n=6)
CountTortureOverlapping-10 68.63µ ± 1% 4048.06µ ± 1% +5798.77% (p=0.002 n=6)
CountByte/10-10 6.731n ± 2% 7.590n ± 1% +12.76% (p=0.002 n=6)
CountByte/32-10 3.164n ± 1% 4.153n ± 1% +31.24% (p=0.002 n=6)
CountByte/4096-10 80.32n ± 0% 100.80n ± 1% +25.50% (p=0.002 n=6)
CountByte/4194304-10 82.84µ ± 2% 95.14µ ± 11% +14.84% (p=0.002 n=6)
CountByte/67108864-10 1.367m ± 2% 1.556m ± 5% +13.84% (p=0.002 n=6)
IndexAnyASCII/1:1-10 4.195n ± 1% 5.742n ± 1% +36.88% (p=0.002 n=6)
IndexAnyASCII/1:2-10 5.436n ± 0% 7.340n ± 1% +35.05% (p=0.002 n=6)
IndexAnyASCII/1:4-10 5.440n ± 0% 7.405n ± 3% +36.13% (p=0.002 n=6)
IndexAnyASCII/1:8-10 5.377n ± 1% 7.428n ± 1% +38.14% (p=0.002 n=6)
IndexAnyASCII/1:16-10 5.362n ± 1% 7.391n ± 0% +37.84% (p=0.002 n=6)
IndexAnyASCII/1:32-10 5.374n ± 0% 7.724n ± 1% +43.72% (p=0.002 n=6)
IndexAnyASCII/1:64-10 5.980n ± 1% 7.985n ± 1% +33.52% (p=0.002 n=6)
IndexAnyASCII/16:1-10 4.046n ± 2% 5.809n ± 2% +43.57% (p=0.002 n=6)
IndexAnyASCII/16:2-10 11.18n ± 1% 13.49n ± 1% +20.62% (p=0.002 n=6)
IndexAnyASCII/16:4-10 12.40n ± 0% 15.47n ± 2% +24.81% (p=0.002 n=6)
IndexAnyASCII/16:8-10 17.21n ± 1% 19.72n ± 3% +14.58% (p=0.002 n=6)
IndexAnyASCII/16:16-10 33.90n ± 0% 34.49n ± 1% +1.74% (p=0.002 n=6)
IndexAnyASCII/16:32-10 66.39n ± 0% 62.72n ± 1% -5.54% (p=0.002 n=6)
IndexAnyASCII/16:64-10 131.5n ± 0% 126.6n ± 2% -3.73% (p=0.002 n=6)
IndexAnyASCII/256:1-10 7.154n ± 0% 8.974n ± 1% +25.44% (p=0.002 n=6)
IndexAnyASCII/256:2-10 149.8n ± 0% 154.9n ± 1% +3.44% (p=0.002 n=6)
IndexAnyASCII/256:4-10 151.5n ± 1% 157.4n ± 1% +3.89% (p=0.002 n=6)
IndexAnyASCII/256:8-10 156.2n ± 0% 162.5n ± 1% +3.97% (p=0.002 n=6)
IndexAnyASCII/256:16-10 166.8n ± 0% 176.4n ± 1% +5.72% (p=0.002 n=6)
IndexAnyASCII/256:32-10 199.6n ± 0% 207.5n ± 1% +3.98% (p=0.002 n=6)
IndexAnyASCII/256:64-10 264.3n ± 0% 271.6n ± 1% +2.76% (p=0.002 n=6)
IndexAnyUTF8/1:1-10 3.105n ± 1% 3.177n ± 1% +2.32% (p=0.002 n=6)
IndexAnyUTF8/1:2-10 5.301n ± 1% 7.312n ± 0% +37.94% (p=0.002 n=6)
IndexAnyUTF8/1:4-10 5.315n ± 1% 7.340n ± 1% +38.10% (p=0.002 n=6)
IndexAnyUTF8/1:8-10 5.312n ± 1% 7.390n ± 1% +39.11% (p=0.002 n=6)
IndexAnyUTF8/1:16-10 5.331n ± 1% 7.913n ± 2% +48.45% (p=0.002 n=6)
IndexAnyUTF8/1:32-10 5.359n ± 0% 7.973n ± 1% +48.78% (p=0.002 n=6)
IndexAnyUTF8/1:64-10 5.998n ± 1% 8.233n ± 1% +37.25% (p=0.002 n=6)
IndexAnyUTF8/16:1-10 13.04n ± 0% 13.83n ± 1% +6.06% (p=0.002 n=6)
IndexAnyUTF8/16:2-10 63.08n ± 0% 35.06n ± 1% -44.42% (p=0.002 n=6)
IndexAnyUTF8/16:4-10 63.39n ± 1% 34.78n ± 0% -45.14% (p=0.002 n=6)
IndexAnyUTF8/16:8-10 63.30n ± 0% 90.81n ± 2% +43.46% (p=0.002 n=6)
IndexAnyUTF8/16:16-10 66.91n ± 2% 97.80n ± 2% +46.16% (p=0.002 n=6)
IndexAnyUTF8/16:32-10 66.80n ± 1% 97.09n ± 2% +45.34% (p=0.002 n=6)
IndexAnyUTF8/16:64-10 75.27n ± 1% 103.00n ± 1% +36.85% (p=0.002 n=6)
IndexAnyUTF8/256:1-10 168.9n ± 0% 179.2n ± 1% +6.10% (p=0.002 n=6)
IndexAnyUTF8/256:2-10 887.1n ± 1% 372.0n ± 1% -58.07% (p=0.002 n=6)
IndexAnyUTF8/256:4-10 892.0n ± 6% 201.2n ± 1% -77.44% (p=0.002 n=6)
IndexAnyUTF8/256:8-10 894.9n ± 0% 404.9n ± 1% -54.75% (p=0.002 n=6)
IndexAnyUTF8/256:16-10 940.5n ± 0% 123.3n ± 0% -86.88% (p=0.002 n=6)
IndexAnyUTF8/256:32-10 942.6n ± 2% 630.1n ± 1% -33.16% (p=0.002 n=6)
IndexAnyUTF8/256:64-10 1063.0n ± 0% 730.6n ± 2% -31.27% (p=0.002 n=6)
LastIndexAnyASCII/1:1-10 4.433n ± 1% 5.865n ± 1% +32.33% (p=0.002 n=6)
LastIndexAnyASCII/1:2-10 4.430n ± 0% 5.872n ± 1% +32.55% (p=0.002 n=6)
LastIndexAnyASCII/1:4-10 4.426n ± 1% 5.865n ± 0% +32.53% (p=0.002 n=6)
LastIndexAnyASCII/1:8-10 4.428n ± 0% 5.885n ± 2% +32.92% (p=0.002 n=6)
LastIndexAnyASCII/1:16-10 4.428n ± 0% 5.972n ± 1% +34.86% (p=0.002 n=6)
LastIndexAnyASCII/1:32-10 4.433n ± 0% 6.282n ± 3% +41.71% (p=0.002 n=6)
LastIndexAnyASCII/1:64-10 5.067n ± 1% 6.316n ± 1% +24.65% (p=0.002 n=6)
LastIndexAnyASCII/16:1-10 10.29n ± 3% 11.59n ± 1% +12.58% (p=0.002 n=6)
LastIndexAnyASCII/16:2-10 10.99n ± 0% 12.59n ± 1% +14.51% (p=0.002 n=6)
LastIndexAnyASCII/16:4-10 12.27n ± 11% 14.53n ± 1% +18.42% (p=0.002 n=6)
LastIndexAnyASCII/16:8-10 17.25n ± 1% 19.10n ± 1% +10.72% (p=0.002 n=6)
LastIndexAnyASCII/16:16-10 33.81n ± 0% 34.14n ± 1% +0.96% (p=0.002 n=6)
LastIndexAnyASCII/16:32-10 66.48n ± 0% 62.01n ± 1% -6.72% (p=0.002 n=6)
LastIndexAnyASCII/16:64-10 131.7n ± 0% 125.8n ± 1% -4.48% (p=0.002 n=6)
LastIndexAnyASCII/256:1-10 147.1n ± 0% 156.8n ± 1% +6.56% (p=0.002 n=6)
LastIndexAnyASCII/256:2-10 146.6n ± 1% 154.8n ± 1% +5.63% (p=0.002 n=6)
LastIndexAnyASCII/256:4-10 149.0n ± 0% 155.4n ± 1% +4.23% (p=0.002 n=6)
LastIndexAnyASCII/256:8-10 153.1n ± 0% 160.4n ± 1% +4.84% (p=0.002 n=6)
LastIndexAnyASCII/256:16-10 165.5n ± 0% 172.4n ± 1% +4.17% (p=0.002 n=6)
LastIndexAnyASCII/256:32-10 197.7n ± 0% 210.4n ± 1% +6.42% (p=0.002 n=6)
LastIndexAnyASCII/256:64-10 263.8n ± 0% 270.8n ± 0% +2.65% (p=0.002 n=6)
LastIndexAnyUTF8/1:1-10 4.398n ± 1% 5.692n ± 0% +29.41% (p=0.002 n=6)
LastIndexAnyUTF8/1:2-10 4.359n ± 1% 5.646n ± 0% +29.52% (p=0.002 n=6)
LastIndexAnyUTF8/1:4-10 4.364n ± 2% 5.668n ± 1% +29.89% (p=0.002 n=6)
LastIndexAnyUTF8/1:8-10 4.362n ± 1% 5.711n ± 0% +30.91% (p=0.002 n=6)
LastIndexAnyUTF8/1:16-10 4.429n ± 0% 6.025n ± 1% +36.05% (p=0.002 n=6)
LastIndexAnyUTF8/1:32-10 4.427n ± 0% 6.024n ± 0% +36.09% (p=0.002 n=6)
LastIndexAnyUTF8/1:64-10 5.060n ± 1% 6.315n ± 1% +24.80% (p=0.002 n=6)
LastIndexAnyUTF8/16:1-10 25.19n ± 1% 27.81n ± 1% +10.42% (p=0.002 n=6)
LastIndexAnyUTF8/16:2-10 74.92n ± 0% 97.78n ± 2% +30.51% (p=0.002 n=6)
LastIndexAnyUTF8/16:4-10 75.02n ± 1% 97.39n ± 1% +29.83% (p=0.002 n=6)
LastIndexAnyUTF8/16:8-10 75.01n ± 0% 97.67n ± 1% +30.21% (p=0.002 n=6)
LastIndexAnyUTF8/16:16-10 80.07n ± 0% 103.55n ± 1% +29.32% (p=0.002 n=6)
LastIndexAnyUTF8/16:32-10 80.05n ± 0% 103.60n ± 1% +29.42% (p=0.002 n=6)
LastIndexAnyUTF8/16:64-10 86.72n ± 0% 108.75n ± 1% +25.40% (p=0.002 n=6)
LastIndexAnyUTF8/256:1-10 553.9n ± 0% 556.2n ± 1% ~ (p=0.102 n=6)
LastIndexAnyUTF8/256:2-10 1.064µ ± 0% 1.393µ ± 1% +30.98% (p=0.002 n=6)
LastIndexAnyUTF8/256:4-10 1.062µ ± 0% 1.392µ ± 1% +31.01% (p=0.002 n=6)
LastIndexAnyUTF8/256:8-10 1.063µ ± 0% 1.388µ ± 1% +30.57% (p=0.002 n=6)
LastIndexAnyUTF8/256:16-10 1.144µ ± 0% 1.478µ ± 1% +29.15% (p=0.002 n=6)
LastIndexAnyUTF8/256:32-10 1.144µ ± 0% 1.483µ ± 1% +29.59% (p=0.002 n=6)
LastIndexAnyUTF8/256:64-10 1.237µ ± 0% 1.565µ ± 1% +26.52% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic2-10 20.49µ ± 0% 62.58µ ± 0% +205.45% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic4-10 20.52µ ± 0% 57.41µ ± 1% +179.79% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic8-10 20.53µ ± 0% 54.92µ ± 0% +167.48% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic16-10 55.62µ ± 1% 64.69µ ± 1% +16.31% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic32-10 27.72µ ± 1% 32.38µ ± 0% +16.80% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic64-10 15.21µ ± 0% 16.76µ ± 1% +10.21% (p=0.002 n=6)
IndexByte_Bytes/10-10 3.075n ± 0% 3.815n ± 0% +24.07% (p=0.002 n=6)
IndexByte_Bytes/32-10 2.844n ± 0% 3.510n ± 1% +23.44% (p=0.002 n=6)
IndexByte_Bytes/4K-10 71.52n ± 2% 80.02n ± 1% +11.90% (p=0.002 n=6)
IndexByte_Bytes/4M-10 62.95µ ± 0% 74.11µ ± 1% +17.72% (p=0.002 n=6)
IndexByte_Bytes/64M-10 1.110m ± 1% 1.211m ± 7% +9.10% (p=0.002 n=6)
IndexRune_Bytes/10-10 10.57n ± 0% 12.46n ± 1% +17.83% (p=0.002 n=6)
IndexRune_Bytes/32-10 11.81n ± 0% 12.42n ± 1% +5.21% (p=0.002 n=6)
IndexRune_Bytes/4K-10 83.05n ± 1% 85.73n ± 1% +3.22% (p=0.002 n=6)
IndexRune_Bytes/4M-10 63.88µ ± 0% 64.70µ ± 0% +1.29% (p=0.002 n=6)
IndexRune_Bytes/64M-10 1.110m ± 0% 1.152m ± 5% +3.83% (p=0.002 n=6)
IndexRuneASCII_Bytes/10-10 3.163n ± 0% 5.428n ± 0% +71.62% (p=0.002 n=6)
IndexRuneASCII_Bytes/32-10 3.166n ± 0% 5.432n ± 1% +71.57% (p=0.002 n=6)
IndexRuneASCII_Bytes/4K-10 71.84n ± 1% 83.24n ± 1% +15.88% (p=0.002 n=6)
IndexRuneASCII_Bytes/4M-10 64.09µ ± 0% 74.33µ ± 0% +15.98% (p=0.002 n=6)
IndexRuneASCII_Bytes/64M-10 1.112m ± 0% 1.245m ± 5% +11.95% (p=0.002 n=6)
IndexNonASCII_Bytes/10-10 4.673n ± 0% 3.018n ± 2% -35.41% (p=0.002 n=6)
IndexNonASCII_Bytes/32-10 11.535n ± 0% 2.872n ± 1% -75.10% (p=0.002 n=6)
IndexNonASCII_Bytes/4K-10 1287.00n ± 1% 79.36n ± 1% -93.83% (p=0.002 n=6)
IndexNonASCII_Bytes/4M-10 1323.89µ ± 0% 74.08µ ± 1% -94.40% (p=0.002 n=6)
IndexNonASCII_Bytes/64M-10 21.442m ± 1% 1.213m ± 3% -94.34% (p=0.002 n=6)
geomean 198.3n 224.5n +13.21%
│ stdlib.5.1681417522.txt │ strcase.5.1681417522.txt │
│ B/s │ B/s vs base │
CountByte/10-10 1.384Gi ± 2% 1.227Gi ± 1% -11.32% (p=0.002 n=6)
CountByte/32-10 9.418Gi ± 1% 7.176Gi ± 1% -23.81% (p=0.002 n=6)
CountByte/4096-10 47.49Gi ± 0% 37.84Gi ± 1% -20.32% (p=0.002 n=6)
CountByte/4194304-10 47.16Gi ± 2% 41.06Gi ± 10% -12.93% (p=0.002 n=6)
CountByte/67108864-10 45.72Gi ± 2% 40.16Gi ± 4% -12.16% (p=0.002 n=6)
IndexByte_Bytes/10-10 3.028Gi ± 0% 2.441Gi ± 0% -19.39% (p=0.002 n=6)
IndexByte_Bytes/32-10 10.479Gi ± 0% 8.490Gi ± 1% -18.98% (p=0.002 n=6)
IndexByte_Bytes/4K-10 53.34Gi ± 2% 47.67Gi ± 1% -10.63% (p=0.002 n=6)
IndexByte_Bytes/4M-10 62.05Gi ± 0% 52.71Gi ± 1% -15.05% (p=0.002 n=6)
IndexByte_Bytes/64M-10 56.32Gi ± 1% 51.62Gi ± 6% -8.34% (p=0.002 n=6)
IndexRune_Bytes/10-10 901.9Mi ± 0% 765.7Mi ± 1% -15.11% (p=0.002 n=6)
IndexRune_Bytes/32-10 2.525Gi ± 0% 2.400Gi ± 1% -4.96% (p=0.002 n=6)
IndexRune_Bytes/4K-10 45.93Gi ± 1% 44.50Gi ± 1% -3.12% (p=0.002 n=6)
IndexRune_Bytes/4M-10 61.15Gi ± 0% 60.37Gi ± 0% -1.27% (p=0.002 n=6)
IndexRune_Bytes/64M-10 56.31Gi ± 0% 54.24Gi ± 5% -3.68% (p=0.002 n=6)
IndexRuneASCII_Bytes/10-10 2.945Gi ± 0% 1.716Gi ± 0% -41.74% (p=0.002 n=6)
IndexRuneASCII_Bytes/32-10 9.413Gi ± 0% 5.486Gi ± 1% -41.72% (p=0.002 n=6)
IndexRuneASCII_Bytes/4K-10 53.10Gi ± 1% 45.83Gi ± 1% -13.70% (p=0.002 n=6)
IndexRuneASCII_Bytes/4M-10 60.95Gi ± 0% 52.55Gi ± 0% -13.78% (p=0.002 n=6)
IndexRuneASCII_Bytes/64M-10 56.21Gi ± 0% 50.22Gi ± 5% -10.67% (p=0.002 n=6)
IndexNonASCII_Bytes/10-10 1.993Gi ± 0% 3.086Gi ± 2% +54.86% (p=0.002 n=6)
IndexNonASCII_Bytes/32-10 2.583Gi ± 0% 10.377Gi ± 1% +301.71% (p=0.002 n=6)
IndexNonASCII_Bytes/4K-10 2.963Gi ± 1% 48.067Gi ± 1% +1521.97% (p=0.002 n=6)
IndexNonASCII_Bytes/4M-10 2.951Gi ± 0% 52.731Gi ± 1% +1687.12% (p=0.002 n=6)
IndexNonASCII_Bytes/64M-10 2.915Gi ± 1% 51.541Gi ± 3% +1668.19% (p=0.002 n=6)
geomean 12.32Gi 16.24Gi +31.83%
```
amd64
```
goos: linux
goarch: amd64
pkg: github.com/charlievieth/strcase/internal/benchtest
cpu: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz
│ stdlib.5.1681426916.txt │ strcase.5.1681426916.txt │
│ sec/op │ sec/op vs base │
IndexRune-8 10.95n ± 1% 12.09n ± 0% +10.41% (p=0.008 n=5)
IndexRuneLongString-8 14.83n ± 0% 13.19n ± 1% -11.06% (p=0.008 n=5)
IndexRuneFastPath-8 3.726n ± 2% 6.431n ± 1% +72.60% (p=0.008 n=5)
Index-8 4.206n ± 2% 6.593n ± 0% +56.75% (p=0.008 n=5)
LastIndex-8 3.621n ± 1% 5.547n ± 0% +53.19% (p=0.008 n=5)
IndexByte-8 2.835n ± 1% 4.564n ± 1% +60.99% (p=0.008 n=5)
EqualFold/ASCII-8 8.269n ± 1% 8.777n ± 1% +6.14% (p=0.008 n=5)
EqualFold/UnicodePrefix-8 84.69n ± 0% 37.79n ± 1% -55.38% (p=0.008 n=5)
EqualFold/UnicodeSuffix-8 75.96n ± 1% 28.75n ± 1% -62.15% (p=0.008 n=5)
IndexHard1-8 79.80µ ± 1% 79.67µ ± 1% ~ (p=0.421 n=5)
IndexHard2-8 111.8µ ± 0% 2217.6µ ± 1% +1883.07% (p=0.008 n=5)
IndexHard3-8 450.1µ ± 1% 2070.0µ ± 1% +359.95% (p=0.008 n=5)
IndexHard4-8 447.3µ ± 0% 1573.6µ ± 0% +251.81% (p=0.008 n=5)
LastIndexHard1-8 1.134m ± 1% 1.580m ± 1% +39.28% (p=0.008 n=5)
LastIndexHard2-8 1.133m ± 0% 1.579m ± 2% +39.38% (p=0.008 n=5)
LastIndexHard3-8 1.130m ± 0% 1.578m ± 1% +39.60% (p=0.008 n=5)
CountHard1-8 79.66µ ± 1% 79.82µ ± 2% ~ (p=0.286 n=5)
CountHard2-8 111.8µ ± 0% 2226.7µ ± 1% +1890.99% (p=0.008 n=5)
CountHard3-8 447.7µ ± 1% 2071.9µ ± 2% +362.77% (p=0.008 n=5)
IndexTorture-8 8.706µ ± 0% 16.883µ ± 1% +93.92% (p=0.008 n=5)
CountTorture-8 8.693µ ± 1% 18.808µ ± 1% +116.36% (p=0.008 n=5)
CountTortureOverlapping-8 66.40µ ± 5% 3721.27µ ± 1% +5504.57% (p=0.008 n=5)
CountByte/10-8 3.587n ± 1% 5.299n ± 1% +47.73% (p=0.008 n=5)
CountByte/32-8 4.848n ± 0% 6.037n ± 0% +24.53% (p=0.008 n=5)
CountByte/4K-8 64.04n ± 0% 70.51n ± 1% +10.10% (p=0.008 n=5)
CountByte/4M-8 84.81µ ± 2% 91.86µ ± 3% +8.31% (p=0.008 n=5)
CountByte/64M-8 2.889m ± 8% 3.093m ± 4% ~ (p=0.056 n=5)
IndexAnyASCII/1:1-8 4.462n ± 1% 6.584n ± 1% +47.56% (p=0.008 n=5)
IndexAnyASCII/1:2-8 5.435n ± 1% 8.856n ± 0% +62.94% (p=0.008 n=5)
IndexAnyASCII/1:4-8 5.415n ± 1% 8.823n ± 0% +62.94% (p=0.008 n=5)
IndexAnyASCII/1:8-8 5.417n ± 1% 8.855n ± 0% +63.47% (p=0.008 n=5)
IndexAnyASCII/1:16-8 5.350n ± 1% 8.147n ± 0% +52.28% (p=0.008 n=5)
IndexAnyASCII/1:32-8 5.912n ± 0% 10.700n ± 21% +80.99% (p=0.008 n=5)
IndexAnyASCII/1:64-8 6.232n ± 1% 9.131n ± 40% +46.52% (p=0.008 n=5)
IndexAnyASCII/16:1-8 4.331n ± 1% 6.431n ± 4% +48.49% (p=0.008 n=5)
IndexAnyASCII/16:2-8 14.35n ± 1% 17.73n ± 4% +23.55% (p=0.008 n=5)
IndexAnyASCII/16:4-8 16.12n ± 0% 18.97n ± 3% +17.68% (p=0.008 n=5)
IndexAnyASCII/16:8-8 20.57n ± 1% 22.62n ± 0% +9.97% (p=0.008 n=5)
IndexAnyASCII/16:16-8 27.11n ± 1% 32.80n ± 1% +20.99% (p=0.008 n=5)
IndexAnyASCII/16:32-8 45.47n ± 0% 57.04n ± 1% +25.45% (p=0.008 n=5)
IndexAnyASCII/16:64-8 72.05n ± 0% 95.18n ± 1% +32.10% (p=0.008 n=5)
IndexAnyASCII/256:1-8 8.445n ± 0% 10.690n ± 0% +26.58% (p=0.008 n=5)
IndexAnyASCII/256:2-8 131.6n ± 0% 134.5n ± 2% +2.20% (p=0.008 n=5)
IndexAnyASCII/256:4-8 134.0n ± 0% 136.9n ± 1% +2.16% (p=0.008 n=5)
IndexAnyASCII/256:8-8 138.4n ± 1% 141.1n ± 0% +1.95% (p=0.008 n=5)
IndexAnyASCII/256:16-8 143.6n ± 0% 152.1n ± 0% +5.92% (p=0.008 n=5)
IndexAnyASCII/256:32-8 160.9n ± 1% 180.4n ± 1% +12.12% (p=0.008 n=5)
IndexAnyASCII/256:64-8 185.8n ± 0% 218.9n ± 1% +17.81% (p=0.008 n=5)
IndexAnyUTF8/1:1-8 3.395n ± 1% 3.643n ± 0% +7.30% (p=0.008 n=5)
IndexAnyUTF8/1:2-8 5.426n ± 0% 8.939n ± 1% +64.74% (p=0.008 n=5)
IndexAnyUTF8/1:4-8 5.400n ± 2% 8.937n ± 1% +65.50% (p=0.008 n=5)
IndexAnyUTF8/1:8-8 5.405n ± 1% 8.906n ± 0% +64.77% (p=0.008 n=5)
IndexAnyUTF8/1:16-8 5.358n ± 1% 8.068n ± 1% +50.58% (p=0.008 n=5)
IndexAnyUTF8/1:32-8 5.900n ± 0% 8.354n ± 1% +41.59% (p=0.008 n=5)
IndexAnyUTF8/1:64-8 6.243n ± 0% 8.850n ± 1% +41.76% (p=0.008 n=5)
IndexAnyUTF8/16:1-8 13.28n ± 2% 13.59n ± 8% ~ (p=0.056 n=5)
IndexAnyUTF8/16:2-8 62.27n ± 0% 33.34n ± 1% -46.46% (p=0.008 n=5)
IndexAnyUTF8/16:4-8 62.27n ± 0% 34.74n ± 1% -44.21% (p=0.008 n=5)
IndexAnyUTF8/16:8-8 62.31n ± 0% 101.40n ± 1% +62.73% (p=0.008 n=5)
IndexAnyUTF8/16:16-8 63.48n ± 0% 97.99n ± 1% +54.36% (p=0.008 n=5)
IndexAnyUTF8/16:32-8 71.60n ± 0% 103.90n ± 1% +45.11% (p=0.008 n=5)
IndexAnyUTF8/16:64-8 76.67n ± 1% 111.30n ± 2% +45.17% (p=0.008 n=5)
IndexAnyUTF8/256:1-8 170.6n ± 0% 170.3n ± 1% ~ (p=0.143 n=5)
IndexAnyUTF8/256:2-8 877.8n ± 1% 354.3n ± 0% -59.64% (p=0.008 n=5)
IndexAnyUTF8/256:4-8 874.7n ± 1% 195.6n ± 1% -77.64% (p=0.008 n=5)
IndexAnyUTF8/256:8-8 876.9n ± 0% 389.7n ± 1% -55.56% (p=0.008 n=5)
IndexAnyUTF8/256:16-8 883.6n ± 0% 121.2n ± 1% -86.28% (p=0.008 n=5)
IndexAnyUTF8/256:32-8 1006.0n ± 0% 641.4n ± 1% -36.24% (p=0.008 n=5)
IndexAnyUTF8/256:64-8 1096.0n ± 0% 757.3n ± 1% -30.90% (p=0.008 n=5)
LastIndexAnyASCII/1:1-8 4.829n ± 1% 7.173n ± 1% +48.54% (p=0.008 n=5)
LastIndexAnyASCII/1:2-8 4.814n ± 1% 7.162n ± 1% +48.77% (p=0.008 n=5)
LastIndexAnyASCII/1:4-8 4.818n ± 1% 7.167n ± 2% +48.75% (p=0.008 n=5)
LastIndexAnyASCII/1:8-8 4.809n ± 1% 7.196n ± 1% +49.64% (p=0.008 n=5)
LastIndexAnyASCII/1:16-8 4.500n ± 0% 6.571n ± 1% +46.02% (p=0.008 n=5)
LastIndexAnyASCII/1:32-8 4.900n ± 1% 6.819n ± 1% +39.16% (p=0.008 n=5)
LastIndexAnyASCII/1:64-8 5.128n ± 1% 7.309n ± 0% +42.53% (p=0.008 n=5)
LastIndexAnyASCII/16:1-8 13.82n ± 1% 16.80n ± 1% +21.56% (p=0.008 n=5)
LastIndexAnyASCII/16:2-8 14.47n ± 1% 16.98n ± 1% +17.35% (p=0.008 n=5)
LastIndexAnyASCII/16:4-8 16.30n ± 0% 18.33n ± 1% +12.45% (p=0.008 n=5)
LastIndexAnyASCII/16:8-8 21.19n ± 1% 21.97n ± 1% +3.68% (p=0.008 n=5)
LastIndexAnyASCII/16:16-8 26.91n ± 0% 33.26n ± 3% +23.60% (p=0.008 n=5)
LastIndexAnyASCII/16:32-8 44.98n ± 0% 55.87n ± 1% +24.21% (p=0.008 n=5)
LastIndexAnyASCII/16:64-8 71.95n ± 0% 93.77n ± 1% +30.33% (p=0.008 n=5)
LastIndexAnyASCII/256:1-8 130.9n ± 1% 132.5n ± 1% +1.22% (p=0.008 n=5)
LastIndexAnyASCII/256:2-8 131.8n ± 1% 133.2n ± 1% +1.06% (p=0.008 n=5)
LastIndexAnyASCII/256:4-8 134.1n ± 0% 135.6n ± 1% +1.12% (p=0.008 n=5)
LastIndexAnyASCII/256:8-8 137.8n ± 1% 139.5n ± 1% +1.23% (p=0.008 n=5)
LastIndexAnyASCII/256:16-8 143.3n ± 0% 150.2n ± 1% +4.82% (p=0.008 n=5)
LastIndexAnyASCII/256:32-8 160.1n ± 0% 178.6n ± 1% +11.56% (p=0.008 n=5)
LastIndexAnyASCII/256:64-8 185.3n ± 1% 217.3n ± 1% +17.27% (p=0.008 n=5)
LastIndexAnyUTF8/1:1-8 4.841n ± 0% 7.195n ± 1% +48.63% (p=0.008 n=5)
LastIndexAnyUTF8/1:2-8 4.842n ± 1% 7.172n ± 0% +48.12% (p=0.008 n=5)
LastIndexAnyUTF8/1:4-8 4.840n ± 0% 7.161n ± 1% +47.95% (p=0.008 n=5)
LastIndexAnyUTF8/1:8-8 4.831n ± 0% 7.157n ± 0% +48.15% (p=0.008 n=5)
LastIndexAnyUTF8/1:16-8 4.485n ± 0% 6.563n ± 1% +46.33% (p=0.008 n=5)
LastIndexAnyUTF8/1:32-8 4.896n ± 0% 6.817n ± 1% +39.24% (p=0.008 n=5)
LastIndexAnyUTF8/1:64-8 5.145n ± 0% 7.308n ± 1% +42.04% (p=0.008 n=5)
LastIndexAnyUTF8/16:1-8 30.13n ± 1% 27.98n ± 2% -7.14% (p=0.008 n=5)
LastIndexAnyUTF8/16:2-8 80.13n ± 0% 111.70n ± 1% +39.40% (p=0.008 n=5)
LastIndexAnyUTF8/16:4-8 80.12n ± 0% 112.30n ± 1% +40.16% (p=0.008 n=5)
LastIndexAnyUTF8/16:8-8 80.21n ± 0% 111.60n ± 0% +39.13% (p=0.008 n=5)
LastIndexAnyUTF8/16:16-8 81.12n ± 0% 109.20n ± 1% +34.62% (p=0.008 n=5)
LastIndexAnyUTF8/16:32-8 89.54n ± 0% 119.00n ± 1% +32.90% (p=0.008 n=5)
LastIndexAnyUTF8/16:64-8 92.18n ± 1% 130.20n ± 1% +41.25% (p=0.008 n=5)
LastIndexAnyUTF8/256:1-8 443.5n ± 1% 391.9n ± 1% -11.63% (p=0.008 n=5)
LastIndexAnyUTF8/256:2-8 1.130µ ± 0% 1.591µ ± 2% +40.80% (p=0.008 n=5)
LastIndexAnyUTF8/256:4-8 1.130µ ± 1% 1.593µ ± 1% +40.97% (p=0.008 n=5)
LastIndexAnyUTF8/256:8-8 1.129µ ± 1% 1.590µ ± 1% +40.83% (p=0.008 n=5)
LastIndexAnyUTF8/256:16-8 1.156µ ± 0% 1.582µ ± 2% +36.85% (p=0.008 n=5)
LastIndexAnyUTF8/256:32-8 1.285µ ± 1% 1.749µ ± 1% +36.11% (p=0.008 n=5)
LastIndexAnyUTF8/256:64-8 1.331µ ± 1% 1.910µ ± 1% +43.50% (p=0.008 n=5)
IndexPeriodic/IndexPeriodic2-8 5.042µ ± 0% 56.941µ ± 1% +1029.33% (p=0.008 n=5)
IndexPeriodic/IndexPeriodic4-8 5.041µ ± 1% 55.882µ ± 0% +1008.55% (p=0.008 n=5)
IndexPeriodic/IndexPeriodic8-8 58.03µ ± 1% 91.47µ ± 1% +57.62% (p=0.008 n=5)
IndexPeriodic/IndexPeriodic16-8 28.46µ ± 4% 45.73µ ± 0% +60.67% (p=0.008 n=5)
IndexPeriodic/IndexPeriodic32-8 14.74µ ± 4% 22.99µ ± 2% +56.05% (p=0.008 n=5)
IndexPeriodic/IndexPeriodic64-8 8.678µ ± 9% 12.441µ ± 4% +43.36% (p=0.008 n=5)
IndexByte_Bytes/10-8 3.037n ± 0% 3.935n ± 1% +29.57% (p=0.008 n=5)
IndexByte_Bytes/32-8 3.851n ± 1% 4.669n ± 0% +21.24% (p=0.008 n=5)
IndexByte_Bytes/4K-8 61.10n ± 0% 75.10n ± 1% +22.91% (p=0.008 n=5)
IndexByte_Bytes/4M-8 89.35µ ± 1% 95.83µ ± 4% +7.25% (p=0.008 n=5)
IndexByte_Bytes/64M-8 2.855m ± 10% 3.024m ± 6% ~ (p=0.151 n=5)
IndexRune_Bytes/10-8 10.57n ± 1% 12.59n ± 0% +19.11% (p=0.008 n=5)
IndexRune_Bytes/32-8 11.88n ± 1% 13.36n ± 1% +12.46% (p=0.008 n=5)
IndexRune_Bytes/4K-8 81.27n ± 0% 80.24n ± 1% -1.27% (p=0.008 n=5)
IndexRune_Bytes/4M-8 102.29µ ± 2% 99.42µ ± 3% ~ (p=0.310 n=5)
IndexRune_Bytes/64M-8 3.016m ± 2% 3.004m ± 3% ~ (p=0.421 n=5)
IndexRuneASCII_Bytes/10-8 3.177n ± 0% 6.011n ± 1% +89.20% (p=0.008 n=5)
IndexRuneASCII_Bytes/32-8 3.882n ± 1% 6.901n ± 1% +77.77% (p=0.008 n=5)
IndexRuneASCII_Bytes/4K-8 61.08n ± 0% 74.61n ± 0% +22.15% (p=0.008 n=5)
IndexRuneASCII_Bytes/4M-8 92.13µ ± 5% 97.13µ ± 2% +5.43% (p=0.008 n=5)
IndexRuneASCII_Bytes/64M-8 2.873m ± 2% 3.142m ± 7% +9.35% (p=0.032 n=5)
IndexNonASCII_Bytes/10-8 3.401n ± 0% 2.988n ± 1% -12.14% (p=0.008 n=5)
IndexNonASCII_Bytes/32-8 8.846n ± 1% 3.620n ± 1% -59.08% (p=0.008 n=5)
IndexNonASCII_Bytes/4K-8 895.00n ± 1% 71.40n ± 1% -92.02% (p=0.008 n=5)
IndexNonASCII_Bytes/4M-8 908.49µ ± 2% 94.63µ ± 4% -89.58% (p=0.008 n=5)
IndexNonASCII_Bytes/64M-8 15.038m ± 3% 3.094m ± 7% -79.43% (p=0.008 n=5)
geomean 188.6n 239.4n +26.96%
│ stdlib.5.1681426916.txt │ strcase.5.1681426916.txt │
│ B/s │ B/s vs base │
CountByte/10-8 2.596Gi ± 1% 1.757Gi ± 1% -32.31% (p=0.008 n=5)
CountByte/32-8 6.148Gi ± 0% 4.937Gi ± 0% -19.69% (p=0.008 n=5)
CountByte/4K-8 59.56Gi ± 0% 54.10Gi ± 1% -9.18% (p=0.008 n=5)
CountByte/4M-8 46.06Gi ± 2% 42.52Gi ± 3% -7.67% (p=0.008 n=5)
CountByte/64M-8 21.63Gi ± 8% 20.20Gi ± 4% ~ (p=0.056 n=5)
IndexByte_Bytes/10-8 3.066Gi ± 0% 2.367Gi ± 1% -22.81% (p=0.008 n=5)
IndexByte_Bytes/32-8 7.739Gi ± 1% 6.384Gi ± 0% -17.51% (p=0.008 n=5)
IndexByte_Bytes/4K-8 62.44Gi ± 0% 50.79Gi ± 1% -18.65% (p=0.008 n=5)
IndexByte_Bytes/4M-8 43.72Gi ± 1% 40.76Gi ± 3% -6.76% (p=0.008 n=5)
IndexByte_Bytes/64M-8 21.89Gi ± 9% 20.67Gi ± 6% ~ (p=0.151 n=5)
IndexRune_Bytes/10-8 902.2Mi ± 1% 757.4Mi ± 0% -16.05% (p=0.008 n=5)
IndexRune_Bytes/32-8 2.509Gi ± 1% 2.230Gi ± 1% -11.11% (p=0.008 n=5)
IndexRune_Bytes/4K-8 46.94Gi ± 0% 47.54Gi ± 1% +1.28% (p=0.008 n=5)
IndexRune_Bytes/4M-8 38.19Gi ± 2% 39.29Gi ± 3% ~ (p=0.310 n=5)
IndexRune_Bytes/64M-8 20.72Gi ± 2% 20.81Gi ± 3% ~ (p=0.421 n=5)
IndexRuneASCII_Bytes/10-8 2.931Gi ± 0% 1.549Gi ± 1% -47.14% (p=0.008 n=5)
IndexRuneASCII_Bytes/32-8 7.677Gi ± 1% 4.319Gi ± 1% -43.74% (p=0.008 n=5)
IndexRuneASCII_Bytes/4K-8 62.45Gi ± 0% 51.13Gi ± 0% -18.13% (p=0.008 n=5)
IndexRuneASCII_Bytes/4M-8 42.40Gi ± 5% 40.22Gi ± 2% -5.15% (p=0.008 n=5)
IndexRuneASCII_Bytes/64M-8 21.75Gi ± 2% 19.89Gi ± 8% -8.55% (p=0.032 n=5)
IndexNonASCII_Bytes/10-8 2.738Gi ± 0% 3.117Gi ± 1% +13.84% (p=0.008 n=5)
IndexNonASCII_Bytes/32-8 3.369Gi ± 1% 8.232Gi ± 1% +144.33% (p=0.008 n=5)
IndexNonASCII_Bytes/4K-8 4.262Gi ± 1% 53.429Gi ± 1% +1153.52% (p=0.008 n=5)
IndexNonASCII_Bytes/4M-8 4.300Gi ± 2% 41.278Gi ± 4% +860.01% (p=0.008 n=5)
IndexNonASCII_Bytes/64M-8 4.156Gi ± 3% 20.200Gi ± 7% +386.03% (p=0.008 n=5)
geomean 10.97Gi 12.85Gi +17.13%
```
arm (pi)
```
goos: linux
goarch: arm
pkg: github.com/charlievieth/strcase/internal/benchtest
│ stdlib.5.1681426807.txt │ strcase.5.1681426807.txt │
│ sec/op │ sec/op vs base │
IndexRune-4 120.0n ± 1% 112.3n ± 3% -6.46% (p=0.002 n=6)
IndexRuneLongString-4 298.4n ± 1% 286.7n ± 1% -3.94% (p=0.002 n=6)
IndexRuneFastPath-4 78.38n ± 18% 69.51n ± 3% ~ (p=0.180 n=6)
Index-4 77.23n ± 30% 71.47n ± 1% ~ (p=0.589 n=6)
LastIndex-4 22.52n ± 3% 34.44n ± 10% +52.96% (p=0.002 n=6)
IndexByte-4 49.02n ± 9% 62.13n ± 1% +26.76% (p=0.002 n=6)
EqualFold/ASCII-4 64.32n ± 1% 69.51n ± 1% +8.07% (p=0.002 n=6)
EqualFold/UnicodePrefix-4 636.3n ± 0% 234.8n ± 0% -63.09% (p=0.002 n=6)
EqualFold/UnicodeSuffix-4 585.9n ± 0% 190.6n ± 0% -67.47% (p=0.002 n=6)
IndexHard1-4 5.684m ± 1% 5.674m ± 0% -0.16% (p=0.015 n=6)
IndexHard2-4 5.715m ± 0% 9.439m ± 0% +65.15% (p=0.002 n=6)
IndexHard3-4 5.705m ± 0% 8.681m ± 2% +52.16% (p=0.002 n=6)
IndexHard4-4 5.726m ± 3% 9.271m ± 0% +61.92% (p=0.002 n=6)
LastIndexHard1-4 4.631m ± 1% 10.070m ± 1% +117.46% (p=0.002 n=6)
LastIndexHard2-4 4.667m ± 3% 10.073m ± 1% +115.86% (p=0.002 n=6)
LastIndexHard3-4 4.634m ± 3% 10.115m ± 0% +118.27% (p=0.002 n=6)
CountHard1-4 5.680m ± 0% 5.681m ± 4% ~ (p=0.699 n=6)
CountHard2-4 5.698m ± 0% 9.433m ± 0% +65.54% (p=0.002 n=6)
CountHard3-4 5.856m ± 3% 8.690m ± 5% +48.39% (p=0.002 n=6)
IndexTorture-4 43.41µ ± 1% 116.26µ ± 0% +167.81% (p=0.002 n=6)
CountTorture-4 43.44µ ± 0% 126.59µ ± 0% +191.43% (p=0.002 n=6)
CountTortureOverlapping-4 1.197m ± 1% 28.433m ± 1% +2275.73% (p=0.002 n=6)
CountByte/10-4 41.48n ± 3% 45.49n ± 3% +9.65% (p=0.002 n=6)
CountByte/32-4 70.84n ± 0% 121.95n ± 3% +72.14% (p=0.002 n=6)
CountByte/4K-4 5.543µ ± 3% 14.107µ ± 1% +154.52% (p=0.002 n=6)
CountByte/4M-4 5.782m ± 3% 14.391m ± 9% +148.87% (p=0.002 n=6)
CountByte/64M-4 125.8m ± 1% 287.1m ± 9% +128.16% (p=0.002 n=6)
IndexAnyASCII/1:1-4 68.25n ± 3% 108.35n ± 1% +58.77% (p=0.002 n=6)
IndexAnyASCII/1:2-4 57.10n ± 3% 98.97n ± 1% +73.33% (p=0.002 n=6)
IndexAnyASCII/1:4-4 60.79n ± 2% 103.20n ± 2% +69.76% (p=0.002 n=6)
IndexAnyASCII/1:8-4 65.47n ± 2% 108.40n ± 1% +65.57% (p=0.002 n=6)
IndexAnyASCII/1:16-4 92.55n ± 13% 132.75n ± 11% +43.44% (p=0.002 n=6)
IndexAnyASCII/1:32-4 114.8n ± 2% 161.9n ± 2% +41.03% (p=0.002 n=6)
IndexAnyASCII/1:64-4 167.5n ± 1% 212.1n ± 1% +26.66% (p=0.002 n=6)
IndexAnyASCII/16:1-4 71.73n ± 2% 112.80n ± 5% +57.25% (p=0.002 n=6)
IndexAnyASCII/16:2-4 101.6n ± 0% 132.7n ± 1% +30.55% (p=0.002 n=6)
IndexAnyASCII/16:4-4 110.0n ± 3% 146.6n ± 0% +33.27% (p=0.002 n=6)
IndexAnyASCII/16:8-4 128.2n ± 3% 171.8n ± 1% +34.01% (p=0.002 n=6)
IndexAnyASCII/16:16-4 165.4n ± 2% 246.4n ± 2% +48.97% (p=0.002 n=6)
IndexAnyASCII/16:32-4 259.4n ± 0% 450.6n ± 0% +73.69% (p=0.002 n=6)
IndexAnyASCII/16:64-4 411.8n ± 0% 752.1n ± 0% +82.64% (p=0.002 n=6)
IndexAnyASCII/256:1-4 473.2n ± 0% 516.0n ± 0% +9.06% (p=0.002 n=6)
IndexAnyASCII/256:2-4 917.6n ± 0% 948.1n ± 0% +3.32% (p=0.002 n=6)
IndexAnyASCII/256:4-4 924.1n ± 3% 960.1n ± 3% +3.89% (p=0.002 n=6)
IndexAnyASCII/256:8-4 942.3n ± 0% 985.9n ± 0% +4.62% (p=0.002 n=6)
IndexAnyASCII/256:16-4 982.3n ± 3% 1059.0n ± 1% +7.81% (p=0.002 n=6)
IndexAnyASCII/256:32-4 1.075µ ± 1% 1.777µ ± 3% +65.30% (p=0.002 n=6)
IndexAnyASCII/256:64-4 1.226µ ± 0% 2.076µ ± 0% +69.40% (p=0.002 n=6)
IndexAnyUTF8/1:1-4 21.38n ± 0% 18.42n ± 1% -13.87% (p=0.002 n=6)
IndexAnyUTF8/1:2-4 58.02n ± 5% 99.98n ± 1% +72.32% (p=0.002 n=6)
IndexAnyUTF8/1:4-4 60.71n ± 3% 102.95n ± 1% +69.58% (p=0.002 n=6)
IndexAnyUTF8/1:8-4 65.74n ± 3% 107.45n ± 1% +63.43% (p=0.002 n=6)
IndexAnyUTF8/1:16-4 81.01n ± 6% 122.05n ± 12% +50.66% (p=0.002 n=6)
IndexAnyUTF8/1:32-4 115.2n ± 1% 160.8n ± 1% +39.57% (p=0.002 n=6)
IndexAnyUTF8/1:64-4 167.2n ± 1% 212.3n ± 2% +27.04% (p=0.002 n=6)
IndexAnyUTF8/16:1-4 75.35n ± 13% 80.66n ± 13% ~ (p=0.310 n=6)
IndexAnyUTF8/16:2-4 571.6n ± 8% 243.7n ± 2% -57.36% (p=0.002 n=6)
IndexAnyUTF8/16:4-4 655.2n ± 6% 274.2n ± 1% -58.15% (p=0.002 n=6)
IndexAnyUTF8/16:8-4 746.5n ± 3% 1418.5n ± 2% +90.02% (p=0.002 n=6)
IndexAnyUTF8/16:16-4 922.1n ± 0% 1599.0n ± 11% +73.41% (p=0.002 n=6)
IndexAnyUTF8/16:32-4 1.570µ ± 2% 2.267µ ± 1% +44.36% (p=0.002 n=6)
IndexAnyUTF8/16:64-4 2.404µ ± 1% 3.065µ ± 1% +27.50% (p=0.002 n=6)
IndexAnyUTF8/256:1-4 882.8n ± 0% 879.2n ± 0% -0.40% (p=0.002 n=6)
IndexAnyUTF8/256:2-4 8.575µ ± 6% 1.865µ ± 1% -78.25% (p=0.002 n=6)
IndexAnyUTF8/256:4-4 9.643µ ± 5% 1.486µ ± 0% -84.59% (p=0.002 n=6)
IndexAnyUTF8/256:8-4 11.164µ ± 4% 2.926µ ± 0% -73.80% (p=0.002 n=6)
IndexAnyUTF8/256:16-4 13.915µ ± 0% 4.702µ ± 0% -66.21% (p=0.002 n=6)
IndexAnyUTF8/256:32-4 24.39µ ± 2% 14.45µ ± 3% -40.74% (p=0.002 n=6)
IndexAnyUTF8/256:64-4 37.62µ ± 1% 27.55µ ± 3% -26.78% (p=0.002 n=6)
LastIndexAnyASCII/1:1-4 69.11n ± 2% 111.15n ± 3% +60.83% (p=0.002 n=6)
LastIndexAnyASCII/1:2-4 53.51n ± 3% 94.23n ± 0% +76.10% (p=0.002 n=6)
LastIndexAnyASCII/1:4-4 56.18n ± 3% 97.55n ± 3% +73.63% (p=0.002 n=6)
LastIndexAnyASCII/1:8-4 60.98n ± 1% 102.20n ± 0% +67.58% (p=0.002 n=6)
LastIndexAnyASCII/1:16-4 72.90n ± 3% 112.95n ± 0% +54.94% (p=0.002 n=6)
LastIndexAnyASCII/1:32-4 111.6n ± 2% 153.7n ± 2% +37.72% (p=0.002 n=6)
LastIndexAnyASCII/1:64-4 163.2n ± 1% 201.8n ± 2% +23.62% (p=0.002 n=6)
LastIndexAnyASCII/16:1-4 113.8n ± 3% 142.8n ± 1% +25.53% (p=0.002 n=6)
LastIndexAnyASCII/16:2-4 119.7n ± 0% 152.5n ± 3% +27.36% (p=0.002 n=6)
LastIndexAnyASCII/16:4-4 129.2n ± 1% 165.3n ± 1% +27.95% (p=0.002 n=6)
LastIndexAnyASCII/16:8-4 151.5n ± 0% 192.8n ± 2% +27.29% (p=0.002 n=6)
LastIndexAnyASCII/16:16-4 187.7n ± 0% 265.7n ± 2% +41.56% (p=0.002 n=6)
LastIndexAnyASCII/16:32-4 278.2n ± 0% 474.2n ± 1% +70.47% (p=0.002 n=6)
LastIndexAnyASCII/16:64-4 424.4n ± 1% 775.4n ± 1% +82.70% (p=0.002 n=6)
LastIndexAnyASCII/256:1-4 996.0n ± 0% 1119.5n ± 8% +12.39% (p=0.002 n=6)
LastIndexAnyASCII/256:2-4 1.003µ ± 1% 1.041µ ± 2% +3.79% (p=0.002 n=6)
LastIndexAnyASCII/256:4-4 1.014µ ± 0% 1.049µ ± 2% +3.45% (p=0.002 n=6)
LastIndexAnyASCII/256:8-4 1.033µ ± 1% 1.073µ ± 0% +3.87% (p=0.002 n=6)
LastIndexAnyASCII/256:16-4 1.069µ ± 0% 1.150µ ± 0% +7.63% (p=0.002 n=6)
LastIndexAnyASCII/256:32-4 1.159µ ± 0% 1.871µ ± 3% +61.39% (p=0.002 n=6)
LastIndexAnyASCII/256:64-4 1.310µ ± 1% 2.174µ ± 2% +65.85% (p=0.002 n=6)
LastIndexAnyUTF8/1:1-4 69.47n ± 2% 110.90n ± 1% +59.64% (p=0.002 n=6)
LastIndexAnyUTF8/1:2-4 53.42n ± 0% 94.05n ± 2% +76.07% (p=0.002 n=6)
LastIndexAnyUTF8/1:4-4 55.72n ± 4% 96.50n ± 1% +73.19% (p=0.002 n=6)
LastIndexAnyUTF8/1:8-4 61.43n ± 2% 102.30n ± 1% +66.54% (p=0.002 n=6)
LastIndexAnyUTF8/1:16-4 72.81n ± 0% 113.95n ± 6% +56.50% (p=0.002 n=6)
LastIndexAnyUTF8/1:32-4 111.6n ± 0% 155.5n ± 3% +39.44% (p=0.002 n=6)
LastIndexAnyUTF8/1:64-4 163.5n ± 1% 203.1n ± 2% +24.18% (p=0.002 n=6)
LastIndexAnyUTF8/16:1-4 212.7n ± 0% 246.6n ± 8% +15.96% (p=0.002 n=6)
LastIndexAnyUTF8/16:2-4 685.7n ± 3% 1366.5n ± 6% +99.29% (p=0.002 n=6)
LastIndexAnyUTF8/16:4-4 728.8n ± 2% 1431.0n ± 2% +96.36% (p=0.002 n=6)
LastIndexAnyUTF8/16:8-4 813.9n ± 2% 1504.5n ± 4% +84.86% (p=0.002 n=6)
LastIndexAnyUTF8/16:16-4 1.192µ ± 7% 1.734µ ± 2% +45.47% (p=0.002 n=6)
LastIndexAnyUTF8/16:32-4 1.669µ ± 2% 2.391µ ± 3% +43.26% (p=0.002 n=6)
LastIndexAnyUTF8/16:64-4 2.491µ ± 2% 3.198µ ± 1% +28.38% (p=0.002 n=6)
LastIndexAnyUTF8/256:1-4 2.526µ ± 0% 2.593µ ± 1% +2.63% (p=0.002 n=6)
LastIndexAnyUTF8/256:2-4 10.14µ ± 4% 20.74µ ± 2% +104.44% (p=0.002 n=6)
LastIndexAnyUTF8/256:4-4 10.84µ ± 1% 21.42µ ± 1% +97.56% (p=0.002 n=6)
LastIndexAnyUTF8/256:8-4 12.21µ ± 3% 22.76µ ± 5% +86.46% (p=0.002 n=6)
LastIndexAnyUTF8/256:16-4 16.35µ ± 19% 25.97µ ± 7% +58.83% (p=0.002 n=6)
LastIndexAnyUTF8/256:32-4 25.82µ ± 1% 38.08µ ± 10% +47.51% (p=0.002 n=6)
LastIndexAnyUTF8/256:64-4 39.09µ ± 2% 50.23µ ± 9% +28.50% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic2-4 351.4µ ± 0% 336.9µ ± 16% ~ (p=0.394 n=6)
IndexPeriodic/IndexPeriodic4-4 351.4µ ± 1% 336.8µ ± 13% ~ (p=0.065 n=6)
IndexPeriodic/IndexPeriodic8-4 351.2µ ± 1% 492.1µ ± 0% +40.13% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic16-4 167.9µ ± 0% 334.8µ ± 1% +99.44% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic32-4 166.1µ ± 1% 291.5µ ± 1% +75.51% (p=0.002 n=6)
IndexPeriodic/IndexPeriodic64-4 132.6µ ± 0% 234.8µ ± 3% +77.02% (p=0.002 n=6)
IndexByte_Bytes/10-4 40.12n ± 3% 43.35n ± 3% +8.06% (p=0.002 n=6)
IndexByte_Bytes/32-4 89.12n ± 2% 117.65n ± 2% +32.01% (p=0.002 n=6)
IndexByte_Bytes/4K-4 6.342µ ± 5% 11.323µ ± 4% +78.54% (p=0.002 n=6)
IndexByte_Bytes/4M-4 6.742m ± 1% 11.580m ± 7% +71.75% (p=0.002 n=6)
IndexByte_Bytes/64M-4 126.9m ± 2% 212.5m ± 4% +67.49% (p=0.002 n=6)
IndexRune_Bytes/10-4 110.8n ± 1% 121.7n ± 2% +9.84% (p=0.002 n=6)
IndexRune_Bytes/32-4 159.9n ± 2% 171.5n ± 4% +7.26% (p=0.002 n=6)
IndexRune_Bytes/4K-4 6.685µ ± 1% 6.764µ ± 6% +1.19% (p=0.004 n=6)
IndexRune_Bytes/4M-4 6.760m ± 0% 6.806m ± 1% ~ (p=0.065 n=6)
IndexRune_Bytes/64M-4 128.1m ± 2% 130.6m ± 11% ~ (p=0.589 n=6)
IndexRuneASCII_Bytes/10-4 43.45n ± 1% 57.01n ± 7% +31.21% (p=0.002 n=6)
IndexRuneASCII_Bytes/32-4 92.28n ± 6% 130.85n ± 8% +41.79% (p=0.002 n=6)
IndexRuneASCII_Bytes/4K-4 6.613µ ± 0% 11.271µ ± 2% +70.45% (p=0.002 n=6)
IndexRuneASCII_Bytes/4M-4 6.751m ± 0% 11.502m ± 2% +70.38% (p=0.002 n=6)
IndexRuneASCII_Bytes/64M-4 129.2m ± 55% 208.2m ± 54% +61.16% (p=0.002 n=6)
IndexNonASCII_Bytes/10-4 24.71n ± 3% 26.28n ± 5% +6.35% (p=0.002 n=6)
IndexNonASCII_Bytes/32-4 78.75n ± 4% 75.23n ± 2% -4.47% (p=0.009 n=6)
IndexNonASCII_Bytes/4K-4 8.235µ ± 0% 8.874µ ± 7% +7.77% (p=0.002 n=6)
IndexNonASCII_Bytes/4M-4 8.449m ± 3% 9.721m ± 3% +15.05% (p=0.002 n=6)
IndexNonASCII_Bytes/64M-4 154.2m ± 2% 170.5m ± 15% +10.58% (p=0.002 n=6)
geomean 2.636µ 3.464µ +31.41%
│ stdlib.5.1681426807.txt │ strcase.5.1681426807.txt │
│ B/s │ B/s vs base │
CountByte/10-4 229.9Mi ± 3% 209.7Mi ± 3% -8.80% (p=0.002 n=6)
CountByte/32-4 430.8Mi ± 0% 250.2Mi ± 3% -41.91% (p=0.002 n=6)
CountByte/4K-4 704.7Mi ± 3% 276.9Mi ± 1% -60.71% (p=0.002 n=6)
CountByte/4M-4 691.8Mi ± 3% 278.0Mi ± 10% -59.82% (p=0.002 n=6)
CountByte/64M-4 508.7Mi ± 1% 222.9Mi ± 10% -56.17% (p=0.002 n=6)
IndexByte_Bytes/10-4 237.7Mi ± 3% 220.0Mi ± 3% -7.47% (p=0.002 n=6)
IndexByte_Bytes/32-4 342.5Mi ± 2% 259.4Mi ± 2% -24.26% (p=0.002 n=6)
IndexByte_Bytes/4K-4 616.9Mi ± 4% 345.0Mi ± 4% -44.08% (p=0.002 n=6)
IndexByte_Bytes/4M-4 593.3Mi ± 1% 345.4Mi ± 7% -41.78% (p=0.002 n=6)
IndexByte_Bytes/64M-4 504.5Mi ± 2% 301.2Mi ± 4% -40.29% (p=0.002 n=6)
IndexRune_Bytes/10-4 86.10Mi ± 1% 78.39Mi ± 2% -8.96% (p=0.002 n=6)
IndexRune_Bytes/32-4 191.0Mi ± 2% 178.0Mi ± 4% -6.77% (p=0.002 n=6)
IndexRune_Bytes/4K-4 584.4Mi ± 1% 577.5Mi ± 5% -1.17% (p=0.004 n=6)
IndexRune_Bytes/4M-4 591.7Mi ± 0% 587.8Mi ± 1% ~ (p=0.065 n=6)
IndexRune_Bytes/64M-4 499.6Mi ± 2% 490.2Mi ± 10% ~ (p=0.589 n=6)
IndexRuneASCII_Bytes/10-4 219.5Mi ± 1% 167.3Mi ± 7% -23.79% (p=0.002 n=6)
IndexRuneASCII_Bytes/32-4 330.7Mi ± 6% 233.2Mi ± 7% -29.47% (p=0.002 n=6)
IndexRuneASCII_Bytes/4K-4 590.8Mi ± 0% 346.6Mi ± 2% -41.33% (p=0.002 n=6)
IndexRuneASCII_Bytes/4M-4 592.5Mi ± 0% 347.8Mi ± 2% -41.30% (p=0.002 n=6)
IndexRuneASCII_Bytes/64M-4 495.4Mi ± 35% 307.4Mi ± 35% -37.96% (p=0.002 n=6)
IndexNonASCII_Bytes/10-4 385.9Mi ± 3% 362.8Mi ± 5% -5.99% (p=0.002 n=6)
IndexNonASCII_Bytes/32-4 387.5Mi ± 4% 405.7Mi ± 2% +4.68% (p=0.009 n=6)
IndexNonASCII_Bytes/4K-4 474.4Mi ± 0% 440.2Mi ± 7% -7.21% (p=0.002 n=6)
IndexNonASCII_Bytes/4M-4 473.4Mi ± 3% 411.5Mi ± 3% -13.08% (p=0.002 n=6)
IndexNonASCII_Bytes/64M-4 415.1Mi ± 2% 375.5Mi ± 13% -9.54% (p=0.002 n=6)
geomean 407.9Mi 296.3Mi -27.37%
```
helloworld") } func BenchmarkLastIndexHard1(b *testing.B) { benchmarkLastIndexHard(b, "<>") } func BenchmarkLastIndexHard2(b *testing.B) { benchmarkLastIndexHard(b, "") } func BenchmarkLastIndexHard3(b *testing.B) { benchmarkLastIndexHard(b, "hello world") } func BenchmarkCountHard1(b *testing.B) { benchmarkCountHard(b, "<>") } func BenchmarkCountHard2(b *testing.B) { benchmarkCountHard(b, "") } func BenchmarkCountHard3(b *testing.B) { benchmarkCountHard(b, "hello world") } var benchInputTorture = strings.Repeat("ABC", 1<<10) + "123" + strings.Repeat("ABC", 1<<10) var benchNeedleTorture = strings.Repeat("ABC", 1<<10+1) func BenchmarkIndexTorture(b *testing.B) { benchIndex(b, benchInputTorture, benchNeedleTorture) } func BenchmarkCountTorture(b *testing.B) { benchCount(b, benchInputTorture, benchNeedleTorture) } func BenchmarkCountTortureOverlapping(b *testing.B) { A := strings.Repeat("ABC", 1<<20) B := strings.Repeat("ABC", 1<<10) benchCount(b, A, B) } // NB: we count "a" instead of "=" here, which differs from the stdlib // but is a more accurate benchmark since for non-Alpha ASCII chars we // use strings.Count. func BenchmarkCountByte(b *testing.B) { if strcase.Count(benchmarkString, "a") != 1 { b.Fatalf("strcase.Count(%q, %q) != 1", benchmarkString, "a") } indexSizes := []int{10, 32, 4 << 10, 4 << 20, 64 << 20} benchStr := strings.Repeat(benchmarkString, (indexSizes[len(indexSizes)-1]+len(benchmarkString)-1)/len(benchmarkString)) benchFunc := func(b *testing.B, benchStr string) { b.SetBytes(int64(len(benchStr))) benchCount(b, benchStr, "a") // NB: "a" instead of "=" } for _, size := range indexSizes { b.Run(valName(size), func(b *testing.B) { benchFunc(b, benchStr[:size]) }) } } func BenchmarkIndexAnyASCII(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set cs := "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz" for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { benchIndexAny(b, x[:k], cs[:j]) }) } } } func BenchmarkIndexAnyUTF8(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set cs := "你好世界, hello world. 你好世界, hello world. 你好世界, hello world." for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { benchIndexAny(b, x[:k], cs[:j]) }) } } } func BenchmarkLastIndexAnyASCII(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set cs := "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz" for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { benchLastIndexAny(b, x[:k], cs[:j]) }) } } } func BenchmarkLastIndexAnyUTF8(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set cs := "你好世界, hello world. 你好世界, hello world. 你好世界, hello world." for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { benchLastIndexAny(b, x[:k], cs[:j]) }) } } } func BenchmarkIndexPeriodic(b *testing.B) { key := "aa" for _, skip := range [...]int{2, 4, 8, 16, 32, 64} { b.Run(fmt.Sprintf("IndexPeriodic%d", skip), func(b *testing.B) { s := strings.Repeat("a"+strings.Repeat(" ", skip-1), 1<<16/skip) benchIndex(b, s, key) }) } } // The below benchmarks are from src/bytes/bytes_test.go var bmbuf []byte func valName(x int) string { if s := x >> 20; s<<20 == x { return fmt.Sprintf("%dM", s) } if s := x >> 10; s<<10 == x { return fmt.Sprintf("%dK", s) } return fmt.Sprint(x) } func benchBytes(b *testing.B, sizes []int, f func(b *testing.B, n int)) { for _, n := range sizes { b.Run(valName(n), func(b *testing.B) { if len(bmbuf) < n { bmbuf = make([]byte, n) } b.SetBytes(int64(n)) f(b, n) }) } } var indexSizes = []int{10, 32, 4 << 10, 4 << 20, 64 << 20} func BenchmarkIndexByte_Bytes(b *testing.B) { if *benchStdLib { benchBytes(b, indexSizes, bmIndexByte(strings.IndexByte)) } else if *benchLower { fn := func(s string, c byte) int { if 'a' <= c && c <= 'z' { c -= 'a' - 'A' } return strings.IndexByte(strings.ToUpper(s), c) } benchBytes(b, indexSizes, bmIndexByte(fn)) } else { benchBytes(b, indexSizes, bmIndexByte(strcase.IndexByte)) } } func bmIndexByte(index func(string, byte) int) func(b *testing.B, n int) { return func(b *testing.B, n int) { buf := bmbuf[0:n] buf[n-1] = 'x' s := string(buf) for i := 0; i < b.N; i++ { j := index(s, 'x') if j != n-1 { b.Fatal("bad index", j) } } buf[n-1] = '\x00' } } func BenchmarkIndexRune_Bytes(b *testing.B) { if *benchStdLib { benchBytes(b, indexSizes, bmIndexRune(strings.IndexRune)) } else if *benchLower { fn := func(s string, r rune) int { return strings.IndexRune(strings.ToUpper(s), unicode.ToUpper(r)) } benchBytes(b, indexSizes, bmIndexRune(fn)) } else { benchBytes(b, indexSizes, bmIndexRune(strcase.IndexRune)) } } func BenchmarkIndexRuneASCII_Bytes(b *testing.B) { if *benchStdLib { benchBytes(b, indexSizes, bmIndexRuneASCII(strings.IndexRune)) } else if *benchLower { fn := func(s string, r rune) int { return strings.IndexRune(strings.ToUpper(s), unicode.ToUpper(r)) } benchBytes(b, indexSizes, bmIndexRuneASCII(fn)) } else { benchBytes(b, indexSizes, bmIndexRuneASCII(strcase.IndexRune)) } } func bmIndexRuneASCII(index func(string, rune) int) func(b *testing.B, n int) { return func(b *testing.B, n int) { buf := bmbuf[0:n] buf[n-1] = 'x' s := string(buf) for i := 0; i < b.N; i++ { j := index(s, 'x') if j != n-1 { b.Fatal("bad index", j) } } buf[n-1] = '\x00' } } func bmIndexRune(index func(string, rune) int) func(b *testing.B, n int) { return func(b *testing.B, n int) { buf := bmbuf[0:n] utf8.EncodeRune(buf[n-3:], '世') s := string(buf) for i := 0; i < b.N; i++ { j := index(s, '世') if j != n-3 { b.Fatal("bad index", j) } } buf[n-3] = '\x00' buf[n-2] = '\x00' buf[n-1] = '\x00' } } // WARN: not part of the stdlib func portableIndexNonASCII(s string) int { for i := 0; i < len(s); i++ { if s[i] >= utf8.RuneSelf { return i } } return -1 } // WARN: not part of the stdlib func BenchmarkIndexNonASCII_Bytes(b *testing.B) { if testing.Short() { b.Skip("short test") } if *benchLower { b.Skip("skipping: benchmark not relevant with -stdlib-case flag") return } if *benchStdLib { benchBytes(b, indexSizes, bmIndexNonASCII(portableIndexNonASCII)) } else { benchBytes(b, indexSizes, bmIndexNonASCII(strcase.IndexNonASCII)) } } // WARN: not part of the stdlib func bmIndexNonASCII(index func(string) int) func(b *testing.B, n int) { return func(b *testing.B, n int) { buf := bmbuf[0:n] utf8.EncodeRune(buf[n-3:], '世') s := string(buf) for i := 0; i < b.N; i++ { j := index(s) if j != n-3 { b.Fatal("bad index", j) } } buf[n-3] = '\x00' buf[n-2] = '\x00' buf[n-1] = '\x00' } } strcase-0.0.5/internal/benchtest/results/ 0000775 0000000 0000000 00000000000 14720254634 0020463 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/ 0000775 0000000 0000000 00000000000 14720254634 0022257 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/cpu.1706755042.23dd4971.txt 0000664 0000000 0000000 00000005256 14720254634 0025762 0 ustar 00root root 0000000 0000000 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 48 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: AuthenticAMD Model name: AMD EPYC 9R14 CPU family: 25 Model: 17 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Stepping: 1 BogoMIPS: 5200.00 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext perfctr_core invpcid_single ssbd perfmon_v2 ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx512_bf16 clzero xsaveerptr rdpru wbnoinvd arat avx512vbmi pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid flush_l1d Hypervisor vendor: KVM Virtualization type: full L1d cache: 128 KiB (4 instances) L1i cache: 128 KiB (4 instances) L2 cache: 4 MiB (4 instances) L3 cache: 16 MiB (1 instance) NUMA node(s): 1 NUMA node0 CPU(s): 0-3 Vulnerability Gather data sampling: Not affected Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Not affected Vulnerability Retbleed: Not affected Vulnerability Spec rstack overflow: Mitigation; safe RET Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/cpu.1706938813.2b8edcd9.txt 0000664 0000000 0000000 00000005256 14720254634 0026216 0 ustar 00root root 0000000 0000000 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 48 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: AuthenticAMD Model name: AMD EPYC 9R14 CPU family: 25 Model: 17 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Stepping: 1 BogoMIPS: 5200.00 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext perfctr_core invpcid_single ssbd perfmon_v2 ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx512_bf16 clzero xsaveerptr rdpru wbnoinvd arat avx512vbmi pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid flush_l1d Hypervisor vendor: KVM Virtualization type: full L1d cache: 128 KiB (4 instances) L1i cache: 128 KiB (4 instances) L2 cache: 4 MiB (4 instances) L3 cache: 16 MiB (1 instance) NUMA node(s): 1 NUMA node0 CPU(s): 0-3 Vulnerability Gather data sampling: Not affected Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Not affected Vulnerability Retbleed: Not affected Vulnerability Spec rstack overflow: Mitigation; safe RET Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/cpu.1707000584.3ecb49c8.txt 0000664 0000000 0000000 00000005256 14720254634 0026120 0 ustar 00root root 0000000 0000000 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 48 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: AuthenticAMD Model name: AMD EPYC 9R14 CPU family: 25 Model: 17 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Stepping: 1 BogoMIPS: 5200.00 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext perfctr_core invpcid_single ssbd perfmon_v2 ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx512_bf16 clzero xsaveerptr rdpru wbnoinvd arat avx512vbmi pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid flush_l1d Hypervisor vendor: KVM Virtualization type: full L1d cache: 128 KiB (4 instances) L1i cache: 128 KiB (4 instances) L2 cache: 4 MiB (4 instances) L3 cache: 16 MiB (1 instance) NUMA node(s): 1 NUMA node0 CPU(s): 0-3 Vulnerability Gather data sampling: Not affected Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Not affected Vulnerability Retbleed: Not affected Vulnerability Spec rstack overflow: Mitigation; safe RET Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/env.1706755042.23dd4971.txt 0000664 0000000 0000000 00000001654 14720254634 0025761 0 ustar 00root root 0000000 0000000 GO111MODULE='auto' GOARCH='amd64' GOBIN='' GOCACHE='/home/ubuntu/.cache/go-build' GOENV='/home/ubuntu/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/ubuntu/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/ubuntu/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/usr/local/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.21.6' GCCGO='gccgo' GOAMD64='v1' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/ubuntu/go/src/github.com/charlievieth/strcase/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build4179535071=/tmp/go-build -gno-record-gcc-switches' strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/env.1706938813.2b8edcd9.txt 0000664 0000000 0000000 00000001735 14720254634 0026215 0 ustar 00root root 0000000 0000000 GO111MODULE='auto' GOARCH='amd64' GOBIN='/home/ubuntu/src/go-dev/gobin' GOCACHE='/home/ubuntu/.cache/go-build' GOENV='/home/ubuntu/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/ubuntu/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/ubuntu/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/home/ubuntu/src/go-dev' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/home/ubuntu/src/go-dev/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.22rc2' GCCGO='gccgo' GOAMD64='v3' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/ubuntu/go/src/github.com/charlievieth/strcase/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build382062054=/tmp/go-build -gno-record-gcc-switches' strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/env.1707000584.3ecb49c8.txt 0000664 0000000 0000000 00000001654 14720254634 0026117 0 ustar 00root root 0000000 0000000 GO111MODULE='auto' GOARCH='amd64' GOBIN='' GOCACHE='/home/ubuntu/.cache/go-build' GOENV='/home/ubuntu/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/ubuntu/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/ubuntu/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/usr/local/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.21.6' GCCGO='gccgo' GOAMD64='v3' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/ubuntu/go/src/github.com/charlievieth/strcase/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2114303970=/tmp/go-build -gno-record-gcc-switches' strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/result.10.1706755042.23dd4971.txt 0000664 0000000 0000000 00000046012 14720254634 0026723 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 │ ./stdlib.10.1706755042.23dd4971.txt │ ./strcase.10.1706755042.23dd4971.txt │ │ sec/op │ sec/op vs base │ IndexRune-4 11.67n ± 0% 12.21n ± 0% +4.63% (p=0.000 n=10) IndexRuneLongString-4 13.57n ± 0% 13.29n ± 0% -2.06% (p=0.000 n=10) IndexRuneFastPath-4 3.749n ± 7% 5.697n ± 0% +51.94% (p=0.000 n=10) Index-4 3.983n ± 3% 5.968n ± 0% +49.84% (p=0.000 n=10) LastIndex-4 3.526n ± 0% 5.150n ± 0% +46.04% (p=0.000 n=10) IndexByte-4 2.713n ± 0% 4.340n ± 0% +59.99% (p=0.000 n=10) EqualFold/ASCII-4 8.559n ± 5% 8.371n ± 1% -2.19% (p=0.012 n=10) EqualFold/UnicodePrefix-4 88.13n ± 0% 34.06n ± 0% -61.35% (p=0.000 n=10) EqualFold/UnicodeSuffix-4 82.39n ± 0% 26.45n ± 0% -67.89% (p=0.000 n=10) IndexHard1-4 81.53µ ± 0% 81.59µ ± 0% +0.07% (p=0.000 n=10) IndexHard2-4 114.3µ ± 0% 2551.7µ ± 1% +2132.69% (p=0.000 n=10) IndexHard3-4 548.2µ ± 0% 2095.1µ ± 0% +282.20% (p=0.000 n=10) IndexHard4-4 559.1µ ± 0% 1509.6µ ± 0% +170.02% (p=0.000 n=10) LastIndexHard1-4 1.452m ± 0% 1.663m ± 0% +14.54% (p=0.000 n=10) LastIndexHard2-4 1.452m ± 0% 1.663m ± 0% +14.54% (p=0.000 n=10) LastIndexHard3-4 1.452m ± 0% 1.664m ± 0% +14.58% (p=0.000 n=10) CountHard1-4 81.52µ ± 0% 81.60µ ± 0% +0.10% (p=0.000 n=10) CountHard2-4 114.3µ ± 0% 2536.7µ ± 1% +2119.20% (p=0.000 n=10) CountHard3-4 548.2µ ± 0% 2093.2µ ± 0% +281.85% (p=0.000 n=10) IndexTorture-4 11.01µ ± 0% 20.13µ ± 0% +82.87% (p=0.000 n=10) CountTorture-4 11.01µ ± 0% 19.51µ ± 0% +77.19% (p=0.000 n=10) CountTortureOverlapping-4 44.00µ ± 1% 4746.16µ ± 0% +10686.60% (p=0.000 n=10) CountByte/10-4 4.066n ± 0% 10.255n ± 1% +152.21% (p=0.000 n=10) CountByte/32-4 4.608n ± 0% 23.030n ± 1% +399.78% (p=0.000 n=10) CountByte/4K-4 89.00n ± 0% 2234.00n ± 0% +2410.25% (p=0.000 n=10) CountByte/4M-4 88.73µ ± 0% 2282.42µ ± 0% +2472.28% (p=0.000 n=10) CountByte/64M-4 1.698m ± 0% 37.737m ± 0% +2122.71% (p=0.000 n=10) IndexAnyASCII/1:1-4 5.562n ± 3% 6.239n ± 2% +12.17% (p=0.000 n=10) IndexAnyASCII/1:2-4 6.152n ± 2% 8.409n ± 2% +36.67% (p=0.000 n=10) IndexAnyASCII/1:4-4 6.159n ± 3% 8.410n ± 2% +36.55% (p=0.000 n=10) IndexAnyASCII/1:8-4 6.169n ± 3% 8.410n ± 0% +36.32% (p=0.000 n=10) IndexAnyASCII/1:16-4 6.356n ± 4% 8.408n ± 0% +32.28% (p=0.000 n=10) IndexAnyASCII/1:32-4 6.459n ± 4% 8.679n ± 0% +34.38% (p=0.000 n=10) IndexAnyASCII/1:64-4 6.239n ± 0% 8.409n ± 0% +34.78% (p=0.000 n=10) IndexAnyASCII/16:1-4 5.778n ± 7% 6.239n ± 0% +7.98% (p=0.000 n=10) IndexAnyASCII/16:2-4 14.85n ± 0% 18.40n ± 0% +23.95% (p=0.000 n=10) IndexAnyASCII/16:4-4 17.61n ± 0% 20.70n ± 0% +17.58% (p=0.000 n=10) IndexAnyASCII/16:8-4 23.75n ± 0% 26.06n ± 0% +9.73% (p=0.000 n=10) IndexAnyASCII/16:16-4 34.51n ± 0% 39.42n ± 0% +14.23% (p=0.000 n=10) IndexAnyASCII/16:32-4 60.82n ± 0% 65.06n ± 0% +6.97% (p=0.000 n=10) IndexAnyASCII/16:64-4 101.0n ± 1% 130.9n ± 0% +29.59% (p=0.000 n=10) IndexAnyASCII/256:1-4 8.332n ± 3% 8.952n ± 0% +7.43% (p=0.000 n=10) IndexAnyASCII/256:2-4 143.8n ± 0% 150.7n ± 0% +4.80% (p=0.000 n=10) IndexAnyASCII/256:4-4 147.6n ± 0% 154.5n ± 0% +4.67% (p=0.000 n=10) IndexAnyASCII/256:8-4 157.0n ± 0% 163.7n ± 1% +4.23% (p=0.000 n=10) IndexAnyASCII/256:16-4 162.9n ± 0% 170.9n ± 0% +4.91% (p=0.000 n=10) IndexAnyASCII/256:32-4 172.2n ± 0% 198.2n ± 0% +15.10% (p=0.000 n=10) IndexAnyASCII/256:64-4 217.4n ± 0% 260.8n ± 0% +19.97% (p=0.000 n=10) IndexAnyUTF8/1:1-4 4.175n ± 4% 3.526n ± 8% -15.53% (p=0.000 n=10) IndexAnyUTF8/1:2-4 6.131n ± 3% 8.410n ± 6% +37.16% (p=0.000 n=10) IndexAnyUTF8/1:4-4 6.162n ± 2% 8.410n ± 1% +36.48% (p=0.000 n=10) IndexAnyUTF8/1:8-4 6.236n ± 4% 8.410n ± 4% +34.87% (p=0.000 n=10) IndexAnyUTF8/1:16-4 6.387n ± 3% 8.410n ± 0% +31.67% (p=0.000 n=10) IndexAnyUTF8/1:32-4 6.674n ± 4% 8.681n ± 0% +30.08% (p=0.000 n=10) IndexAnyUTF8/1:64-4 6.238n ± 0% 8.410n ± 0% +34.82% (p=0.000 n=10) IndexAnyUTF8/16:1-4 13.96n ± 2% 13.17n ± 1% -5.63% (p=0.000 n=10) IndexAnyUTF8/16:2-4 63.96n ± 0% 33.48n ± 2% -47.65% (p=0.000 n=10) IndexAnyUTF8/16:4-4 63.94n ± 0% 32.02n ± 1% -49.92% (p=0.000 n=10) IndexAnyUTF8/16:8-4 63.95n ± 0% 92.79n ± 3% +45.10% (p=0.000 n=10) IndexAnyUTF8/16:16-4 67.41n ± 1% 92.34n ± 1% +36.98% (p=0.000 n=10) IndexAnyUTF8/16:32-4 68.36n ± 3% 96.57n ± 1% +41.26% (p=0.000 n=10) IndexAnyUTF8/16:64-4 67.90n ± 0% 103.90n ± 0% +53.01% (p=0.000 n=10) IndexAnyUTF8/256:1-4 150.9n ± 1% 149.4n ± 1% -0.99% (p=0.002 n=10) IndexAnyUTF8/256:2-4 979.8n ± 7% 307.9n ± 1% -68.57% (p=0.000 n=10) IndexAnyUTF8/256:4-4 979.8n ± 0% 166.4n ± 1% -83.02% (p=0.000 n=10) IndexAnyUTF8/256:8-4 979.9n ± 7% 336.8n ± 1% -65.63% (p=0.000 n=10) IndexAnyUTF8/256:16-4 1049.0n ± 0% 104.5n ± 0% -90.04% (p=0.000 n=10) IndexAnyUTF8/256:32-4 1119.0n ± 0% 513.3n ± 0% -54.13% (p=0.000 n=10) IndexAnyUTF8/256:64-4 1051.0n ± 0% 590.3n ± 0% -43.83% (p=0.000 n=10) LastIndexAnyASCII/1:1-4 5.373n ± 1% 6.536n ± 4% +21.63% (p=0.000 n=10) LastIndexAnyASCII/1:2-4 5.407n ± 3% 6.582n ± 3% +21.73% (p=0.000 n=10) LastIndexAnyASCII/1:4-4 5.401n ± 1% 6.716n ± 5% +24.36% (p=0.000 n=10) LastIndexAnyASCII/1:8-4 5.375n ± 2% 6.721n ± 3% +25.05% (p=0.000 n=10) LastIndexAnyASCII/1:16-4 5.305n ± 3% 6.511n ± 3% +22.74% (p=0.000 n=10) LastIndexAnyASCII/1:32-4 5.669n ± 1% 6.842n ± 3% +20.70% (p=0.000 n=10) LastIndexAnyASCII/1:64-4 5.426n ± 0% 7.324n ± 0% +34.98% (p=0.000 n=10) LastIndexAnyASCII/16:1-4 13.82n ± 0% 18.00n ± 0% +30.25% (p=0.000 n=10) LastIndexAnyASCII/16:2-4 14.98n ± 0% 18.24n ± 0% +21.76% (p=0.000 n=10) LastIndexAnyASCII/16:4-4 17.78n ± 0% 20.35n ± 0% +14.45% (p=0.000 n=10) LastIndexAnyASCII/16:8-4 25.60n ± 0% 25.95n ± 0% +1.39% (p=0.000 n=10) LastIndexAnyASCII/16:16-4 34.76n ± 0% 38.83n ± 0% +11.71% (p=0.000 n=10) LastIndexAnyASCII/16:32-4 53.13n ± 1% 65.54n ± 0% +23.36% (p=0.000 n=10) LastIndexAnyASCII/16:64-4 97.97n ± 1% 130.60n ± 0% +33.31% (p=0.000 n=10) LastIndexAnyASCII/256:1-4 140.8n ± 0% 143.2n ± 0% +1.74% (p=0.000 n=10) LastIndexAnyASCII/256:2-4 142.9n ± 0% 144.9n ± 0% +1.33% (p=0.000 n=10) LastIndexAnyASCII/256:4-4 146.0n ± 0% 148.9n ± 0% +1.99% (p=0.000 n=10) LastIndexAnyASCII/256:8-4 155.0n ± 0% 156.7n ± 0% +1.06% (p=0.000 n=10) LastIndexAnyASCII/256:16-4 161.3n ± 0% 164.5n ± 0% +1.95% (p=0.000 n=10) LastIndexAnyASCII/256:32-4 171.1n ± 0% 192.0n ± 0% +12.18% (p=0.000 n=10) LastIndexAnyASCII/256:64-4 215.2n ± 0% 255.9n ± 0% +18.94% (p=0.000 n=10) LastIndexAnyUTF8/1:1-4 5.392n ± 1% 6.521n ± 3% +20.95% (p=0.000 n=10) LastIndexAnyUTF8/1:2-4 5.332n ± 1% 6.514n ± 3% +22.19% (p=0.000 n=10) LastIndexAnyUTF8/1:4-4 5.373n ± 4% 6.753n ± 4% +25.69% (p=0.000 n=10) LastIndexAnyUTF8/1:8-4 5.406n ± 2% 6.525n ± 4% +20.70% (p=0.000 n=10) LastIndexAnyUTF8/1:16-4 5.403n ± 3% 6.511n ± 0% +20.50% (p=0.000 n=10) LastIndexAnyUTF8/1:32-4 5.552n ± 2% 6.782n ± 2% +22.15% (p=0.000 n=10) LastIndexAnyUTF8/1:64-4 5.425n ± 0% 7.324n ± 0% +35.00% (p=0.000 n=10) LastIndexAnyUTF8/16:1-4 36.41n ± 7% 39.60n ± 0% +8.76% (p=0.000 n=10) LastIndexAnyUTF8/16:2-4 95.47n ± 2% 113.40n ± 2% +18.77% (p=0.000 n=10) LastIndexAnyUTF8/16:4-4 96.54n ± 2% 110.70n ± 2% +14.67% (p=0.000 n=10) LastIndexAnyUTF8/16:8-4 95.01n ± 3% 112.20n ± 2% +18.09% (p=0.000 n=10) LastIndexAnyUTF8/16:16-4 93.34n ± 3% 108.50n ± 1% +16.25% (p=0.000 n=10) LastIndexAnyUTF8/16:32-4 95.52n ± 3% 115.45n ± 2% +20.86% (p=0.000 n=10) LastIndexAnyUTF8/16:64-4 92.82n ± 3% 122.55n ± 2% +32.03% (p=0.000 n=10) LastIndexAnyUTF8/256:1-4 493.6n ± 0% 564.5n ± 0% +14.36% (p=0.000 n=10) LastIndexAnyUTF8/256:2-4 1.446µ ± 4% 1.677µ ± 3% +16.02% (p=0.000 n=10) LastIndexAnyUTF8/256:4-4 1.441µ ± 2% 1.677µ ± 1% +16.38% (p=0.000 n=10) LastIndexAnyUTF8/256:8-4 1.453µ ± 4% 1.686µ ± 3% +16.04% (p=0.000 n=10) LastIndexAnyUTF8/256:16-4 1.396µ ± 4% 1.677µ ± 0% +20.13% (p=0.000 n=10) LastIndexAnyUTF8/256:32-4 1.466µ ± 4% 1.747µ ± 0% +19.21% (p=0.000 n=10) LastIndexAnyUTF8/256:64-4 1.446µ ± 2% 1.886µ ± 0% +30.47% (p=0.000 n=10) IndexPeriodic/IndexPeriodic2-4 5.107µ ± 0% 53.405µ ± 2% +945.72% (p=0.000 n=10) IndexPeriodic/IndexPeriodic4-4 5.115µ ± 0% 62.279µ ± 0% +1117.58% (p=0.000 n=10) IndexPeriodic/IndexPeriodic8-4 57.83µ ± 0% 81.25µ ± 0% +40.50% (p=0.000 n=10) IndexPeriodic/IndexPeriodic16-4 29.00µ ± 0% 40.63µ ± 0% +40.11% (p=0.000 n=10) IndexPeriodic/IndexPeriodic32-4 14.54µ ± 0% 20.28µ ± 0% +39.46% (p=0.000 n=10) IndexPeriodic/IndexPeriodic64-4 7.415µ ± 0% 10.593µ ± 0% +42.86% (p=0.000 n=10) IndexByte_Bytes/10-4 3.255n ± 8% 4.227n ± 4% +29.86% (p=0.000 n=10) IndexByte_Bytes/32-4 3.747n ± 8% 4.612n ± 0% +23.09% (p=0.000 n=10) IndexByte_Bytes/4K-4 72.70n ± 0% 50.52n ± 0% -30.50% (p=0.000 n=10) IndexByte_Bytes/4M-4 71.87µ ± 0% 48.32µ ± 0% -32.77% (p=0.000 n=10) IndexByte_Bytes/64M-4 1.466m ± 0% 1.401m ± 0% -4.46% (p=0.000 n=10) IndexRune_Bytes/10-4 11.94n ± 2% 12.21n ± 0% +2.26% (p=0.001 n=10) IndexRune_Bytes/32-4 13.29n ± 0% 13.02n ± 0% -2.03% (p=0.000 n=10) IndexRune_Bytes/4K-4 81.12n ± 0% 81.12n ± 0% ~ (p=0.650 n=10) IndexRune_Bytes/4M-4 71.97µ ± 0% 71.89µ ± 0% -0.12% (p=0.000 n=10) IndexRune_Bytes/64M-4 1.486m ± 0% 1.480m ± 0% -0.39% (p=0.000 n=10) IndexRuneASCII_Bytes/10-4 3.522n ± 8% 6.239n ± 0% +77.12% (p=0.000 n=10) IndexRuneASCII_Bytes/32-4 3.798n ± 0% 6.784n ± 0% +78.62% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-4 78.04n ± 0% 53.07n ± 0% -32.00% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-4 71.61µ ± 0% 48.07µ ± 0% -32.88% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-4 1.469m ± 0% 1.411m ± 1% -3.92% (p=0.000 n=10) IndexNonASCII_Bytes/10-4 3.526n ± 0% 3.252n ± 8% -7.77% (p=0.001 n=10) IndexNonASCII_Bytes/32-4 10.310n ± 0% 3.530n ± 8% -65.77% (p=0.000 n=10) IndexNonASCII_Bytes/4K-4 1122.50n ± 0% 49.65n ± 11% -95.58% (p=0.000 n=10) IndexNonASCII_Bytes/4M-4 1139.21µ ± 0% 48.11µ ± 0% -95.78% (p=0.000 n=10) IndexNonASCII_Bytes/64M-4 18.301m ± 0% 1.411m ± 0% -92.29% (p=0.000 n=10) geomean 202.7n 249.6n +23.14% │ ./stdlib.10.1706755042.23dd4971.txt │ ./strcase.10.1706755042.23dd4971.txt │ │ B/s │ B/s vs base │ CountByte/10-4 2345.3Mi ± 0% 929.9Mi ± 1% -60.35% (p=0.000 n=10) CountByte/32-4 6.468Gi ± 0% 1.294Gi ± 1% -79.99% (p=0.000 n=10) CountByte/4K-4 42.865Gi ± 0% 1.708Gi ± 0% -96.02% (p=0.000 n=10) CountByte/4M-4 44.023Gi ± 0% 1.711Gi ± 0% -96.11% (p=0.000 n=10) CountByte/64M-4 36.813Gi ± 0% 1.656Gi ± 0% -95.50% (p=0.000 n=10) IndexByte_Bytes/10-4 2.861Gi ± 8% 2.203Gi ± 4% -22.99% (p=0.000 n=10) IndexByte_Bytes/32-4 7.954Gi ± 8% 6.462Gi ± 0% -18.75% (p=0.000 n=10) IndexByte_Bytes/4K-4 52.47Gi ± 0% 75.50Gi ± 0% +43.89% (p=0.000 n=10) IndexByte_Bytes/4M-4 54.36Gi ± 0% 80.85Gi ± 0% +48.74% (p=0.000 n=10) IndexByte_Bytes/64M-4 42.63Gi ± 0% 44.62Gi ± 0% +4.66% (p=0.000 n=10) IndexRune_Bytes/10-4 799.0Mi ± 2% 781.2Mi ± 0% -2.22% (p=0.001 n=10) IndexRune_Bytes/32-4 2.242Gi ± 0% 2.289Gi ± 0% +2.09% (p=0.000 n=10) IndexRune_Bytes/4K-4 47.03Gi ± 0% 47.03Gi ± 0% ~ (p=0.393 n=10) IndexRune_Bytes/4M-4 54.28Gi ± 0% 54.34Gi ± 0% +0.12% (p=0.000 n=10) IndexRune_Bytes/64M-4 42.07Gi ± 0% 42.24Gi ± 0% +0.40% (p=0.000 n=10) IndexRuneASCII_Bytes/10-4 2.644Gi ± 7% 1.493Gi ± 0% -43.54% (p=0.000 n=10) IndexRuneASCII_Bytes/32-4 7.847Gi ± 0% 4.393Gi ± 0% -44.02% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-4 48.88Gi ± 0% 71.88Gi ± 0% +47.06% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-4 54.55Gi ± 0% 81.27Gi ± 0% +48.99% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-4 42.55Gi ± 0% 44.28Gi ± 1% +4.08% (p=0.000 n=10) IndexNonASCII_Bytes/10-4 2.641Gi ± 0% 2.864Gi ± 8% +8.43% (p=0.007 n=10) IndexNonASCII_Bytes/32-4 2.892Gi ± 0% 8.444Gi ± 7% +192.00% (p=0.000 n=10) IndexNonASCII_Bytes/4K-4 3.399Gi ± 0% 76.834Gi ± 10% +2160.75% (p=0.000 n=10) IndexNonASCII_Bytes/4M-4 3.429Gi ± 0% 81.189Gi ± 0% +2267.76% (p=0.000 n=10) IndexNonASCII_Bytes/64M-4 3.415Gi ± 0% 44.292Gi ± 0% +1196.94% (p=0.000 n=10) geomean 11.57Gi 10.64Gi -8.04% strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/result.10.1706938813.2b8edcd9.txt 0000664 0000000 0000000 00000000000 14720254634 0027142 0 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/result.10.1707000584.3ecb49c8.txt 0000664 0000000 0000000 00000045756 14720254634 0027077 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 │ ./stdlib.10.1707000584.3ecb49c8.txt │ ./strcase.10.1707000584.3ecb49c8.txt │ │ sec/op │ sec/op vs base │ IndexRune-4 12.24n ± 0% 12.21n ± 0% -0.25% (p=0.000 n=10) IndexRuneLongString-4 13.59n ± 0% 12.75n ± 0% -6.18% (p=0.000 n=10) IndexRuneFastPath-4 3.526n ± 0% 5.696n ± 0% +61.54% (p=0.000 n=10) Index-4 3.795n ± 0% 5.967n ± 3% +57.23% (p=0.000 n=10) LastIndex-4 3.523n ± 0% 4.882n ± 0% +38.58% (p=0.000 n=10) IndexByte-4 2.713n ± 0% 4.340n ± 6% +59.97% (p=0.000 n=10) EqualFold/ASCII-4 9.144n ± 1% 8.342n ± 1% -8.77% (p=0.000 n=10) EqualFold/UnicodePrefix-4 90.05n ± 0% 34.10n ± 0% -62.13% (p=0.000 n=10) EqualFold/UnicodeSuffix-4 82.19n ± 0% 26.45n ± 0% -67.82% (p=0.000 n=10) IndexHard1-4 81.49µ ± 0% 81.54µ ± 0% +0.07% (p=0.000 n=10) IndexHard2-4 114.2µ ± 0% 2533.1µ ± 0% +2117.23% (p=0.000 n=10) IndexHard3-4 570.6µ ± 0% 2054.4µ ± 1% +260.08% (p=0.000 n=10) IndexHard4-4 570.2µ ± 0% 1691.9µ ± 0% +196.71% (p=0.000 n=10) LastIndexHard1-4 1.451m ± 0% 1.663m ± 0% +14.59% (p=0.000 n=10) LastIndexHard2-4 1.452m ± 0% 1.663m ± 0% +14.58% (p=0.000 n=10) LastIndexHard3-4 1.451m ± 0% 1.664m ± 0% +14.66% (p=0.000 n=10) CountHard1-4 81.49µ ± 0% 81.56µ ± 0% +0.08% (p=0.000 n=10) CountHard2-4 114.3µ ± 0% 2532.4µ ± 0% +2116.40% (p=0.000 n=10) CountHard3-4 570.6µ ± 0% 2090.8µ ± 0% +266.45% (p=0.000 n=10) IndexTorture-4 11.01µ ± 0% 17.84µ ± 0% +62.01% (p=0.000 n=10) CountTorture-4 11.01µ ± 0% 19.51µ ± 0% +77.23% (p=0.000 n=10) CountTortureOverlapping-4 41.94µ ± 2% 4746.21µ ± 0% +11217.34% (p=0.000 n=10) CountByte/10-4 3.526n ± 0% 4.476n ± 0% +26.94% (p=0.000 n=10) CountByte/32-4 4.610n ± 0% 5.252n ± 0% +13.92% (p=0.000 n=10) CountByte/4K-4 95.69n ± 0% 71.68n ± 0% -25.09% (p=0.000 n=10) CountByte/4M-4 87.41µ ± 0% 70.03µ ± 0% -19.88% (p=0.000 n=10) CountByte/64M-4 1.654m ± 0% 1.495m ± 2% -9.61% (p=0.000 n=10) IndexAnyASCII/1:1-4 4.820n ± 1% 6.238n ± 2% +29.43% (p=0.000 n=10) IndexAnyASCII/1:2-4 5.949n ± 1% 8.409n ± 0% +41.34% (p=0.000 n=10) IndexAnyASCII/1:4-4 5.958n ± 1% 8.409n ± 0% +41.13% (p=0.000 n=10) IndexAnyASCII/1:8-4 5.941n ± 1% 8.409n ± 1% +41.55% (p=0.000 n=10) IndexAnyASCII/1:16-4 5.684n ± 0% 8.409n ± 0% +47.95% (p=0.000 n=10) IndexAnyASCII/1:32-4 6.198n ± 0% 8.680n ± 0% +40.06% (p=0.000 n=10) IndexAnyASCII/1:64-4 6.238n ± 0% 8.409n ± 1% +34.80% (p=0.000 n=10) IndexAnyASCII/16:1-4 4.575n ± 1% 6.239n ± 4% +36.39% (p=0.000 n=10) IndexAnyASCII/16:2-4 14.96n ± 0% 18.38n ± 0% +22.83% (p=0.000 n=10) IndexAnyASCII/16:4-4 17.56n ± 0% 20.69n ± 0% +17.82% (p=0.000 n=10) IndexAnyASCII/16:8-4 23.77n ± 0% 26.05n ± 0% +9.64% (p=0.000 n=10) IndexAnyASCII/16:16-4 34.25n ± 0% 39.40n ± 0% +15.02% (p=0.000 n=10) IndexAnyASCII/16:32-4 60.62n ± 0% 65.05n ± 0% +7.31% (p=0.000 n=10) IndexAnyASCII/16:64-4 97.99n ± 1% 130.90n ± 0% +33.59% (p=0.000 n=10) IndexAnyASCII/256:1-4 6.781n ± 0% 8.951n ± 0% +32.00% (p=0.000 n=10) IndexAnyASCII/256:2-4 148.8n ± 0% 150.9n ± 0% +1.45% (p=0.000 n=10) IndexAnyASCII/256:4-4 151.4n ± 0% 154.5n ± 0% +2.05% (p=0.000 n=10) IndexAnyASCII/256:8-4 158.9n ± 0% 163.5n ± 0% +2.89% (p=0.000 n=10) IndexAnyASCII/256:16-4 170.3n ± 1% 170.5n ± 0% ~ (p=0.459 n=10) IndexAnyASCII/256:32-4 180.2n ± 0% 198.0n ± 0% +9.91% (p=0.000 n=10) IndexAnyASCII/256:64-4 229.4n ± 0% 260.1n ± 0% +13.41% (p=0.000 n=10) IndexAnyUTF8/1:1-4 4.034n ± 1% 3.526n ± 0% -12.59% (p=0.000 n=10) IndexAnyUTF8/1:2-4 5.942n ± 1% 8.409n ± 0% +41.52% (p=0.000 n=10) IndexAnyUTF8/1:4-4 5.931n ± 1% 8.409n ± 2% +41.78% (p=0.000 n=10) IndexAnyUTF8/1:8-4 5.944n ± 0% 8.409n ± 0% +41.47% (p=0.000 n=10) IndexAnyUTF8/1:16-4 5.671n ± 0% 8.409n ± 0% +48.27% (p=0.000 n=10) IndexAnyUTF8/1:32-4 6.202n ± 1% 8.680n ± 0% +39.95% (p=0.000 n=10) IndexAnyUTF8/1:64-4 6.239n ± 0% 8.409n ± 0% +34.78% (p=0.000 n=10) IndexAnyUTF8/16:1-4 16.00n ± 0% 13.28n ± 2% -17.00% (p=0.000 n=10) IndexAnyUTF8/16:2-4 59.94n ± 0% 35.42n ± 1% -40.90% (p=0.000 n=10) IndexAnyUTF8/16:4-4 59.94n ± 0% 33.00n ± 0% -44.95% (p=0.000 n=10) IndexAnyUTF8/16:8-4 59.94n ± 0% 91.92n ± 1% +53.36% (p=0.000 n=10) IndexAnyUTF8/16:16-4 58.86n ± 1% 92.31n ± 1% +56.83% (p=0.000 n=10) IndexAnyUTF8/16:32-4 63.99n ± 1% 96.34n ± 1% +50.56% (p=0.000 n=10) IndexAnyUTF8/16:64-4 67.88n ± 1% 103.90n ± 0% +53.05% (p=0.000 n=10) IndexAnyUTF8/256:1-4 216.0n ± 0% 151.3n ± 1% -29.95% (p=0.000 n=10) IndexAnyUTF8/256:2-4 912.5n ± 0% 310.6n ± 0% -65.96% (p=0.000 n=10) IndexAnyUTF8/256:4-4 912.6n ± 0% 166.8n ± 1% -81.72% (p=0.000 n=10) IndexAnyUTF8/256:8-4 912.5n ± 0% 335.9n ± 1% -63.20% (p=0.000 n=10) IndexAnyUTF8/256:16-4 911.9n ± 0% 100.7n ± 0% -88.96% (p=0.000 n=10) IndexAnyUTF8/256:32-4 981.9n ± 0% 518.6n ± 0% -47.19% (p=0.000 n=10) IndexAnyUTF8/256:64-4 1051.0n ± 0% 590.3n ± 0% -43.83% (p=0.000 n=10) LastIndexAnyASCII/1:1-4 5.460n ± 3% 6.506n ± 0% +19.16% (p=0.000 n=10) LastIndexAnyASCII/1:2-4 5.439n ± 4% 6.507n ± 4% +19.65% (p=0.000 n=10) LastIndexAnyASCII/1:4-4 5.542n ± 4% 6.506n ± 4% +17.40% (p=0.000 n=10) LastIndexAnyASCII/1:8-4 5.583n ± 1% 6.506n ± 1% +16.54% (p=0.000 n=10) LastIndexAnyASCII/1:16-4 5.343n ± 2% 6.510n ± 0% +21.84% (p=0.000 n=10) LastIndexAnyASCII/1:32-4 5.413n ± 2% 6.781n ± 4% +25.26% (p=0.000 n=10) LastIndexAnyASCII/1:64-4 5.669n ± 2% 7.324n ± 0% +29.18% (p=0.000 n=10) LastIndexAnyASCII/16:1-4 13.81n ± 0% 18.00n ± 0% +30.34% (p=0.000 n=10) LastIndexAnyASCII/16:2-4 15.01n ± 0% 18.24n ± 0% +21.52% (p=0.000 n=10) LastIndexAnyASCII/16:4-4 17.77n ± 0% 20.34n ± 0% +14.49% (p=0.000 n=10) LastIndexAnyASCII/16:8-4 25.60n ± 0% 25.94n ± 0% +1.33% (p=0.000 n=10) LastIndexAnyASCII/16:16-4 34.84n ± 0% 38.82n ± 0% +11.42% (p=0.000 n=10) LastIndexAnyASCII/16:32-4 62.10n ± 1% 65.53n ± 0% +5.52% (p=0.000 n=10) LastIndexAnyASCII/16:64-4 102.0n ± 1% 130.4n ± 0% +27.95% (p=0.000 n=10) LastIndexAnyASCII/256:1-4 150.5n ± 0% 144.1n ± 0% -4.22% (p=0.000 n=10) LastIndexAnyASCII/256:2-4 151.8n ± 0% 145.2n ± 0% -4.31% (p=0.000 n=10) LastIndexAnyASCII/256:4-4 153.4n ± 0% 149.4n ± 0% -2.61% (p=0.000 n=10) LastIndexAnyASCII/256:8-4 161.7n ± 0% 157.0n ± 0% -2.88% (p=0.000 n=10) LastIndexAnyASCII/256:16-4 167.8n ± 0% 164.4n ± 0% -2.03% (p=0.000 n=10) LastIndexAnyASCII/256:32-4 177.2n ± 0% 192.1n ± 0% +8.44% (p=0.000 n=10) LastIndexAnyASCII/256:64-4 223.2n ± 0% 255.8n ± 0% +14.58% (p=0.000 n=10) LastIndexAnyUTF8/1:1-4 5.402n ± 3% 6.506n ± 0% +20.45% (p=0.000 n=10) LastIndexAnyUTF8/1:2-4 5.572n ± 2% 6.506n ± 0% +16.77% (p=0.000 n=10) LastIndexAnyUTF8/1:4-4 5.448n ± 2% 6.507n ± 1% +19.44% (p=0.000 n=10) LastIndexAnyUTF8/1:8-4 5.429n ± 3% 6.599n ± 4% +21.55% (p=0.000 n=10) LastIndexAnyUTF8/1:16-4 5.322n ± 2% 6.510n ± 0% +22.31% (p=0.000 n=10) LastIndexAnyUTF8/1:32-4 5.514n ± 3% 6.782n ± 0% +22.98% (p=0.000 n=10) LastIndexAnyUTF8/1:64-4 5.752n ± 2% 7.324n ± 0% +27.34% (p=0.000 n=10) LastIndexAnyUTF8/16:1-4 38.52n ± 0% 35.27n ± 12% ~ (p=0.127 n=10) LastIndexAnyUTF8/16:2-4 85.95n ± 1% 106.15n ± 3% +23.50% (p=0.000 n=10) LastIndexAnyUTF8/16:4-4 85.27n ± 1% 108.25n ± 3% +26.95% (p=0.000 n=10) LastIndexAnyUTF8/16:8-4 85.61n ± 2% 105.35n ± 2% +23.06% (p=0.000 n=10) LastIndexAnyUTF8/16:16-4 78.78n ± 3% 108.20n ± 2% +37.34% (p=0.000 n=10) LastIndexAnyUTF8/16:32-4 82.44n ± 5% 113.65n ± 1% +37.86% (p=0.000 n=10) LastIndexAnyUTF8/16:64-4 89.27n ± 1% 122.45n ± 2% +37.17% (p=0.000 n=10) LastIndexAnyUTF8/256:1-4 563.1n ± 0% 495.5n ± 1% -12.00% (p=0.000 n=10) LastIndexAnyUTF8/256:2-4 1.277µ ± 3% 1.608µ ± 2% +25.92% (p=0.000 n=10) LastIndexAnyUTF8/256:4-4 1.258µ ± 4% 1.608µ ± 3% +27.87% (p=0.000 n=10) LastIndexAnyUTF8/256:8-4 1.279µ ± 2% 1.643µ ± 2% +28.46% (p=0.000 n=10) LastIndexAnyUTF8/256:16-4 1.196µ ± 4% 1.677µ ± 0% +40.28% (p=0.000 n=10) LastIndexAnyUTF8/256:32-4 1.303µ ± 3% 1.747µ ± 0% +34.08% (p=0.000 n=10) LastIndexAnyUTF8/256:64-4 1.378µ ± 3% 1.886µ ± 0% +36.87% (p=0.000 n=10) IndexPeriodic/IndexPeriodic2-4 5.105µ ± 0% 53.402µ ± 0% +946.06% (p=0.000 n=10) IndexPeriodic/IndexPeriodic4-4 5.113µ ± 0% 62.270µ ± 0% +1117.89% (p=0.000 n=10) IndexPeriodic/IndexPeriodic8-4 57.77µ ± 0% 81.21µ ± 0% +40.57% (p=0.000 n=10) IndexPeriodic/IndexPeriodic16-4 28.95µ ± 0% 40.60µ ± 0% +40.21% (p=0.000 n=10) IndexPeriodic/IndexPeriodic32-4 14.54µ ± 0% 20.31µ ± 0% +39.65% (p=0.000 n=10) IndexPeriodic/IndexPeriodic64-4 7.388µ ± 0% 10.579µ ± 0% +43.20% (p=0.000 n=10) IndexByte_Bytes/10-4 3.255n ± 0% 4.257n ± 4% +30.78% (p=0.000 n=10) IndexByte_Bytes/32-4 3.526n ± 5% 4.611n ± 0% +30.77% (p=0.000 n=10) IndexByte_Bytes/4K-4 45.03n ± 1% 50.50n ± 0% +12.16% (p=0.001 n=10) IndexByte_Bytes/4M-4 43.51µ ± 0% 48.07µ ± 0% +10.50% (p=0.000 n=10) IndexByte_Bytes/64M-4 1.413m ± 1% 1.435m ± 0% +1.52% (p=0.000 n=10) IndexRune_Bytes/10-4 11.62n ± 0% 12.21n ± 0% +5.08% (p=0.000 n=10) IndexRune_Bytes/32-4 13.29n ± 0% 13.02n ± 0% -2.03% (p=0.000 n=10) IndexRune_Bytes/4K-4 58.38n ± 0% 57.64n ± 0% -1.28% (p=0.000 n=10) IndexRune_Bytes/4M-4 54.02µ ± 0% 54.04µ ± 0% +0.04% (p=0.024 n=10) IndexRune_Bytes/64M-4 1.549m ± 1% 1.498m ± 0% -3.34% (p=0.000 n=10) IndexRuneASCII_Bytes/10-4 3.522n ± 0% 6.239n ± 0% +77.14% (p=0.000 n=10) IndexRuneASCII_Bytes/32-4 3.661n ± 0% 6.783n ± 0% +85.28% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-4 51.16n ± 0% 53.06n ± 0% +3.72% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-4 43.67µ ± 0% 48.11µ ± 0% +10.16% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-4 1.418m ± 0% 1.432m ± 0% +1.02% (p=0.000 n=10) IndexNonASCII_Bytes/10-4 3.528n ± 0% 3.255n ± 8% -7.74% (p=0.000 n=10) IndexNonASCII_Bytes/32-4 10.310n ± 1% 3.530n ± 0% -65.76% (p=0.000 n=10) IndexNonASCII_Bytes/4K-4 1124.00n ± 0% 49.64n ± 1% -95.58% (p=0.000 n=10) IndexNonASCII_Bytes/4M-4 1138.92µ ± 0% 48.17µ ± 0% -95.77% (p=0.000 n=10) IndexNonASCII_Bytes/64M-4 18.299m ± 0% 1.435m ± 1% -92.16% (p=0.000 n=10) geomean 196.0n 225.8n +15.21% │ ./stdlib.10.1707000584.3ecb49c8.txt │ ./strcase.10.1707000584.3ecb49c8.txt │ │ B/s │ B/s vs base │ CountByte/10-4 2.641Gi ± 0% 2.081Gi ± 0% -21.22% (p=0.000 n=10) CountByte/32-4 6.464Gi ± 0% 5.675Gi ± 0% -12.20% (p=0.000 n=10) CountByte/4K-4 39.87Gi ± 0% 53.22Gi ± 0% +33.49% (p=0.000 n=10) CountByte/4M-4 44.69Gi ± 0% 55.78Gi ± 0% +24.82% (p=0.000 n=10) CountByte/64M-4 37.80Gi ± 0% 41.81Gi ± 2% +10.63% (p=0.000 n=10) IndexByte_Bytes/10-4 2.861Gi ± 0% 2.188Gi ± 5% -23.53% (p=0.000 n=10) IndexByte_Bytes/32-4 8.451Gi ± 4% 6.463Gi ± 0% -23.53% (p=0.000 n=10) IndexByte_Bytes/4K-4 84.72Gi ± 1% 75.53Gi ± 0% -10.85% (p=0.002 n=10) IndexByte_Bytes/4M-4 89.79Gi ± 0% 81.26Gi ± 0% -9.50% (p=0.000 n=10) IndexByte_Bytes/64M-4 44.22Gi ± 1% 43.56Gi ± 0% -1.50% (p=0.000 n=10) IndexRune_Bytes/10-4 820.5Mi ± 0% 781.2Mi ± 0% -4.78% (p=0.000 n=10) IndexRune_Bytes/32-4 2.242Gi ± 0% 2.289Gi ± 0% +2.08% (p=0.000 n=10) IndexRune_Bytes/4K-4 65.34Gi ± 0% 66.18Gi ± 0% +1.29% (p=0.000 n=10) IndexRune_Bytes/4M-4 72.31Gi ± 0% 72.28Gi ± 0% -0.04% (p=0.029 n=10) IndexRune_Bytes/64M-4 40.34Gi ± 1% 41.73Gi ± 0% +3.46% (p=0.000 n=10) IndexRuneASCII_Bytes/10-4 2.644Gi ± 0% 1.493Gi ± 0% -43.55% (p=0.000 n=10) IndexRuneASCII_Bytes/32-4 8.140Gi ± 0% 4.394Gi ± 0% -46.02% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-4 74.57Gi ± 0% 71.90Gi ± 0% -3.59% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-4 89.45Gi ± 0% 81.20Gi ± 0% -9.22% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-4 44.08Gi ± 0% 43.63Gi ± 0% -1.01% (p=0.000 n=10) IndexNonASCII_Bytes/10-4 2.640Gi ± 0% 2.861Gi ± 8% +8.39% (p=0.000 n=10) IndexNonASCII_Bytes/32-4 2.891Gi ± 1% 8.443Gi ± 0% +192.08% (p=0.000 n=10) IndexNonASCII_Bytes/4K-4 3.395Gi ± 0% 76.848Gi ± 1% +2163.84% (p=0.000 n=10) IndexNonASCII_Bytes/4M-4 3.430Gi ± 0% 81.101Gi ± 0% +2264.62% (p=0.000 n=10) IndexNonASCII_Bytes/64M-4 3.415Gi ± 0% 43.550Gi ± 1% +1175.07% (p=0.000 n=10) geomean 12.93Gi 17.91Gi +38.51% strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/stdlib.10.1706755042.23dd4971.txt 0000664 0000000 0000000 00000276630 14720254634 0026701 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 BenchmarkIndexRune-4 100000000 11.66 ns/op BenchmarkIndexRune-4 100000000 11.66 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRune-4 100000000 11.66 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRuneLongString-4 88302766 13.57 ns/op BenchmarkIndexRuneLongString-4 88442887 13.56 ns/op BenchmarkIndexRuneLongString-4 88206315 13.57 ns/op BenchmarkIndexRuneLongString-4 88248349 13.57 ns/op BenchmarkIndexRuneLongString-4 88388823 13.57 ns/op BenchmarkIndexRuneLongString-4 88388042 13.57 ns/op BenchmarkIndexRuneLongString-4 88456845 13.57 ns/op BenchmarkIndexRuneLongString-4 88315706 13.57 ns/op BenchmarkIndexRuneLongString-4 88425688 13.57 ns/op BenchmarkIndexRuneLongString-4 88282375 13.57 ns/op BenchmarkIndexRuneFastPath-4 327038635 3.610 ns/op BenchmarkIndexRuneFastPath-4 329912138 4.026 ns/op BenchmarkIndexRuneFastPath-4 340297970 3.740 ns/op BenchmarkIndexRuneFastPath-4 299728897 3.867 ns/op BenchmarkIndexRuneFastPath-4 305420662 4.030 ns/op BenchmarkIndexRuneFastPath-4 294970506 3.690 ns/op BenchmarkIndexRuneFastPath-4 294912469 3.526 ns/op BenchmarkIndexRuneFastPath-4 298508442 3.759 ns/op BenchmarkIndexRuneFastPath-4 297705668 3.899 ns/op BenchmarkIndexRuneFastPath-4 325274229 3.693 ns/op BenchmarkIndex-4 308078457 3.947 ns/op BenchmarkIndex-4 311901526 3.990 ns/op BenchmarkIndex-4 300299710 4.069 ns/op BenchmarkIndex-4 315931501 4.006 ns/op BenchmarkIndex-4 276493798 3.798 ns/op BenchmarkIndex-4 315981415 3.976 ns/op BenchmarkIndex-4 294803466 4.028 ns/op BenchmarkIndex-4 294905323 4.114 ns/op BenchmarkIndex-4 310436251 3.900 ns/op BenchmarkIndex-4 315999276 3.883 ns/op BenchmarkLastIndex-4 340310408 3.527 ns/op BenchmarkLastIndex-4 340315311 3.526 ns/op BenchmarkLastIndex-4 340356468 3.526 ns/op BenchmarkLastIndex-4 340229196 3.526 ns/op BenchmarkLastIndex-4 340323332 3.526 ns/op BenchmarkLastIndex-4 340219753 3.526 ns/op BenchmarkLastIndex-4 340305746 3.526 ns/op BenchmarkLastIndex-4 340337365 3.526 ns/op BenchmarkLastIndex-4 340288230 3.526 ns/op BenchmarkLastIndex-4 340286378 3.526 ns/op BenchmarkIndexByte-4 442365868 2.713 ns/op BenchmarkIndexByte-4 442394978 2.713 ns/op BenchmarkIndexByte-4 442367337 2.713 ns/op BenchmarkIndexByte-4 442334821 2.713 ns/op BenchmarkIndexByte-4 442347295 2.713 ns/op BenchmarkIndexByte-4 442362816 2.713 ns/op BenchmarkIndexByte-4 442372062 2.713 ns/op BenchmarkIndexByte-4 442348717 2.713 ns/op BenchmarkIndexByte-4 442343305 2.713 ns/op BenchmarkIndexByte-4 442200823 2.713 ns/op BenchmarkEqualFold/ASCII-4 141580329 8.986 ns/op BenchmarkEqualFold/ASCII-4 134772141 8.681 ns/op BenchmarkEqualFold/ASCII-4 135339249 8.683 ns/op BenchmarkEqualFold/ASCII-4 133121407 8.416 ns/op BenchmarkEqualFold/ASCII-4 142483658 8.359 ns/op BenchmarkEqualFold/ASCII-4 142500204 8.385 ns/op BenchmarkEqualFold/ASCII-4 143376255 8.988 ns/op BenchmarkEqualFold/ASCII-4 143185546 8.437 ns/op BenchmarkEqualFold/ASCII-4 135475952 8.367 ns/op BenchmarkEqualFold/ASCII-4 142340653 8.891 ns/op BenchmarkEqualFold/UnicodePrefix-4 13616751 88.13 ns/op BenchmarkEqualFold/UnicodePrefix-4 13613869 88.12 ns/op BenchmarkEqualFold/UnicodePrefix-4 13638939 88.17 ns/op BenchmarkEqualFold/UnicodePrefix-4 13583856 88.10 ns/op BenchmarkEqualFold/UnicodePrefix-4 13620813 88.12 ns/op BenchmarkEqualFold/UnicodePrefix-4 13604667 88.14 ns/op BenchmarkEqualFold/UnicodePrefix-4 13618606 88.13 ns/op BenchmarkEqualFold/UnicodePrefix-4 13612402 88.17 ns/op BenchmarkEqualFold/UnicodePrefix-4 13611175 88.20 ns/op BenchmarkEqualFold/UnicodePrefix-4 13620034 88.18 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14574556 82.38 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14572076 82.35 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14598298 82.39 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14596722 82.39 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14546108 82.41 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14556474 82.32 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14586176 82.36 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14560106 82.34 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14571939 82.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14570551 82.42 ns/op BenchmarkIndexHard1-4 14715 81535 ns/op BenchmarkIndexHard1-4 14718 81536 ns/op BenchmarkIndexHard1-4 14716 81534 ns/op BenchmarkIndexHard1-4 14716 81535 ns/op BenchmarkIndexHard1-4 14716 81535 ns/op BenchmarkIndexHard1-4 14719 81518 ns/op BenchmarkIndexHard1-4 14715 81532 ns/op BenchmarkIndexHard1-4 14716 81529 ns/op BenchmarkIndexHard1-4 14716 81517 ns/op BenchmarkIndexHard1-4 14721 81517 ns/op BenchmarkIndexHard2-4 10494 114279 ns/op BenchmarkIndexHard2-4 10495 114286 ns/op BenchmarkIndexHard2-4 10494 114273 ns/op BenchmarkIndexHard2-4 10494 114290 ns/op BenchmarkIndexHard2-4 10495 114295 ns/op BenchmarkIndexHard2-4 10494 114283 ns/op BenchmarkIndexHard2-4 10495 114273 ns/op BenchmarkIndexHard2-4 10490 114309 ns/op BenchmarkIndexHard2-4 10492 114305 ns/op BenchmarkIndexHard2-4 10492 114303 ns/op BenchmarkIndexHard3-4 2092 548134 ns/op BenchmarkIndexHard3-4 2092 548266 ns/op BenchmarkIndexHard3-4 2092 548163 ns/op BenchmarkIndexHard3-4 2094 548195 ns/op BenchmarkIndexHard3-4 2094 548190 ns/op BenchmarkIndexHard3-4 2092 548170 ns/op BenchmarkIndexHard3-4 2094 548119 ns/op BenchmarkIndexHard3-4 2092 548093 ns/op BenchmarkIndexHard3-4 2092 548209 ns/op BenchmarkIndexHard3-4 2090 548166 ns/op BenchmarkIndexHard4-4 2071 559065 ns/op BenchmarkIndexHard4-4 2071 559131 ns/op BenchmarkIndexHard4-4 2072 559057 ns/op BenchmarkIndexHard4-4 2072 559068 ns/op BenchmarkIndexHard4-4 2072 559163 ns/op BenchmarkIndexHard4-4 2072 559105 ns/op BenchmarkIndexHard4-4 2071 559085 ns/op BenchmarkIndexHard4-4 2072 559047 ns/op BenchmarkIndexHard4-4 2072 559084 ns/op BenchmarkIndexHard4-4 2070 559084 ns/op BenchmarkLastIndexHard1-4 810 1451844 ns/op BenchmarkLastIndexHard1-4 811 1452220 ns/op BenchmarkLastIndexHard1-4 810 1451701 ns/op BenchmarkLastIndexHard1-4 810 1452358 ns/op BenchmarkLastIndexHard1-4 811 1452874 ns/op BenchmarkLastIndexHard1-4 811 1451971 ns/op BenchmarkLastIndexHard1-4 810 1452384 ns/op BenchmarkLastIndexHard1-4 810 1452016 ns/op BenchmarkLastIndexHard1-4 811 1452233 ns/op BenchmarkLastIndexHard1-4 810 1452043 ns/op BenchmarkLastIndexHard2-4 810 1452479 ns/op BenchmarkLastIndexHard2-4 810 1452453 ns/op BenchmarkLastIndexHard2-4 811 1452304 ns/op BenchmarkLastIndexHard2-4 810 1451860 ns/op BenchmarkLastIndexHard2-4 811 1452006 ns/op BenchmarkLastIndexHard2-4 810 1451896 ns/op BenchmarkLastIndexHard2-4 810 1452110 ns/op BenchmarkLastIndexHard2-4 810 1452335 ns/op BenchmarkLastIndexHard2-4 810 1452139 ns/op BenchmarkLastIndexHard2-4 810 1452148 ns/op BenchmarkLastIndexHard3-4 810 1451901 ns/op BenchmarkLastIndexHard3-4 811 1452177 ns/op BenchmarkLastIndexHard3-4 810 1452193 ns/op BenchmarkLastIndexHard3-4 810 1452054 ns/op BenchmarkLastIndexHard3-4 810 1451674 ns/op BenchmarkLastIndexHard3-4 810 1452234 ns/op BenchmarkLastIndexHard3-4 811 1452077 ns/op BenchmarkLastIndexHard3-4 811 1451888 ns/op BenchmarkLastIndexHard3-4 810 1452244 ns/op BenchmarkLastIndexHard3-4 810 1452524 ns/op BenchmarkCountHard1-4 14719 81517 ns/op BenchmarkCountHard1-4 14720 81513 ns/op BenchmarkCountHard1-4 14719 81521 ns/op BenchmarkCountHard1-4 14719 81511 ns/op BenchmarkCountHard1-4 14721 81521 ns/op BenchmarkCountHard1-4 14719 81510 ns/op BenchmarkCountHard1-4 14719 81511 ns/op BenchmarkCountHard1-4 14719 81516 ns/op BenchmarkCountHard1-4 14718 81521 ns/op BenchmarkCountHard1-4 14719 81514 ns/op BenchmarkCountHard2-4 10492 114309 ns/op BenchmarkCountHard2-4 10494 114302 ns/op BenchmarkCountHard2-4 10494 114311 ns/op BenchmarkCountHard2-4 10494 114301 ns/op BenchmarkCountHard2-4 10491 114308 ns/op BenchmarkCountHard2-4 10491 114296 ns/op BenchmarkCountHard2-4 10491 114305 ns/op BenchmarkCountHard2-4 10494 114305 ns/op BenchmarkCountHard2-4 10492 114311 ns/op BenchmarkCountHard2-4 10494 114307 ns/op BenchmarkCountHard3-4 2092 548183 ns/op BenchmarkCountHard3-4 2089 548178 ns/op BenchmarkCountHard3-4 2092 548215 ns/op BenchmarkCountHard3-4 2090 548185 ns/op BenchmarkCountHard3-4 2094 548143 ns/op BenchmarkCountHard3-4 2092 548163 ns/op BenchmarkCountHard3-4 2092 548213 ns/op BenchmarkCountHard3-4 2094 548161 ns/op BenchmarkCountHard3-4 2092 548127 ns/op BenchmarkCountHard3-4 2092 548241 ns/op BenchmarkIndexTorture-4 109045 11008 ns/op BenchmarkIndexTorture-4 108984 11006 ns/op BenchmarkIndexTorture-4 108930 11011 ns/op BenchmarkIndexTorture-4 108981 11007 ns/op BenchmarkIndexTorture-4 108958 11008 ns/op BenchmarkIndexTorture-4 108943 11006 ns/op BenchmarkIndexTorture-4 108986 11006 ns/op BenchmarkIndexTorture-4 109058 11010 ns/op BenchmarkIndexTorture-4 108978 11009 ns/op BenchmarkIndexTorture-4 108950 11009 ns/op BenchmarkCountTorture-4 108859 11013 ns/op BenchmarkCountTorture-4 108950 11012 ns/op BenchmarkCountTorture-4 108931 11011 ns/op BenchmarkCountTorture-4 108955 11015 ns/op BenchmarkCountTorture-4 108969 11011 ns/op BenchmarkCountTorture-4 108998 11013 ns/op BenchmarkCountTorture-4 108926 11010 ns/op BenchmarkCountTorture-4 108900 11008 ns/op BenchmarkCountTorture-4 108918 11012 ns/op BenchmarkCountTorture-4 108942 11013 ns/op BenchmarkCountTortureOverlapping-4 27325 44037 ns/op BenchmarkCountTortureOverlapping-4 27243 44491 ns/op BenchmarkCountTortureOverlapping-4 27316 43657 ns/op BenchmarkCountTortureOverlapping-4 27082 43729 ns/op BenchmarkCountTortureOverlapping-4 27386 44281 ns/op BenchmarkCountTortureOverlapping-4 27304 43964 ns/op BenchmarkCountTortureOverlapping-4 27362 43781 ns/op BenchmarkCountTortureOverlapping-4 27222 44250 ns/op BenchmarkCountTortureOverlapping-4 27254 43738 ns/op BenchmarkCountTortureOverlapping-4 27277 44143 ns/op BenchmarkCountByte/10-4 295500397 4.065 ns/op 2460.06 MB/s BenchmarkCountByte/10-4 295462162 4.065 ns/op 2460.19 MB/s BenchmarkCountByte/10-4 295563105 4.067 ns/op 2458.80 MB/s BenchmarkCountByte/10-4 295591476 4.067 ns/op 2458.96 MB/s BenchmarkCountByte/10-4 295590777 4.066 ns/op 2459.19 MB/s BenchmarkCountByte/10-4 295670833 4.067 ns/op 2458.98 MB/s BenchmarkCountByte/10-4 295638854 4.066 ns/op 2459.29 MB/s BenchmarkCountByte/10-4 295604088 4.067 ns/op 2459.08 MB/s BenchmarkCountByte/10-4 295665894 4.066 ns/op 2459.30 MB/s BenchmarkCountByte/10-4 295675780 4.066 ns/op 2459.46 MB/s BenchmarkCountByte/32-4 260747664 4.607 ns/op 6945.81 MB/s BenchmarkCountByte/32-4 260625668 4.608 ns/op 6944.66 MB/s BenchmarkCountByte/32-4 260837838 4.609 ns/op 6942.93 MB/s BenchmarkCountByte/32-4 260722328 4.607 ns/op 6945.22 MB/s BenchmarkCountByte/32-4 260627887 4.608 ns/op 6944.45 MB/s BenchmarkCountByte/32-4 260808670 4.609 ns/op 6943.38 MB/s BenchmarkCountByte/32-4 260698398 4.608 ns/op 6944.97 MB/s BenchmarkCountByte/32-4 260625208 4.608 ns/op 6943.78 MB/s BenchmarkCountByte/32-4 260851065 4.609 ns/op 6942.97 MB/s BenchmarkCountByte/32-4 260201833 4.608 ns/op 6944.54 MB/s BenchmarkCountByte/4K-4 13342111 88.78 ns/op 46138.55 MB/s BenchmarkCountByte/4K-4 13222209 89.34 ns/op 45849.72 MB/s BenchmarkCountByte/4K-4 13289080 88.89 ns/op 46080.25 MB/s BenchmarkCountByte/4K-4 13296194 89.16 ns/op 45941.99 MB/s BenchmarkCountByte/4K-4 13343485 88.90 ns/op 46075.58 MB/s BenchmarkCountByte/4K-4 13368879 88.96 ns/op 46041.61 MB/s BenchmarkCountByte/4K-4 13299672 89.10 ns/op 45969.74 MB/s BenchmarkCountByte/4K-4 13220164 88.95 ns/op 46047.82 MB/s BenchmarkCountByte/4K-4 13448132 89.40 ns/op 45815.44 MB/s BenchmarkCountByte/4K-4 13445610 89.03 ns/op 46009.37 MB/s BenchmarkCountByte/4M-4 13530 88870 ns/op 47195.76 MB/s BenchmarkCountByte/4M-4 13524 88922 ns/op 47168.27 MB/s BenchmarkCountByte/4M-4 13515 88650 ns/op 47313.27 MB/s BenchmarkCountByte/4M-4 13503 88635 ns/op 47321.32 MB/s BenchmarkCountByte/4M-4 13528 88747 ns/op 47261.59 MB/s BenchmarkCountByte/4M-4 13489 88845 ns/op 47209.22 MB/s BenchmarkCountByte/4M-4 13486 88590 ns/op 47345.11 MB/s BenchmarkCountByte/4M-4 13530 88518 ns/op 47383.55 MB/s BenchmarkCountByte/4M-4 13531 88845 ns/op 47209.21 MB/s BenchmarkCountByte/4M-4 13532 88716 ns/op 47278.03 MB/s BenchmarkCountByte/64M-4 691 1697134 ns/op 39542.46 MB/s BenchmarkCountByte/64M-4 691 1698495 ns/op 39510.79 MB/s BenchmarkCountByte/64M-4 692 1697604 ns/op 39531.51 MB/s BenchmarkCountByte/64M-4 691 1698213 ns/op 39517.35 MB/s BenchmarkCountByte/64M-4 691 1694661 ns/op 39600.16 MB/s BenchmarkCountByte/64M-4 691 1697839 ns/op 39526.05 MB/s BenchmarkCountByte/64M-4 692 1697744 ns/op 39528.27 MB/s BenchmarkCountByte/64M-4 690 1699211 ns/op 39494.14 MB/s BenchmarkCountByte/64M-4 692 1697384 ns/op 39536.65 MB/s BenchmarkCountByte/64M-4 691 1698204 ns/op 39517.56 MB/s BenchmarkIndexAnyASCII/1:1-4 222014392 5.573 ns/op BenchmarkIndexAnyASCII/1:1-4 232784452 5.350 ns/op BenchmarkIndexAnyASCII/1:1-4 221191339 5.425 ns/op BenchmarkIndexAnyASCII/1:1-4 221776587 5.639 ns/op BenchmarkIndexAnyASCII/1:1-4 216006583 5.663 ns/op BenchmarkIndexAnyASCII/1:1-4 221433573 5.412 ns/op BenchmarkIndexAnyASCII/1:1-4 218368869 5.421 ns/op BenchmarkIndexAnyASCII/1:1-4 213625926 5.551 ns/op BenchmarkIndexAnyASCII/1:1-4 231011926 5.581 ns/op BenchmarkIndexAnyASCII/1:1-4 223713688 5.616 ns/op BenchmarkIndexAnyASCII/1:2-4 193519089 6.476 ns/op BenchmarkIndexAnyASCII/1:2-4 202429309 6.114 ns/op BenchmarkIndexAnyASCII/1:2-4 202665434 6.088 ns/op BenchmarkIndexAnyASCII/1:2-4 198352425 6.188 ns/op BenchmarkIndexAnyASCII/1:2-4 198116695 6.096 ns/op BenchmarkIndexAnyASCII/1:2-4 198603519 6.059 ns/op BenchmarkIndexAnyASCII/1:2-4 202191270 6.197 ns/op BenchmarkIndexAnyASCII/1:2-4 207497125 6.271 ns/op BenchmarkIndexAnyASCII/1:2-4 208485621 6.162 ns/op BenchmarkIndexAnyASCII/1:2-4 201262732 6.143 ns/op BenchmarkIndexAnyASCII/1:4-4 205387351 6.071 ns/op BenchmarkIndexAnyASCII/1:4-4 200460138 6.169 ns/op BenchmarkIndexAnyASCII/1:4-4 191792594 6.240 ns/op BenchmarkIndexAnyASCII/1:4-4 195763840 6.212 ns/op BenchmarkIndexAnyASCII/1:4-4 197147078 6.045 ns/op BenchmarkIndexAnyASCII/1:4-4 210677636 6.193 ns/op BenchmarkIndexAnyASCII/1:4-4 202306898 5.993 ns/op BenchmarkIndexAnyASCII/1:4-4 203687348 6.162 ns/op BenchmarkIndexAnyASCII/1:4-4 204419032 6.156 ns/op BenchmarkIndexAnyASCII/1:4-4 204965013 5.978 ns/op BenchmarkIndexAnyASCII/1:8-4 194836618 6.023 ns/op BenchmarkIndexAnyASCII/1:8-4 196346312 6.125 ns/op BenchmarkIndexAnyASCII/1:8-4 201141100 6.161 ns/op BenchmarkIndexAnyASCII/1:8-4 194170444 6.375 ns/op BenchmarkIndexAnyASCII/1:8-4 193642111 6.096 ns/op BenchmarkIndexAnyASCII/1:8-4 193261347 6.178 ns/op BenchmarkIndexAnyASCII/1:8-4 197031662 6.208 ns/op BenchmarkIndexAnyASCII/1:8-4 194614208 6.285 ns/op BenchmarkIndexAnyASCII/1:8-4 209134297 6.103 ns/op BenchmarkIndexAnyASCII/1:8-4 195959778 6.414 ns/op BenchmarkIndexAnyASCII/1:16-4 192797251 6.147 ns/op BenchmarkIndexAnyASCII/1:16-4 202557673 6.268 ns/op BenchmarkIndexAnyASCII/1:16-4 194845010 5.864 ns/op BenchmarkIndexAnyASCII/1:16-4 188717028 6.444 ns/op BenchmarkIndexAnyASCII/1:16-4 204319090 6.496 ns/op BenchmarkIndexAnyASCII/1:16-4 210658732 6.456 ns/op BenchmarkIndexAnyASCII/1:16-4 203246978 6.095 ns/op BenchmarkIndexAnyASCII/1:16-4 185576372 6.478 ns/op BenchmarkIndexAnyASCII/1:16-4 185247595 6.566 ns/op BenchmarkIndexAnyASCII/1:16-4 204816272 6.076 ns/op BenchmarkIndexAnyASCII/1:32-4 188286067 6.586 ns/op BenchmarkIndexAnyASCII/1:32-4 182296383 6.669 ns/op BenchmarkIndexAnyASCII/1:32-4 195519092 6.199 ns/op BenchmarkIndexAnyASCII/1:32-4 189048908 6.373 ns/op BenchmarkIndexAnyASCII/1:32-4 183130678 6.781 ns/op BenchmarkIndexAnyASCII/1:32-4 178311172 6.365 ns/op BenchmarkIndexAnyASCII/1:32-4 184656561 6.440 ns/op BenchmarkIndexAnyASCII/1:32-4 193188544 6.477 ns/op BenchmarkIndexAnyASCII/1:32-4 187634202 6.513 ns/op BenchmarkIndexAnyASCII/1:32-4 184850234 6.126 ns/op BenchmarkIndexAnyASCII/1:64-4 192352146 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192331570 6.237 ns/op BenchmarkIndexAnyASCII/1:64-4 192333472 6.238 ns/op BenchmarkIndexAnyASCII/1:64-4 192348138 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192324027 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192350218 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192339589 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192327800 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192338318 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192362569 6.362 ns/op BenchmarkIndexAnyASCII/16:1-4 219059140 5.844 ns/op BenchmarkIndexAnyASCII/16:1-4 223354252 5.951 ns/op BenchmarkIndexAnyASCII/16:1-4 222494182 5.354 ns/op BenchmarkIndexAnyASCII/16:1-4 232843308 5.921 ns/op BenchmarkIndexAnyASCII/16:1-4 206463658 5.289 ns/op BenchmarkIndexAnyASCII/16:1-4 216026629 5.756 ns/op BenchmarkIndexAnyASCII/16:1-4 224203801 5.851 ns/op BenchmarkIndexAnyASCII/16:1-4 204295852 5.800 ns/op BenchmarkIndexAnyASCII/16:1-4 205756256 5.709 ns/op BenchmarkIndexAnyASCII/16:1-4 225445156 5.648 ns/op BenchmarkIndexAnyASCII/16:2-4 81115122 14.82 ns/op BenchmarkIndexAnyASCII/16:2-4 79801087 14.84 ns/op BenchmarkIndexAnyASCII/16:2-4 81182454 14.85 ns/op BenchmarkIndexAnyASCII/16:2-4 80926674 14.85 ns/op BenchmarkIndexAnyASCII/16:2-4 80692616 14.83 ns/op BenchmarkIndexAnyASCII/16:2-4 81019938 14.82 ns/op BenchmarkIndexAnyASCII/16:2-4 81127789 14.85 ns/op BenchmarkIndexAnyASCII/16:2-4 80541134 14.85 ns/op BenchmarkIndexAnyASCII/16:2-4 81024368 14.82 ns/op BenchmarkIndexAnyASCII/16:2-4 80607955 14.86 ns/op BenchmarkIndexAnyASCII/16:4-4 68026458 17.60 ns/op BenchmarkIndexAnyASCII/16:4-4 68142229 17.61 ns/op BenchmarkIndexAnyASCII/16:4-4 68161934 17.61 ns/op BenchmarkIndexAnyASCII/16:4-4 68201487 17.60 ns/op BenchmarkIndexAnyASCII/16:4-4 68153374 17.61 ns/op BenchmarkIndexAnyASCII/16:4-4 68181337 17.60 ns/op BenchmarkIndexAnyASCII/16:4-4 68155969 17.60 ns/op BenchmarkIndexAnyASCII/16:4-4 68097145 17.61 ns/op BenchmarkIndexAnyASCII/16:4-4 68137125 17.60 ns/op BenchmarkIndexAnyASCII/16:4-4 68137160 17.61 ns/op BenchmarkIndexAnyASCII/16:8-4 50554222 23.74 ns/op BenchmarkIndexAnyASCII/16:8-4 50388918 23.73 ns/op BenchmarkIndexAnyASCII/16:8-4 50578280 23.75 ns/op BenchmarkIndexAnyASCII/16:8-4 50561508 23.74 ns/op BenchmarkIndexAnyASCII/16:8-4 50498244 23.75 ns/op BenchmarkIndexAnyASCII/16:8-4 50537739 23.75 ns/op BenchmarkIndexAnyASCII/16:8-4 50542910 23.75 ns/op BenchmarkIndexAnyASCII/16:8-4 50563144 23.75 ns/op BenchmarkIndexAnyASCII/16:8-4 50552451 23.74 ns/op BenchmarkIndexAnyASCII/16:8-4 50552707 23.75 ns/op BenchmarkIndexAnyASCII/16:16-4 34907304 34.48 ns/op BenchmarkIndexAnyASCII/16:16-4 34082008 34.41 ns/op BenchmarkIndexAnyASCII/16:16-4 34842932 34.51 ns/op BenchmarkIndexAnyASCII/16:16-4 34991248 34.40 ns/op BenchmarkIndexAnyASCII/16:16-4 35000434 34.56 ns/op BenchmarkIndexAnyASCII/16:16-4 34986147 34.60 ns/op BenchmarkIndexAnyASCII/16:16-4 34883812 34.43 ns/op BenchmarkIndexAnyASCII/16:16-4 34035340 34.85 ns/op BenchmarkIndexAnyASCII/16:16-4 34369548 34.63 ns/op BenchmarkIndexAnyASCII/16:16-4 35027725 34.51 ns/op BenchmarkIndexAnyASCII/16:32-4 19896645 60.93 ns/op BenchmarkIndexAnyASCII/16:32-4 19764832 60.79 ns/op BenchmarkIndexAnyASCII/16:32-4 19868518 60.68 ns/op BenchmarkIndexAnyASCII/16:32-4 19316386 61.09 ns/op BenchmarkIndexAnyASCII/16:32-4 19799365 60.88 ns/op BenchmarkIndexAnyASCII/16:32-4 19670938 60.89 ns/op BenchmarkIndexAnyASCII/16:32-4 20077562 60.69 ns/op BenchmarkIndexAnyASCII/16:32-4 19900717 60.85 ns/op BenchmarkIndexAnyASCII/16:32-4 19611244 60.78 ns/op BenchmarkIndexAnyASCII/16:32-4 19883234 60.31 ns/op BenchmarkIndexAnyASCII/16:64-4 12243266 101.0 ns/op BenchmarkIndexAnyASCII/16:64-4 11995179 102.3 ns/op BenchmarkIndexAnyASCII/16:64-4 12069289 100.1 ns/op BenchmarkIndexAnyASCII/16:64-4 12046671 101.1 ns/op BenchmarkIndexAnyASCII/16:64-4 11540347 100.5 ns/op BenchmarkIndexAnyASCII/16:64-4 12129553 100.9 ns/op BenchmarkIndexAnyASCII/16:64-4 11530122 102.7 ns/op BenchmarkIndexAnyASCII/16:64-4 12406990 101.3 ns/op BenchmarkIndexAnyASCII/16:64-4 12289082 102.5 ns/op BenchmarkIndexAnyASCII/16:64-4 12087783 100.6 ns/op BenchmarkIndexAnyASCII/256:1-4 144969088 8.280 ns/op BenchmarkIndexAnyASCII/256:1-4 139998128 8.271 ns/op BenchmarkIndexAnyASCII/256:1-4 145978152 8.363 ns/op BenchmarkIndexAnyASCII/256:1-4 142840117 8.395 ns/op BenchmarkIndexAnyASCII/256:1-4 144893901 8.377 ns/op BenchmarkIndexAnyASCII/256:1-4 147497121 8.176 ns/op BenchmarkIndexAnyASCII/256:1-4 143146371 8.554 ns/op BenchmarkIndexAnyASCII/256:1-4 145141003 8.302 ns/op BenchmarkIndexAnyASCII/256:1-4 143018061 8.679 ns/op BenchmarkIndexAnyASCII/256:1-4 144055660 8.136 ns/op BenchmarkIndexAnyASCII/256:2-4 8336007 143.6 ns/op BenchmarkIndexAnyASCII/256:2-4 8322516 143.8 ns/op BenchmarkIndexAnyASCII/256:2-4 8368312 143.7 ns/op BenchmarkIndexAnyASCII/256:2-4 8382108 144.0 ns/op BenchmarkIndexAnyASCII/256:2-4 8347539 143.5 ns/op BenchmarkIndexAnyASCII/256:2-4 8332749 143.7 ns/op BenchmarkIndexAnyASCII/256:2-4 8312516 144.4 ns/op BenchmarkIndexAnyASCII/256:2-4 8288566 144.4 ns/op BenchmarkIndexAnyASCII/256:2-4 8296566 143.8 ns/op BenchmarkIndexAnyASCII/256:2-4 8194291 144.1 ns/op BenchmarkIndexAnyASCII/256:4-4 8131178 147.5 ns/op BenchmarkIndexAnyASCII/256:4-4 8038809 147.9 ns/op BenchmarkIndexAnyASCII/256:4-4 8151132 147.2 ns/op BenchmarkIndexAnyASCII/256:4-4 8145168 147.8 ns/op BenchmarkIndexAnyASCII/256:4-4 8129523 147.7 ns/op BenchmarkIndexAnyASCII/256:4-4 8073254 147.8 ns/op BenchmarkIndexAnyASCII/256:4-4 8163560 147.4 ns/op BenchmarkIndexAnyASCII/256:4-4 8176677 147.0 ns/op BenchmarkIndexAnyASCII/256:4-4 8144752 147.6 ns/op BenchmarkIndexAnyASCII/256:4-4 8140266 147.6 ns/op BenchmarkIndexAnyASCII/256:8-4 7621840 157.4 ns/op BenchmarkIndexAnyASCII/256:8-4 7675082 157.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7664392 157.3 ns/op BenchmarkIndexAnyASCII/256:8-4 7672678 157.0 ns/op BenchmarkIndexAnyASCII/256:8-4 7664682 156.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7641160 157.3 ns/op BenchmarkIndexAnyASCII/256:8-4 7611124 156.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7635496 156.7 ns/op BenchmarkIndexAnyASCII/256:8-4 7666432 157.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7664244 157.0 ns/op BenchmarkIndexAnyASCII/256:16-4 7333273 162.7 ns/op BenchmarkIndexAnyASCII/256:16-4 7404519 163.0 ns/op BenchmarkIndexAnyASCII/256:16-4 7292535 163.1 ns/op BenchmarkIndexAnyASCII/256:16-4 7376702 163.4 ns/op BenchmarkIndexAnyASCII/256:16-4 7380692 162.6 ns/op BenchmarkIndexAnyASCII/256:16-4 7403569 163.2 ns/op BenchmarkIndexAnyASCII/256:16-4 7400452 163.5 ns/op BenchmarkIndexAnyASCII/256:16-4 7340427 162.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7376412 162.7 ns/op BenchmarkIndexAnyASCII/256:16-4 7342074 162.8 ns/op BenchmarkIndexAnyASCII/256:32-4 6840004 172.4 ns/op BenchmarkIndexAnyASCII/256:32-4 6988358 171.8 ns/op BenchmarkIndexAnyASCII/256:32-4 6984530 171.8 ns/op BenchmarkIndexAnyASCII/256:32-4 6986924 172.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6980215 172.0 ns/op BenchmarkIndexAnyASCII/256:32-4 6975182 172.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6982108 172.4 ns/op BenchmarkIndexAnyASCII/256:32-4 7004480 172.5 ns/op BenchmarkIndexAnyASCII/256:32-4 6935126 172.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6990478 172.1 ns/op BenchmarkIndexAnyASCII/256:64-4 5561601 216.9 ns/op BenchmarkIndexAnyASCII/256:64-4 5493156 217.4 ns/op BenchmarkIndexAnyASCII/256:64-4 5520972 217.7 ns/op BenchmarkIndexAnyASCII/256:64-4 5563077 216.0 ns/op BenchmarkIndexAnyASCII/256:64-4 5442292 216.8 ns/op BenchmarkIndexAnyASCII/256:64-4 5545316 217.6 ns/op BenchmarkIndexAnyASCII/256:64-4 5564827 217.5 ns/op BenchmarkIndexAnyASCII/256:64-4 5537695 216.7 ns/op BenchmarkIndexAnyASCII/256:64-4 5526874 217.3 ns/op BenchmarkIndexAnyASCII/256:64-4 5525696 217.4 ns/op BenchmarkIndexAnyUTF8/1:1-4 294961062 4.212 ns/op BenchmarkIndexAnyUTF8/1:1-4 294973293 4.321 ns/op BenchmarkIndexAnyUTF8/1:1-4 294984931 4.322 ns/op BenchmarkIndexAnyUTF8/1:1-4 294917262 4.068 ns/op BenchmarkIndexAnyUTF8/1:1-4 285406609 4.069 ns/op BenchmarkIndexAnyUTF8/1:1-4 294986526 4.068 ns/op BenchmarkIndexAnyUTF8/1:1-4 284840581 4.068 ns/op BenchmarkIndexAnyUTF8/1:1-4 295003618 4.159 ns/op BenchmarkIndexAnyUTF8/1:1-4 294935143 4.339 ns/op BenchmarkIndexAnyUTF8/1:1-4 294906694 4.191 ns/op BenchmarkIndexAnyUTF8/1:2-4 194999832 6.138 ns/op BenchmarkIndexAnyUTF8/1:2-4 210696472 6.052 ns/op BenchmarkIndexAnyUTF8/1:2-4 210678458 6.105 ns/op BenchmarkIndexAnyUTF8/1:2-4 200199397 5.969 ns/op BenchmarkIndexAnyUTF8/1:2-4 210367645 6.258 ns/op BenchmarkIndexAnyUTF8/1:2-4 197624418 6.228 ns/op BenchmarkIndexAnyUTF8/1:2-4 193688112 6.199 ns/op BenchmarkIndexAnyUTF8/1:2-4 193507352 6.125 ns/op BenchmarkIndexAnyUTF8/1:2-4 198876397 6.178 ns/op BenchmarkIndexAnyUTF8/1:2-4 207739515 5.932 ns/op BenchmarkIndexAnyUTF8/1:4-4 197177526 6.328 ns/op BenchmarkIndexAnyUTF8/1:4-4 210615106 6.185 ns/op BenchmarkIndexAnyUTF8/1:4-4 196300593 6.113 ns/op BenchmarkIndexAnyUTF8/1:4-4 203895928 6.164 ns/op BenchmarkIndexAnyUTF8/1:4-4 195063706 6.150 ns/op BenchmarkIndexAnyUTF8/1:4-4 202988386 6.204 ns/op BenchmarkIndexAnyUTF8/1:4-4 210637911 5.965 ns/op BenchmarkIndexAnyUTF8/1:4-4 202616836 6.160 ns/op BenchmarkIndexAnyUTF8/1:4-4 195235380 6.048 ns/op BenchmarkIndexAnyUTF8/1:4-4 201718369 6.193 ns/op BenchmarkIndexAnyUTF8/1:8-4 194218896 6.232 ns/op BenchmarkIndexAnyUTF8/1:8-4 190108512 6.510 ns/op BenchmarkIndexAnyUTF8/1:8-4 201162237 6.239 ns/op BenchmarkIndexAnyUTF8/1:8-4 197308293 6.352 ns/op BenchmarkIndexAnyUTF8/1:8-4 196827601 6.199 ns/op BenchmarkIndexAnyUTF8/1:8-4 202518141 6.240 ns/op BenchmarkIndexAnyUTF8/1:8-4 193330530 6.049 ns/op BenchmarkIndexAnyUTF8/1:8-4 201316155 6.138 ns/op BenchmarkIndexAnyUTF8/1:8-4 197244745 6.510 ns/op BenchmarkIndexAnyUTF8/1:8-4 196406696 6.161 ns/op BenchmarkIndexAnyUTF8/1:16-4 199421004 6.607 ns/op BenchmarkIndexAnyUTF8/1:16-4 202527746 6.239 ns/op BenchmarkIndexAnyUTF8/1:16-4 183789458 6.177 ns/op BenchmarkIndexAnyUTF8/1:16-4 193243378 6.100 ns/op BenchmarkIndexAnyUTF8/1:16-4 180774433 6.332 ns/op BenchmarkIndexAnyUTF8/1:16-4 186611872 6.433 ns/op BenchmarkIndexAnyUTF8/1:16-4 192962329 6.431 ns/op BenchmarkIndexAnyUTF8/1:16-4 191179785 6.439 ns/op BenchmarkIndexAnyUTF8/1:16-4 185121303 6.345 ns/op BenchmarkIndexAnyUTF8/1:16-4 186456735 6.429 ns/op BenchmarkIndexAnyUTF8/1:32-4 185030640 6.318 ns/op BenchmarkIndexAnyUTF8/1:32-4 179886130 6.878 ns/op BenchmarkIndexAnyUTF8/1:32-4 186402157 6.448 ns/op BenchmarkIndexAnyUTF8/1:32-4 184383270 6.433 ns/op BenchmarkIndexAnyUTF8/1:32-4 191200959 6.728 ns/op BenchmarkIndexAnyUTF8/1:32-4 186581019 6.637 ns/op BenchmarkIndexAnyUTF8/1:32-4 187230601 6.982 ns/op BenchmarkIndexAnyUTF8/1:32-4 181932898 6.691 ns/op BenchmarkIndexAnyUTF8/1:32-4 201126424 6.698 ns/op BenchmarkIndexAnyUTF8/1:32-4 192437498 6.657 ns/op BenchmarkIndexAnyUTF8/1:64-4 192363211 6.238 ns/op BenchmarkIndexAnyUTF8/1:64-4 192359595 6.238 ns/op BenchmarkIndexAnyUTF8/1:64-4 192367689 6.238 ns/op BenchmarkIndexAnyUTF8/1:64-4 192350372 6.323 ns/op BenchmarkIndexAnyUTF8/1:64-4 192367520 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192358167 6.245 ns/op BenchmarkIndexAnyUTF8/1:64-4 192373101 6.238 ns/op BenchmarkIndexAnyUTF8/1:64-4 192350521 6.238 ns/op BenchmarkIndexAnyUTF8/1:64-4 192372504 6.238 ns/op BenchmarkIndexAnyUTF8/1:64-4 192352735 6.238 ns/op BenchmarkIndexAnyUTF8/16:1-4 92161155 13.76 ns/op BenchmarkIndexAnyUTF8/16:1-4 86896110 14.47 ns/op BenchmarkIndexAnyUTF8/16:1-4 89548348 13.82 ns/op BenchmarkIndexAnyUTF8/16:1-4 89994945 13.71 ns/op BenchmarkIndexAnyUTF8/16:1-4 91706092 14.30 ns/op BenchmarkIndexAnyUTF8/16:1-4 88791460 14.02 ns/op BenchmarkIndexAnyUTF8/16:1-4 92144652 13.99 ns/op BenchmarkIndexAnyUTF8/16:1-4 90254594 14.26 ns/op BenchmarkIndexAnyUTF8/16:1-4 76197645 13.92 ns/op BenchmarkIndexAnyUTF8/16:1-4 90532543 13.73 ns/op BenchmarkIndexAnyUTF8/16:2-4 19064337 63.97 ns/op BenchmarkIndexAnyUTF8/16:2-4 18992942 63.87 ns/op BenchmarkIndexAnyUTF8/16:2-4 19038999 63.97 ns/op BenchmarkIndexAnyUTF8/16:2-4 19008834 63.95 ns/op BenchmarkIndexAnyUTF8/16:2-4 19016049 63.86 ns/op BenchmarkIndexAnyUTF8/16:2-4 19045010 63.96 ns/op BenchmarkIndexAnyUTF8/16:2-4 19009374 68.27 ns/op BenchmarkIndexAnyUTF8/16:2-4 17734510 63.95 ns/op BenchmarkIndexAnyUTF8/16:2-4 19123381 63.96 ns/op BenchmarkIndexAnyUTF8/16:2-4 18964436 64.01 ns/op BenchmarkIndexAnyUTF8/16:4-4 19012003 63.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 19023109 63.80 ns/op BenchmarkIndexAnyUTF8/16:4-4 19169601 63.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 18972652 63.95 ns/op BenchmarkIndexAnyUTF8/16:4-4 19026734 63.98 ns/op BenchmarkIndexAnyUTF8/16:4-4 18994668 63.87 ns/op BenchmarkIndexAnyUTF8/16:4-4 19045810 63.96 ns/op BenchmarkIndexAnyUTF8/16:4-4 19003869 63.93 ns/op BenchmarkIndexAnyUTF8/16:4-4 19030563 63.96 ns/op BenchmarkIndexAnyUTF8/16:4-4 19002522 63.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 19477159 64.02 ns/op BenchmarkIndexAnyUTF8/16:8-4 19042951 64.01 ns/op BenchmarkIndexAnyUTF8/16:8-4 18749035 63.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 19110692 63.95 ns/op BenchmarkIndexAnyUTF8/16:8-4 18976849 63.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 18723715 64.02 ns/op BenchmarkIndexAnyUTF8/16:8-4 19166245 63.95 ns/op BenchmarkIndexAnyUTF8/16:8-4 18960501 63.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 19046590 63.97 ns/op BenchmarkIndexAnyUTF8/16:8-4 18744627 63.94 ns/op BenchmarkIndexAnyUTF8/16:16-4 17555690 67.99 ns/op BenchmarkIndexAnyUTF8/16:16-4 17843872 66.53 ns/op BenchmarkIndexAnyUTF8/16:16-4 19166190 64.32 ns/op BenchmarkIndexAnyUTF8/16:16-4 17520453 68.28 ns/op BenchmarkIndexAnyUTF8/16:16-4 18093622 66.51 ns/op BenchmarkIndexAnyUTF8/16:16-4 16513204 68.33 ns/op BenchmarkIndexAnyUTF8/16:16-4 17884396 68.42 ns/op BenchmarkIndexAnyUTF8/16:16-4 18063331 68.29 ns/op BenchmarkIndexAnyUTF8/16:16-4 17789280 66.55 ns/op BenchmarkIndexAnyUTF8/16:16-4 19174863 66.83 ns/op BenchmarkIndexAnyUTF8/16:32-4 16724248 68.35 ns/op BenchmarkIndexAnyUTF8/16:32-4 17434408 68.35 ns/op BenchmarkIndexAnyUTF8/16:32-4 17741337 70.61 ns/op BenchmarkIndexAnyUTF8/16:32-4 17504509 70.24 ns/op BenchmarkIndexAnyUTF8/16:32-4 17466370 68.37 ns/op BenchmarkIndexAnyUTF8/16:32-4 17500102 68.36 ns/op BenchmarkIndexAnyUTF8/16:32-4 17549886 68.37 ns/op BenchmarkIndexAnyUTF8/16:32-4 17594340 68.36 ns/op BenchmarkIndexAnyUTF8/16:32-4 17492266 68.34 ns/op BenchmarkIndexAnyUTF8/16:32-4 17520298 68.38 ns/op BenchmarkIndexAnyUTF8/16:64-4 17273485 67.88 ns/op BenchmarkIndexAnyUTF8/16:64-4 17408972 67.96 ns/op BenchmarkIndexAnyUTF8/16:64-4 17469434 67.86 ns/op BenchmarkIndexAnyUTF8/16:64-4 17696391 67.90 ns/op BenchmarkIndexAnyUTF8/16:64-4 17691198 68.19 ns/op BenchmarkIndexAnyUTF8/16:64-4 17696468 67.88 ns/op BenchmarkIndexAnyUTF8/16:64-4 17695627 67.88 ns/op BenchmarkIndexAnyUTF8/16:64-4 17410330 68.16 ns/op BenchmarkIndexAnyUTF8/16:64-4 17340495 67.97 ns/op BenchmarkIndexAnyUTF8/16:64-4 17346937 67.91 ns/op BenchmarkIndexAnyUTF8/256:1-4 7984598 149.6 ns/op BenchmarkIndexAnyUTF8/256:1-4 8102644 150.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 8062050 151.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 8060313 151.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 8047845 150.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 8068917 151.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 7993932 151.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 7823071 150.7 ns/op BenchmarkIndexAnyUTF8/256:1-4 7845513 150.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 7965225 150.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:2-4 1224814 980.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1225444 979.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1225294 979.7 ns/op BenchmarkIndexAnyUTF8/256:2-4 1225111 979.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 1224897 980.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 1224634 979.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1225448 979.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1225209 1049 ns/op BenchmarkIndexAnyUTF8/256:2-4 1225515 979.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225273 980.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 1224982 979.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 1224962 980.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225516 979.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225399 979.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225294 979.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:4-4 1224991 979.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 1224762 979.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225461 979.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 1225411 979.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 1225233 979.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:8-4 1224961 980.0 ns/op BenchmarkIndexAnyUTF8/256:8-4 1224739 980.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1225329 979.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:8-4 1225195 979.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 1224946 1049 ns/op BenchmarkIndexAnyUTF8/256:8-4 1225282 979.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:16-4 1000000 1049 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1119 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1119 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1119 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1119 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1119 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1119 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1119 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1118 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1118 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1118 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkLastIndexAnyASCII/1:1-4 230198888 5.355 ns/op BenchmarkLastIndexAnyASCII/1:1-4 221163666 5.413 ns/op BenchmarkLastIndexAnyASCII/1:1-4 230209986 5.247 ns/op BenchmarkLastIndexAnyASCII/1:1-4 224852026 5.400 ns/op BenchmarkLastIndexAnyASCII/1:1-4 223972003 5.330 ns/op BenchmarkLastIndexAnyASCII/1:1-4 230798802 5.303 ns/op BenchmarkLastIndexAnyASCII/1:1-4 221545534 5.392 ns/op BenchmarkLastIndexAnyASCII/1:1-4 221196370 5.348 ns/op BenchmarkLastIndexAnyASCII/1:1-4 222141898 5.393 ns/op BenchmarkLastIndexAnyASCII/1:1-4 233113562 5.423 ns/op BenchmarkLastIndexAnyASCII/1:2-4 233126850 5.224 ns/op BenchmarkLastIndexAnyASCII/1:2-4 233277873 5.289 ns/op BenchmarkLastIndexAnyASCII/1:2-4 225979014 5.261 ns/op BenchmarkLastIndexAnyASCII/1:2-4 233216640 5.318 ns/op BenchmarkLastIndexAnyASCII/1:2-4 233098076 5.412 ns/op BenchmarkLastIndexAnyASCII/1:2-4 221186598 5.403 ns/op BenchmarkLastIndexAnyASCII/1:2-4 223956828 5.415 ns/op BenchmarkLastIndexAnyASCII/1:2-4 227550366 5.426 ns/op BenchmarkLastIndexAnyASCII/1:2-4 225834615 5.425 ns/op BenchmarkLastIndexAnyASCII/1:2-4 224586888 5.413 ns/op BenchmarkLastIndexAnyASCII/1:4-4 222704536 5.325 ns/op BenchmarkLastIndexAnyASCII/1:4-4 223328541 5.413 ns/op BenchmarkLastIndexAnyASCII/1:4-4 233078560 5.389 ns/op BenchmarkLastIndexAnyASCII/1:4-4 231557043 5.425 ns/op BenchmarkLastIndexAnyASCII/1:4-4 222187479 5.331 ns/op BenchmarkLastIndexAnyASCII/1:4-4 226361953 5.425 ns/op BenchmarkLastIndexAnyASCII/1:4-4 221190026 5.426 ns/op BenchmarkLastIndexAnyASCII/1:4-4 221186569 5.356 ns/op BenchmarkLastIndexAnyASCII/1:4-4 229370643 5.368 ns/op BenchmarkLastIndexAnyASCII/1:4-4 231008866 5.426 ns/op BenchmarkLastIndexAnyASCII/1:8-4 236606432 5.390 ns/op BenchmarkLastIndexAnyASCII/1:8-4 225590875 5.363 ns/op BenchmarkLastIndexAnyASCII/1:8-4 230019316 5.425 ns/op BenchmarkLastIndexAnyASCII/1:8-4 224024262 5.404 ns/op BenchmarkLastIndexAnyASCII/1:8-4 233244211 5.413 ns/op BenchmarkLastIndexAnyASCII/1:8-4 238465638 5.283 ns/op BenchmarkLastIndexAnyASCII/1:8-4 236631430 5.221 ns/op BenchmarkLastIndexAnyASCII/1:8-4 228784920 5.352 ns/op BenchmarkLastIndexAnyASCII/1:8-4 234312726 5.366 ns/op BenchmarkLastIndexAnyASCII/1:8-4 229204153 5.384 ns/op BenchmarkLastIndexAnyASCII/1:16-4 213505562 5.300 ns/op BenchmarkLastIndexAnyASCII/1:16-4 210661297 5.091 ns/op BenchmarkLastIndexAnyASCII/1:16-4 210652420 5.409 ns/op BenchmarkLastIndexAnyASCII/1:16-4 238985486 5.390 ns/op BenchmarkLastIndexAnyASCII/1:16-4 233226379 5.253 ns/op BenchmarkLastIndexAnyASCII/1:16-4 222231942 5.139 ns/op BenchmarkLastIndexAnyASCII/1:16-4 234401505 5.180 ns/op BenchmarkLastIndexAnyASCII/1:16-4 233160086 5.310 ns/op BenchmarkLastIndexAnyASCII/1:16-4 232048146 5.353 ns/op BenchmarkLastIndexAnyASCII/1:16-4 226417638 5.312 ns/op BenchmarkLastIndexAnyASCII/1:32-4 227080816 5.684 ns/op BenchmarkLastIndexAnyASCII/1:32-4 203146197 5.674 ns/op BenchmarkLastIndexAnyASCII/1:32-4 228704798 5.667 ns/op BenchmarkLastIndexAnyASCII/1:32-4 211624993 5.623 ns/op BenchmarkLastIndexAnyASCII/1:32-4 223709974 5.663 ns/op BenchmarkLastIndexAnyASCII/1:32-4 210882752 5.679 ns/op BenchmarkLastIndexAnyASCII/1:32-4 216249088 5.671 ns/op BenchmarkLastIndexAnyASCII/1:32-4 218040346 5.578 ns/op BenchmarkLastIndexAnyASCII/1:32-4 211498662 5.696 ns/op BenchmarkLastIndexAnyASCII/1:32-4 212481241 5.616 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221175014 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221168023 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221154753 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221146513 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221188946 5.425 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221159772 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221170255 5.425 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221160138 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221175778 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221176696 5.426 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86615838 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86709092 13.83 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86846472 13.81 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86868028 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86798221 13.83 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86833394 13.81 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86849985 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86852750 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86492982 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86849293 13.81 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80274376 14.99 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80124186 14.96 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80415850 14.98 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80238576 14.97 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79874112 15.02 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80111942 14.99 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80354610 14.97 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80402203 14.98 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80320994 14.98 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79998325 14.97 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67487839 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67474827 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67427923 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67486738 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67489813 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67418343 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67568666 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67449602 17.77 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67378288 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67442342 17.78 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46972216 25.51 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46714533 25.59 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47081557 25.57 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47145891 25.61 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46726574 25.57 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46558786 25.59 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46996444 25.62 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46833184 25.61 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47020440 25.64 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46703994 25.60 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34671885 34.78 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34622019 34.72 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34689637 34.72 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34492942 34.73 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34346100 34.78 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34531792 34.78 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34602470 34.71 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34484775 34.77 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34502037 34.76 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34517808 34.76 ns/op BenchmarkLastIndexAnyASCII/16:32-4 24034844 53.26 ns/op BenchmarkLastIndexAnyASCII/16:32-4 23231620 53.11 ns/op BenchmarkLastIndexAnyASCII/16:32-4 24794690 53.90 ns/op BenchmarkLastIndexAnyASCII/16:32-4 22793391 54.24 ns/op BenchmarkLastIndexAnyASCII/16:32-4 22988674 52.98 ns/op BenchmarkLastIndexAnyASCII/16:32-4 22904978 52.33 ns/op BenchmarkLastIndexAnyASCII/16:32-4 25048402 52.49 ns/op BenchmarkLastIndexAnyASCII/16:32-4 24398571 53.15 ns/op BenchmarkLastIndexAnyASCII/16:32-4 22538152 53.29 ns/op BenchmarkLastIndexAnyASCII/16:32-4 24033218 52.93 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12355578 98.45 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12205483 98.17 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12307267 98.95 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12317504 97.31 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12209187 97.75 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12480471 97.56 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12101371 98.09 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12414187 97.85 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12508147 96.99 ns/op BenchmarkLastIndexAnyASCII/16:64-4 12374998 99.20 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8561612 140.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8540784 141.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8536699 141.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8614284 140.6 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8550898 140.6 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8544510 140.8 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8581995 140.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8553218 140.6 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8466880 140.7 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8568824 140.5 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8413538 143.0 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8412760 143.1 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8409458 142.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8418148 143.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8455539 142.3 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8319687 143.5 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8416610 142.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8339856 142.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8433823 142.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8421140 143.5 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8215492 146.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8242284 146.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8195154 146.1 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8282415 145.7 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8219149 146.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8192325 146.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8240991 146.1 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8269167 146.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8122650 145.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8255995 145.9 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7740208 155.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7749512 155.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7734306 155.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7751307 154.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7780410 154.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7754119 155.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7715032 155.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7758034 154.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7714996 155.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7780291 154.9 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7462437 161.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7472936 161.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7491364 161.1 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7412133 161.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7518754 161.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7447669 161.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7425025 161.8 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7391286 161.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7442308 161.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7465495 161.4 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7033832 171.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7007298 170.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7038600 171.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7023651 171.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7019984 171.1 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7020548 171.5 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7026440 171.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7020162 170.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7019284 170.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 7038172 171.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5586579 215.8 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5545842 215.8 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5579689 215.4 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5516616 214.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5585316 215.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5565176 215.6 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5576095 215.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5556468 214.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5576918 215.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5589271 215.1 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 222409639 5.351 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 245798052 5.415 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 225975330 5.410 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 233106730 5.369 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 224941508 5.375 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 233353449 5.402 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 226279447 5.424 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 226305960 5.406 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 235976925 5.381 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 239130511 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 242855552 5.407 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 233151265 5.397 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 244404961 5.148 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 222847575 5.337 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 232885026 5.252 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 233299376 5.371 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 232522623 5.326 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 222163462 5.345 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 221243421 5.291 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 228264992 5.314 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 237929380 5.413 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 230572924 5.407 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 233225053 5.373 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 233263252 5.136 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 233158850 5.373 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 224463146 5.281 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 229434103 5.381 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 227630114 5.405 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 222304182 5.181 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 231056004 5.343 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 223677016 5.299 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 224407280 5.371 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 224759091 5.372 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 224182155 5.412 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 233224944 5.412 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 233365984 5.302 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 246311797 5.406 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 233274480 5.412 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 226951849 5.413 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 228406462 5.406 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 226937329 5.414 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 231151669 5.409 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 244465144 5.266 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 223385499 5.412 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 218452630 5.412 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 221549914 5.577 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 233320572 5.398 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 231364815 5.100 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 239833464 5.258 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 234444955 5.382 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 212398120 5.696 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 220009450 5.566 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 218068729 5.672 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 202391996 5.616 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 212871732 5.538 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 213054835 5.507 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 233368802 5.635 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 218769318 5.519 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 211469259 5.479 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 233131125 5.506 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221192316 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221216194 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221187158 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221194582 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221223686 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221199696 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221186872 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221175462 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221207109 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221220818 5.425 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31365367 38.48 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35355055 34.57 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35380208 38.40 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35369926 33.90 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35383306 38.71 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 32813571 33.91 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 32583430 33.90 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35382493 38.25 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31375725 33.94 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 33448609 38.51 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12947762 94.05 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13840143 97.66 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13532595 96.87 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13536584 96.97 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13370922 97.54 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13414138 94.08 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13902048 97.66 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13371064 93.26 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13702610 93.29 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12674658 93.56 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13558144 97.26 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13423376 96.33 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13283233 96.88 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13956610 94.62 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13405136 92.34 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13415169 97.75 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13413262 96.84 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12107371 94.58 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13686739 96.75 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13952708 95.18 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13877642 97.43 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13415113 96.20 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13551132 94.89 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13954861 96.24 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13697635 94.29 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13953967 92.88 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 12824720 98.42 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13394936 93.56 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13369414 93.18 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13000056 95.13 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13711192 93.18 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12677216 93.43 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13955514 93.67 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13433590 93.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13955816 91.13 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12920206 93.56 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13285705 93.30 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13695440 90.05 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13525873 90.28 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 13285978 94.16 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 12800203 97.41 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11149972 98.18 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 13284615 96.18 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 13182178 94.03 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 12119160 98.68 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 12534354 94.83 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 12749055 94.45 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11990992 94.77 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 12227560 101.9 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 12935641 94.86 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13383880 92.53 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 12674757 90.05 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 12677408 93.21 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13429987 95.72 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13387232 93.69 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 12800863 93.11 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13513677 89.98 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13409785 94.33 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13373508 92.46 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13871720 91.50 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431368 493.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431291 493.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2430598 493.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431284 493.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431564 493.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431280 493.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431089 493.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431268 562.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431162 493.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2431002 493.6 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 901233 1461 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 901890 1455 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 903182 1395 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 902794 1413 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 904237 1388 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 903813 1447 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 904154 1445 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 860026 1454 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 902847 1394 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 901959 1446 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 903238 1417 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 903219 1429 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 900427 1461 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 903896 1449 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 893584 1447 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 900861 1445 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 903769 1421 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 893722 1394 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 902643 1437 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 903255 1453 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 904219 1450 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 903572 1395 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 904152 1451 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 903514 1460 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 903157 1460 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 903417 1461 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 818785 1393 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 904348 1454 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 896638 1459 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 904005 1441 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 902634 1395 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 892458 1393 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 901434 1453 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 903796 1395 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 859132 1396 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 858915 1463 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 902517 1454 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 904138 1396 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 902799 1395 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 903453 1418 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 848588 1466 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 855366 1473 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 818004 1462 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 858255 1464 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 858763 1465 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 857815 1529 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 781840 1538 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 858537 1462 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 818396 1523 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 857888 1459 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 901620 1427 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 897870 1415 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903750 1395 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 817435 1441 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902304 1442 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 901431 1458 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903439 1455 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 895425 1453 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902712 1449 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902444 1457 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234620 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234528 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234614 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234634 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234432 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234733 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234682 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234760 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234730 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234726 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234304 5115 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234200 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234288 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234297 5115 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234204 5115 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234276 5115 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234175 5115 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234220 5115 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234290 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234408 5115 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20750 57821 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20749 57829 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20750 57827 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20715 57911 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20748 57822 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20749 57833 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20749 57828 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20749 57819 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20749 57830 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20748 57817 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41360 28998 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41364 28998 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41384 28995 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41385 28993 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41365 28998 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41372 28999 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41366 28998 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41368 28997 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41368 28995 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41328 29033 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82408 14536 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82500 14552 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82488 14553 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82447 14545 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82452 14543 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82472 14553 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82435 14545 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82545 14533 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82594 14529 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82521 14538 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161749 7412 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161814 7420 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161914 7412 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161630 7414 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161292 7449 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161923 7421 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161391 7416 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161619 7422 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161476 7412 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161676 7411 ns/op BenchmarkIndexByte_Bytes/10-4 368668772 3.526 ns/op 2836.07 MB/s BenchmarkIndexByte_Bytes/10-4 368689512 3.255 ns/op 3072.27 MB/s BenchmarkIndexByte_Bytes/10-4 368712837 3.255 ns/op 3072.23 MB/s BenchmarkIndexByte_Bytes/10-4 368586108 3.255 ns/op 3072.28 MB/s BenchmarkIndexByte_Bytes/10-4 368675794 3.255 ns/op 3072.25 MB/s BenchmarkIndexByte_Bytes/10-4 368570540 3.255 ns/op 3072.22 MB/s BenchmarkIndexByte_Bytes/10-4 368656616 3.526 ns/op 2835.81 MB/s BenchmarkIndexByte_Bytes/10-4 368657182 3.526 ns/op 2836.09 MB/s BenchmarkIndexByte_Bytes/10-4 340252886 3.255 ns/op 3072.15 MB/s BenchmarkIndexByte_Bytes/10-4 368688375 3.255 ns/op 3072.24 MB/s BenchmarkIndexByte_Bytes/32-4 315926888 3.526 ns/op 9074.77 MB/s BenchmarkIndexByte_Bytes/32-4 294936969 3.747 ns/op 8539.78 MB/s BenchmarkIndexByte_Bytes/32-4 327512880 4.069 ns/op 7864.89 MB/s BenchmarkIndexByte_Bytes/32-4 294957571 3.756 ns/op 8519.42 MB/s BenchmarkIndexByte_Bytes/32-4 340275601 3.789 ns/op 8445.46 MB/s BenchmarkIndexByte_Bytes/32-4 316006707 3.747 ns/op 8540.46 MB/s BenchmarkIndexByte_Bytes/32-4 300782100 3.657 ns/op 8750.95 MB/s BenchmarkIndexByte_Bytes/32-4 294939926 3.626 ns/op 8825.82 MB/s BenchmarkIndexByte_Bytes/32-4 340315543 3.655 ns/op 8755.37 MB/s BenchmarkIndexByte_Bytes/32-4 340262749 4.061 ns/op 7880.27 MB/s BenchmarkIndexByte_Bytes/4K-4 16124056 72.70 ns/op 56344.16 MB/s BenchmarkIndexByte_Bytes/4K-4 16502048 72.71 ns/op 56336.88 MB/s BenchmarkIndexByte_Bytes/4K-4 16211942 72.70 ns/op 56344.72 MB/s BenchmarkIndexByte_Bytes/4K-4 16507771 72.70 ns/op 56344.61 MB/s BenchmarkIndexByte_Bytes/4K-4 15836545 72.70 ns/op 56342.66 MB/s BenchmarkIndexByte_Bytes/4K-4 16497030 72.70 ns/op 56343.42 MB/s BenchmarkIndexByte_Bytes/4K-4 15626762 72.70 ns/op 56340.98 MB/s BenchmarkIndexByte_Bytes/4K-4 16503114 72.70 ns/op 56341.84 MB/s BenchmarkIndexByte_Bytes/4K-4 16501405 72.70 ns/op 56344.69 MB/s BenchmarkIndexByte_Bytes/4K-4 15613526 72.70 ns/op 56344.71 MB/s BenchmarkIndexByte_Bytes/4M-4 16694 71849 ns/op 58376.70 MB/s BenchmarkIndexByte_Bytes/4M-4 16700 71865 ns/op 58363.32 MB/s BenchmarkIndexByte_Bytes/4M-4 16700 71867 ns/op 58361.78 MB/s BenchmarkIndexByte_Bytes/4M-4 16696 71846 ns/op 58379.28 MB/s BenchmarkIndexByte_Bytes/4M-4 16692 71862 ns/op 58366.15 MB/s BenchmarkIndexByte_Bytes/4M-4 16698 71868 ns/op 58361.48 MB/s BenchmarkIndexByte_Bytes/4M-4 16695 71858 ns/op 58369.68 MB/s BenchmarkIndexByte_Bytes/4M-4 16694 71866 ns/op 58362.63 MB/s BenchmarkIndexByte_Bytes/4M-4 16695 71865 ns/op 58363.97 MB/s BenchmarkIndexByte_Bytes/4M-4 16682 71944 ns/op 58299.75 MB/s BenchmarkIndexByte_Bytes/64M-4 726 1468917 ns/op 45685.96 MB/s BenchmarkIndexByte_Bytes/64M-4 800 1463141 ns/op 45866.29 MB/s BenchmarkIndexByte_Bytes/64M-4 801 1465919 ns/op 45779.37 MB/s BenchmarkIndexByte_Bytes/64M-4 801 1465177 ns/op 45802.58 MB/s BenchmarkIndexByte_Bytes/64M-4 800 1468696 ns/op 45692.81 MB/s BenchmarkIndexByte_Bytes/64M-4 799 1467841 ns/op 45719.43 MB/s BenchmarkIndexByte_Bytes/64M-4 796 1467271 ns/op 45737.20 MB/s BenchmarkIndexByte_Bytes/64M-4 798 1466090 ns/op 45774.03 MB/s BenchmarkIndexByte_Bytes/64M-4 798 1465129 ns/op 45804.07 MB/s BenchmarkIndexByte_Bytes/64M-4 799 1464423 ns/op 45826.16 MB/s BenchmarkIndexRune_Bytes/10-4 97996086 11.94 ns/op 837.79 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.82 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.79 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.79 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.84 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.83 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.83 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.77 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 12.20 ns/op 819.62 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 12.23 ns/op 817.45 MB/s BenchmarkIndexRune_Bytes/32-4 90172280 13.29 ns/op 2407.33 MB/s BenchmarkIndexRune_Bytes/32-4 90198714 13.30 ns/op 2406.58 MB/s BenchmarkIndexRune_Bytes/32-4 90171271 13.29 ns/op 2407.02 MB/s BenchmarkIndexRune_Bytes/32-4 89988622 13.29 ns/op 2407.29 MB/s BenchmarkIndexRune_Bytes/32-4 90238196 13.29 ns/op 2407.39 MB/s BenchmarkIndexRune_Bytes/32-4 90256582 13.29 ns/op 2407.22 MB/s BenchmarkIndexRune_Bytes/32-4 90186566 13.29 ns/op 2407.37 MB/s BenchmarkIndexRune_Bytes/32-4 90190836 13.29 ns/op 2406.95 MB/s BenchmarkIndexRune_Bytes/32-4 90230848 13.29 ns/op 2407.51 MB/s BenchmarkIndexRune_Bytes/32-4 90198158 13.29 ns/op 2407.18 MB/s BenchmarkIndexRune_Bytes/4K-4 14792580 81.12 ns/op 50493.03 MB/s BenchmarkIndexRune_Bytes/4K-4 14791059 81.11 ns/op 50498.06 MB/s BenchmarkIndexRune_Bytes/4K-4 14788473 81.11 ns/op 50497.34 MB/s BenchmarkIndexRune_Bytes/4K-4 14789125 81.12 ns/op 50495.72 MB/s BenchmarkIndexRune_Bytes/4K-4 14790115 81.11 ns/op 50497.62 MB/s BenchmarkIndexRune_Bytes/4K-4 14783901 81.12 ns/op 50495.02 MB/s BenchmarkIndexRune_Bytes/4K-4 14793542 81.12 ns/op 50496.14 MB/s BenchmarkIndexRune_Bytes/4K-4 14789580 81.12 ns/op 50494.00 MB/s BenchmarkIndexRune_Bytes/4K-4 14789644 81.12 ns/op 50491.29 MB/s BenchmarkIndexRune_Bytes/4K-4 14791183 81.12 ns/op 50495.15 MB/s BenchmarkIndexRune_Bytes/4M-4 16678 71936 ns/op 58306.17 MB/s BenchmarkIndexRune_Bytes/4M-4 16665 71961 ns/op 58285.88 MB/s BenchmarkIndexRune_Bytes/4M-4 16676 71967 ns/op 58280.73 MB/s BenchmarkIndexRune_Bytes/4M-4 16678 71982 ns/op 58268.53 MB/s BenchmarkIndexRune_Bytes/4M-4 16671 71976 ns/op 58273.51 MB/s BenchmarkIndexRune_Bytes/4M-4 16676 71958 ns/op 58288.10 MB/s BenchmarkIndexRune_Bytes/4M-4 16674 71995 ns/op 58258.51 MB/s BenchmarkIndexRune_Bytes/4M-4 16672 71961 ns/op 58286.08 MB/s BenchmarkIndexRune_Bytes/4M-4 16663 71989 ns/op 58262.75 MB/s BenchmarkIndexRune_Bytes/4M-4 16672 71973 ns/op 58275.84 MB/s BenchmarkIndexRune_Bytes/64M-4 758 1483872 ns/op 45225.52 MB/s BenchmarkIndexRune_Bytes/64M-4 789 1487787 ns/op 45106.49 MB/s BenchmarkIndexRune_Bytes/64M-4 790 1487760 ns/op 45107.31 MB/s BenchmarkIndexRune_Bytes/64M-4 792 1486828 ns/op 45135.60 MB/s BenchmarkIndexRune_Bytes/64M-4 789 1485996 ns/op 45160.85 MB/s BenchmarkIndexRune_Bytes/64M-4 790 1485274 ns/op 45182.82 MB/s BenchmarkIndexRune_Bytes/64M-4 792 1486430 ns/op 45147.69 MB/s BenchmarkIndexRune_Bytes/64M-4 789 1482578 ns/op 45264.97 MB/s BenchmarkIndexRune_Bytes/64M-4 789 1484128 ns/op 45217.71 MB/s BenchmarkIndexRune_Bytes/64M-4 790 1484313 ns/op 45212.08 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341662370 3.521 ns/op 2839.72 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 316778642 3.797 ns/op 2633.39 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 317203605 3.523 ns/op 2838.88 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 316746986 3.522 ns/op 2838.97 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341507097 3.522 ns/op 2839.03 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341836732 3.524 ns/op 2837.95 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 316729932 3.522 ns/op 2839.18 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341563234 3.522 ns/op 2839.13 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341820890 3.797 ns/op 2633.34 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 317191750 3.523 ns/op 2838.77 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 315966549 3.798 ns/op 8426.04 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 315977896 3.797 ns/op 8426.62 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 295884243 3.799 ns/op 8422.96 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 315945843 4.069 ns/op 7864.27 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 295388092 3.798 ns/op 8425.71 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 295684101 3.798 ns/op 8426.13 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 315970892 3.798 ns/op 8426.28 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 315986010 3.798 ns/op 8425.30 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 295933982 3.798 ns/op 8426.11 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 316005565 3.798 ns/op 8426.05 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16317272 78.04 ns/op 52485.23 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16383703 78.05 ns/op 52481.23 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 15657169 78.05 ns/op 52480.90 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16370383 78.04 ns/op 52487.80 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16175785 78.03 ns/op 52490.04 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16112540 78.06 ns/op 52474.83 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16455802 78.06 ns/op 52473.66 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 15599626 78.03 ns/op 52492.75 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16447834 72.98 ns/op 56128.44 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 16430552 78.03 ns/op 52490.17 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16754 71607 ns/op 58574.03 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16752 71617 ns/op 58565.73 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16755 71626 ns/op 58558.08 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16755 71612 ns/op 58569.74 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16752 71612 ns/op 58569.96 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16758 71651 ns/op 58537.69 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16753 71620 ns/op 58563.57 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16756 71624 ns/op 58559.96 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16754 71599 ns/op 58580.29 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 16758 71610 ns/op 58571.09 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 764 1469134 ns/op 45679.21 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 799 1466318 ns/op 45766.93 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 799 1468688 ns/op 45693.07 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 801 1469270 ns/op 45674.97 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 798 1469900 ns/op 45655.40 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 804 1466836 ns/op 45750.76 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 799 1469026 ns/op 45682.55 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 799 1467778 ns/op 45721.39 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 801 1469654 ns/op 45663.05 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 798 1466034 ns/op 45775.79 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340230837 3.525 ns/op 2836.56 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340744802 3.534 ns/op 2829.92 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340539049 3.526 ns/op 2836.04 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340333255 3.526 ns/op 2835.92 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340274917 3.515 ns/op 2844.96 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340337899 3.526 ns/op 2836.25 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340329160 3.526 ns/op 2835.74 MB/s BenchmarkIndexNonASCII_Bytes/10-4 339656589 3.526 ns/op 2835.87 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340321670 3.526 ns/op 2835.91 MB/s BenchmarkIndexNonASCII_Bytes/10-4 339034892 3.535 ns/op 2828.68 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.31 ns/op 3104.79 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.31 ns/op 3104.88 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.29 ns/op 3109.80 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.31 ns/op 3104.99 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.31 ns/op 3104.60 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.29 ns/op 3108.68 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.31 ns/op 3105.20 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.31 ns/op 3104.68 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.32 ns/op 3101.44 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.30 ns/op 3107.56 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1118 ns/op 3662.44 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1127 ns/op 3634.02 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1123 ns/op 3647.96 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1118 ns/op 3662.58 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1125 ns/op 3640.37 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3644.52 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1122 ns/op 3651.46 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1118 ns/op 3662.51 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3644.49 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1122 ns/op 3650.51 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1050 1139206 ns/op 3681.78 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139122 ns/op 3682.05 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139409 ns/op 3681.12 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139152 ns/op 3681.95 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139258 ns/op 3681.61 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139241 ns/op 3681.66 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139315 ns/op 3681.42 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1050 1139206 ns/op 3681.78 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139114 ns/op 3682.08 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1047 1139146 ns/op 3681.97 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 64 18295318 ns/op 3668.09 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18303905 ns/op 3666.37 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18300751 ns/op 3667.00 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18306319 ns/op 3665.89 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18299068 ns/op 3667.34 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18299951 ns/op 3667.16 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18301922 ns/op 3666.77 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18301131 ns/op 3666.92 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18298934 ns/op 3667.36 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18302055 ns/op 3666.74 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2055.834s strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/stdlib.10.1706938813.2b8edcd9.txt 0000664 0000000 0000000 00000276702 14720254634 0027135 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 BenchmarkIndexRune-4 100000000 11.77 ns/op BenchmarkIndexRune-4 100000000 11.75 ns/op BenchmarkIndexRune-4 100000000 11.68 ns/op BenchmarkIndexRune-4 100000000 11.67 ns/op BenchmarkIndexRune-4 100000000 11.69 ns/op BenchmarkIndexRune-4 100000000 11.71 ns/op BenchmarkIndexRune-4 100000000 11.78 ns/op BenchmarkIndexRune-4 100000000 11.71 ns/op BenchmarkIndexRune-4 100000000 11.68 ns/op BenchmarkIndexRune-4 100000000 11.68 ns/op BenchmarkIndexRuneLongString-4 88446531 13.56 ns/op BenchmarkIndexRuneLongString-4 88468962 13.57 ns/op BenchmarkIndexRuneLongString-4 88468310 13.57 ns/op BenchmarkIndexRuneLongString-4 88405408 13.56 ns/op BenchmarkIndexRuneLongString-4 88288857 13.57 ns/op BenchmarkIndexRuneLongString-4 88437992 13.57 ns/op BenchmarkIndexRuneLongString-4 88319456 13.57 ns/op BenchmarkIndexRuneLongString-4 88397796 13.57 ns/op BenchmarkIndexRuneLongString-4 88412190 13.57 ns/op BenchmarkIndexRuneLongString-4 88439289 13.57 ns/op BenchmarkIndexRuneFastPath-4 340208242 3.527 ns/op BenchmarkIndexRuneFastPath-4 340238212 3.527 ns/op BenchmarkIndexRuneFastPath-4 340175493 3.527 ns/op BenchmarkIndexRuneFastPath-4 340254181 3.527 ns/op BenchmarkIndexRuneFastPath-4 315946440 3.527 ns/op BenchmarkIndexRuneFastPath-4 340238455 3.527 ns/op BenchmarkIndexRuneFastPath-4 340150537 3.527 ns/op BenchmarkIndexRuneFastPath-4 340179997 3.527 ns/op BenchmarkIndexRuneFastPath-4 340235388 3.527 ns/op BenchmarkIndexRuneFastPath-4 340255542 3.527 ns/op BenchmarkIndex-4 299160068 4.069 ns/op BenchmarkIndex-4 315946347 3.916 ns/op BenchmarkIndex-4 315931714 3.798 ns/op BenchmarkIndex-4 294872353 3.798 ns/op BenchmarkIndex-4 315100874 3.849 ns/op BenchmarkIndex-4 315961419 4.059 ns/op BenchmarkIndex-4 276421438 4.341 ns/op BenchmarkIndex-4 315933543 3.897 ns/op BenchmarkIndex-4 294875084 3.798 ns/op BenchmarkIndex-4 315897234 3.798 ns/op BenchmarkLastIndex-4 341611438 3.522 ns/op BenchmarkLastIndex-4 341052871 3.524 ns/op BenchmarkLastIndex-4 341523907 3.523 ns/op BenchmarkLastIndex-4 341846036 3.524 ns/op BenchmarkLastIndex-4 341232111 3.524 ns/op BenchmarkLastIndex-4 341610357 3.522 ns/op BenchmarkLastIndex-4 340295160 3.524 ns/op BenchmarkLastIndex-4 341700170 3.522 ns/op BenchmarkLastIndex-4 340305399 3.524 ns/op BenchmarkLastIndex-4 341750744 3.527 ns/op BenchmarkIndexByte-4 442262256 2.713 ns/op BenchmarkIndexByte-4 442380248 2.713 ns/op BenchmarkIndexByte-4 442202344 2.713 ns/op BenchmarkIndexByte-4 442333190 2.713 ns/op BenchmarkIndexByte-4 442332976 2.713 ns/op BenchmarkIndexByte-4 442290148 2.713 ns/op BenchmarkIndexByte-4 442088733 2.713 ns/op BenchmarkIndexByte-4 442367532 2.713 ns/op BenchmarkIndexByte-4 442305522 2.713 ns/op BenchmarkIndexByte-4 442313037 2.713 ns/op BenchmarkEqualFold/ASCII-4 141967312 8.870 ns/op BenchmarkEqualFold/ASCII-4 142231010 8.474 ns/op BenchmarkEqualFold/ASCII-4 141724444 8.478 ns/op BenchmarkEqualFold/ASCII-4 141424036 8.464 ns/op BenchmarkEqualFold/ASCII-4 142056021 8.500 ns/op BenchmarkEqualFold/ASCII-4 141862362 8.489 ns/op BenchmarkEqualFold/ASCII-4 142080199 8.431 ns/op BenchmarkEqualFold/ASCII-4 141631010 8.493 ns/op BenchmarkEqualFold/ASCII-4 141774508 8.480 ns/op BenchmarkEqualFold/ASCII-4 140860272 8.455 ns/op BenchmarkEqualFold/UnicodePrefix-4 15311306 77.14 ns/op BenchmarkEqualFold/UnicodePrefix-4 15767943 78.04 ns/op BenchmarkEqualFold/UnicodePrefix-4 15619430 77.03 ns/op BenchmarkEqualFold/UnicodePrefix-4 15579282 77.09 ns/op BenchmarkEqualFold/UnicodePrefix-4 15637833 77.11 ns/op BenchmarkEqualFold/UnicodePrefix-4 15421380 77.15 ns/op BenchmarkEqualFold/UnicodePrefix-4 15562764 77.06 ns/op BenchmarkEqualFold/UnicodePrefix-4 15541452 77.17 ns/op BenchmarkEqualFold/UnicodePrefix-4 15599746 77.17 ns/op BenchmarkEqualFold/UnicodePrefix-4 15623799 77.95 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17880946 67.46 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17760453 67.63 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17822854 67.65 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17813378 67.53 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17884242 67.41 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17748355 67.59 ns/op BenchmarkEqualFold/UnicodeSuffix-4 18007412 67.46 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17981341 67.40 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17813396 67.59 ns/op BenchmarkEqualFold/UnicodeSuffix-4 17914084 67.54 ns/op BenchmarkIndexHard1-4 14704 81592 ns/op BenchmarkIndexHard1-4 14703 81608 ns/op BenchmarkIndexHard1-4 14704 81601 ns/op BenchmarkIndexHard1-4 14702 81604 ns/op BenchmarkIndexHard1-4 14703 81602 ns/op BenchmarkIndexHard1-4 14702 81601 ns/op BenchmarkIndexHard1-4 14704 81600 ns/op BenchmarkIndexHard1-4 14704 81602 ns/op BenchmarkIndexHard1-4 14706 81597 ns/op BenchmarkIndexHard1-4 14707 81598 ns/op BenchmarkIndexHard2-4 10488 114379 ns/op BenchmarkIndexHard2-4 10485 114366 ns/op BenchmarkIndexHard2-4 10485 114348 ns/op BenchmarkIndexHard2-4 10490 114317 ns/op BenchmarkIndexHard2-4 10489 114342 ns/op BenchmarkIndexHard2-4 10489 114343 ns/op BenchmarkIndexHard2-4 10489 114341 ns/op BenchmarkIndexHard2-4 10489 114323 ns/op BenchmarkIndexHard2-4 10488 114336 ns/op BenchmarkIndexHard2-4 10489 114335 ns/op BenchmarkIndexHard3-4 2089 548105 ns/op BenchmarkIndexHard3-4 2090 548100 ns/op BenchmarkIndexHard3-4 2092 548036 ns/op BenchmarkIndexHard3-4 2082 548230 ns/op BenchmarkIndexHard3-4 2090 548148 ns/op BenchmarkIndexHard3-4 2091 548057 ns/op BenchmarkIndexHard3-4 2090 548057 ns/op BenchmarkIndexHard3-4 2091 548099 ns/op BenchmarkIndexHard3-4 2090 548063 ns/op BenchmarkIndexHard3-4 2090 548160 ns/op BenchmarkIndexHard4-4 2030 570523 ns/op BenchmarkIndexHard4-4 2032 570442 ns/op BenchmarkIndexHard4-4 2032 570561 ns/op BenchmarkIndexHard4-4 2031 570497 ns/op BenchmarkIndexHard4-4 2031 570550 ns/op BenchmarkIndexHard4-4 2031 570457 ns/op BenchmarkIndexHard4-4 2032 570455 ns/op BenchmarkIndexHard4-4 2031 570484 ns/op BenchmarkIndexHard4-4 2030 570444 ns/op BenchmarkIndexHard4-4 2031 570487 ns/op BenchmarkLastIndexHard1-4 810 1452096 ns/op BenchmarkLastIndexHard1-4 810 1452033 ns/op BenchmarkLastIndexHard1-4 810 1452788 ns/op BenchmarkLastIndexHard1-4 810 1452715 ns/op BenchmarkLastIndexHard1-4 810 1452113 ns/op BenchmarkLastIndexHard1-4 808 1452482 ns/op BenchmarkLastIndexHard1-4 810 1452188 ns/op BenchmarkLastIndexHard1-4 810 1452833 ns/op BenchmarkLastIndexHard1-4 810 1452534 ns/op BenchmarkLastIndexHard1-4 810 1452503 ns/op BenchmarkLastIndexHard2-4 810 1452376 ns/op BenchmarkLastIndexHard2-4 810 1452461 ns/op BenchmarkLastIndexHard2-4 810 1452426 ns/op BenchmarkLastIndexHard2-4 810 1452249 ns/op BenchmarkLastIndexHard2-4 810 1452327 ns/op BenchmarkLastIndexHard2-4 810 1452454 ns/op BenchmarkLastIndexHard2-4 810 1452013 ns/op BenchmarkLastIndexHard2-4 810 1452062 ns/op BenchmarkLastIndexHard2-4 810 1452617 ns/op BenchmarkLastIndexHard2-4 810 1452053 ns/op BenchmarkLastIndexHard3-4 810 1452029 ns/op BenchmarkLastIndexHard3-4 810 1452468 ns/op BenchmarkLastIndexHard3-4 810 1452830 ns/op BenchmarkLastIndexHard3-4 810 1451879 ns/op BenchmarkLastIndexHard3-4 810 1452107 ns/op BenchmarkLastIndexHard3-4 810 1452325 ns/op BenchmarkLastIndexHard3-4 810 1452935 ns/op BenchmarkLastIndexHard3-4 810 1451899 ns/op BenchmarkLastIndexHard3-4 810 1452525 ns/op BenchmarkLastIndexHard3-4 810 1452411 ns/op BenchmarkCountHard1-4 14710 81568 ns/op BenchmarkCountHard1-4 14712 81566 ns/op BenchmarkCountHard1-4 14710 81554 ns/op BenchmarkCountHard1-4 14709 81555 ns/op BenchmarkCountHard1-4 14710 81554 ns/op BenchmarkCountHard1-4 14710 81563 ns/op BenchmarkCountHard1-4 14709 81560 ns/op BenchmarkCountHard1-4 14712 81574 ns/op BenchmarkCountHard1-4 14709 81577 ns/op BenchmarkCountHard1-4 14709 81568 ns/op BenchmarkCountHard2-4 10486 114340 ns/op BenchmarkCountHard2-4 10489 114340 ns/op BenchmarkCountHard2-4 10488 114354 ns/op BenchmarkCountHard2-4 10488 114354 ns/op BenchmarkCountHard2-4 10489 114336 ns/op BenchmarkCountHard2-4 10488 114355 ns/op BenchmarkCountHard2-4 10488 114350 ns/op BenchmarkCountHard2-4 10488 114349 ns/op BenchmarkCountHard2-4 10488 114363 ns/op BenchmarkCountHard2-4 10488 114342 ns/op BenchmarkCountHard3-4 2091 548208 ns/op BenchmarkCountHard3-4 2091 548165 ns/op BenchmarkCountHard3-4 2091 548105 ns/op BenchmarkCountHard3-4 2090 548164 ns/op BenchmarkCountHard3-4 2091 548093 ns/op BenchmarkCountHard3-4 2091 548201 ns/op BenchmarkCountHard3-4 2091 548139 ns/op BenchmarkCountHard3-4 2090 548065 ns/op BenchmarkCountHard3-4 2089 548097 ns/op BenchmarkCountHard3-4 2091 548155 ns/op BenchmarkIndexTorture-4 109240 10981 ns/op BenchmarkIndexTorture-4 109208 10980 ns/op BenchmarkIndexTorture-4 109207 10981 ns/op BenchmarkIndexTorture-4 109213 10979 ns/op BenchmarkIndexTorture-4 109224 10981 ns/op BenchmarkIndexTorture-4 109228 10980 ns/op BenchmarkIndexTorture-4 109250 10980 ns/op BenchmarkIndexTorture-4 109248 10980 ns/op BenchmarkIndexTorture-4 109189 10981 ns/op BenchmarkIndexTorture-4 109258 10980 ns/op BenchmarkCountTorture-4 109216 10983 ns/op BenchmarkCountTorture-4 109212 10984 ns/op BenchmarkCountTorture-4 109214 10983 ns/op BenchmarkCountTorture-4 109227 10983 ns/op BenchmarkCountTorture-4 109230 10982 ns/op BenchmarkCountTorture-4 109192 10983 ns/op BenchmarkCountTorture-4 109225 10983 ns/op BenchmarkCountTorture-4 109236 10984 ns/op BenchmarkCountTorture-4 109219 10984 ns/op BenchmarkCountTorture-4 109240 10982 ns/op BenchmarkCountTortureOverlapping-4 28118 42610 ns/op BenchmarkCountTortureOverlapping-4 28065 42372 ns/op BenchmarkCountTortureOverlapping-4 28158 41708 ns/op BenchmarkCountTortureOverlapping-4 28531 42581 ns/op BenchmarkCountTortureOverlapping-4 28615 41623 ns/op BenchmarkCountTortureOverlapping-4 28316 42519 ns/op BenchmarkCountTortureOverlapping-4 28174 41979 ns/op BenchmarkCountTortureOverlapping-4 28426 42288 ns/op BenchmarkCountTortureOverlapping-4 28449 41842 ns/op BenchmarkCountTortureOverlapping-4 28482 41516 ns/op BenchmarkCountByte/10-4 315856518 3.798 ns/op 2632.97 MB/s BenchmarkCountByte/10-4 315917835 4.014 ns/op 2491.54 MB/s BenchmarkCountByte/10-4 315925638 4.027 ns/op 2483.28 MB/s BenchmarkCountByte/10-4 303873871 4.063 ns/op 2461.05 MB/s BenchmarkCountByte/10-4 297167193 3.798 ns/op 2632.81 MB/s BenchmarkCountByte/10-4 300134130 4.069 ns/op 2457.39 MB/s BenchmarkCountByte/10-4 315951207 4.007 ns/op 2495.35 MB/s BenchmarkCountByte/10-4 304395932 3.962 ns/op 2523.68 MB/s BenchmarkCountByte/10-4 315919008 3.798 ns/op 2632.98 MB/s BenchmarkCountByte/10-4 313785013 3.907 ns/op 2559.49 MB/s BenchmarkCountByte/32-4 265782442 4.341 ns/op 7371.53 MB/s BenchmarkCountByte/32-4 276430116 4.341 ns/op 7372.04 MB/s BenchmarkCountByte/32-4 263497806 4.341 ns/op 7371.78 MB/s BenchmarkCountByte/32-4 276467493 4.341 ns/op 7372.37 MB/s BenchmarkCountByte/32-4 276425486 4.341 ns/op 7370.88 MB/s BenchmarkCountByte/32-4 276458653 4.340 ns/op 7372.43 MB/s BenchmarkCountByte/32-4 276448476 4.533 ns/op 7059.88 MB/s BenchmarkCountByte/32-4 276436854 4.341 ns/op 7371.50 MB/s BenchmarkCountByte/32-4 276475710 4.341 ns/op 7371.78 MB/s BenchmarkCountByte/32-4 276413998 4.341 ns/op 7372.06 MB/s BenchmarkCountByte/4K-4 18197982 65.67 ns/op 62373.46 MB/s BenchmarkCountByte/4K-4 18210780 65.85 ns/op 62203.93 MB/s BenchmarkCountByte/4K-4 18233206 65.64 ns/op 62400.59 MB/s BenchmarkCountByte/4K-4 18266870 65.64 ns/op 62404.02 MB/s BenchmarkCountByte/4K-4 18236359 65.66 ns/op 62384.89 MB/s BenchmarkCountByte/4K-4 18218618 65.79 ns/op 62255.21 MB/s BenchmarkCountByte/4K-4 18213115 65.79 ns/op 62262.09 MB/s BenchmarkCountByte/4K-4 18217972 65.77 ns/op 62279.74 MB/s BenchmarkCountByte/4K-4 18299407 65.78 ns/op 62270.27 MB/s BenchmarkCountByte/4K-4 18260313 65.76 ns/op 62286.49 MB/s BenchmarkCountByte/4M-4 18346 65513 ns/op 64022.91 MB/s BenchmarkCountByte/4M-4 18331 65479 ns/op 64056.16 MB/s BenchmarkCountByte/4M-4 18342 65432 ns/op 64102.07 MB/s BenchmarkCountByte/4M-4 18316 65422 ns/op 64111.43 MB/s BenchmarkCountByte/4M-4 18315 65495 ns/op 64040.12 MB/s BenchmarkCountByte/4M-4 18330 65414 ns/op 64119.09 MB/s BenchmarkCountByte/4M-4 18346 65502 ns/op 64033.13 MB/s BenchmarkCountByte/4M-4 18318 65529 ns/op 64006.78 MB/s BenchmarkCountByte/4M-4 18397 65221 ns/op 64308.76 MB/s BenchmarkCountByte/4M-4 18349 65438 ns/op 64095.61 MB/s BenchmarkCountByte/64M-4 799 1452396 ns/op 46205.62 MB/s BenchmarkCountByte/64M-4 799 1466940 ns/op 45747.51 MB/s BenchmarkCountByte/64M-4 800 1468986 ns/op 45683.80 MB/s BenchmarkCountByte/64M-4 801 1455174 ns/op 46117.42 MB/s BenchmarkCountByte/64M-4 802 1465971 ns/op 45777.75 MB/s BenchmarkCountByte/64M-4 799 1465143 ns/op 45803.62 MB/s BenchmarkCountByte/64M-4 808 1462937 ns/op 45872.68 MB/s BenchmarkCountByte/64M-4 806 1460488 ns/op 45949.61 MB/s BenchmarkCountByte/64M-4 807 1469786 ns/op 45658.95 MB/s BenchmarkCountByte/64M-4 802 1457726 ns/op 46036.68 MB/s BenchmarkIndexAnyASCII/1:1-4 247914218 4.862 ns/op BenchmarkIndexAnyASCII/1:1-4 245701876 4.884 ns/op BenchmarkIndexAnyASCII/1:1-4 260651104 4.830 ns/op BenchmarkIndexAnyASCII/1:1-4 247171002 4.863 ns/op BenchmarkIndexAnyASCII/1:1-4 247218715 4.814 ns/op BenchmarkIndexAnyASCII/1:1-4 249877491 4.883 ns/op BenchmarkIndexAnyASCII/1:1-4 247914025 4.871 ns/op BenchmarkIndexAnyASCII/1:1-4 255215875 4.884 ns/op BenchmarkIndexAnyASCII/1:1-4 260668623 4.852 ns/op BenchmarkIndexAnyASCII/1:1-4 247431204 4.818 ns/op BenchmarkIndexAnyASCII/1:2-4 203966283 5.938 ns/op BenchmarkIndexAnyASCII/1:2-4 203593875 5.933 ns/op BenchmarkIndexAnyASCII/1:2-4 204231451 5.900 ns/op BenchmarkIndexAnyASCII/1:2-4 201221907 5.838 ns/op BenchmarkIndexAnyASCII/1:2-4 203635766 5.968 ns/op BenchmarkIndexAnyASCII/1:2-4 205207844 5.969 ns/op BenchmarkIndexAnyASCII/1:2-4 207199968 5.969 ns/op BenchmarkIndexAnyASCII/1:2-4 206581078 5.933 ns/op BenchmarkIndexAnyASCII/1:2-4 202260517 5.960 ns/op BenchmarkIndexAnyASCII/1:2-4 210610818 5.960 ns/op BenchmarkIndexAnyASCII/1:4-4 201672400 5.926 ns/op BenchmarkIndexAnyASCII/1:4-4 202895095 5.959 ns/op BenchmarkIndexAnyASCII/1:4-4 210385815 5.933 ns/op BenchmarkIndexAnyASCII/1:4-4 201573657 5.961 ns/op BenchmarkIndexAnyASCII/1:4-4 201485073 5.962 ns/op BenchmarkIndexAnyASCII/1:4-4 204257806 5.961 ns/op BenchmarkIndexAnyASCII/1:4-4 205647856 5.960 ns/op BenchmarkIndexAnyASCII/1:4-4 201627586 5.969 ns/op BenchmarkIndexAnyASCII/1:4-4 202592745 5.832 ns/op BenchmarkIndexAnyASCII/1:4-4 204828385 5.867 ns/op BenchmarkIndexAnyASCII/1:8-4 205504462 5.957 ns/op BenchmarkIndexAnyASCII/1:8-4 206536538 5.968 ns/op BenchmarkIndexAnyASCII/1:8-4 201606987 5.961 ns/op BenchmarkIndexAnyASCII/1:8-4 205572884 5.918 ns/op BenchmarkIndexAnyASCII/1:8-4 202867424 5.927 ns/op BenchmarkIndexAnyASCII/1:8-4 205645531 5.969 ns/op BenchmarkIndexAnyASCII/1:8-4 202614634 5.959 ns/op BenchmarkIndexAnyASCII/1:8-4 201585481 5.903 ns/op BenchmarkIndexAnyASCII/1:8-4 207616484 5.836 ns/op BenchmarkIndexAnyASCII/1:8-4 210621466 5.887 ns/op BenchmarkIndexAnyASCII/1:16-4 205449231 5.538 ns/op BenchmarkIndexAnyASCII/1:16-4 215579281 5.684 ns/op BenchmarkIndexAnyASCII/1:16-4 213912531 5.698 ns/op BenchmarkIndexAnyASCII/1:16-4 217422393 5.652 ns/op BenchmarkIndexAnyASCII/1:16-4 212349855 5.685 ns/op BenchmarkIndexAnyASCII/1:16-4 211697680 5.665 ns/op BenchmarkIndexAnyASCII/1:16-4 210978416 5.623 ns/op BenchmarkIndexAnyASCII/1:16-4 210599870 5.621 ns/op BenchmarkIndexAnyASCII/1:16-4 212820364 5.689 ns/op BenchmarkIndexAnyASCII/1:16-4 213839469 5.690 ns/op BenchmarkIndexAnyASCII/1:32-4 197968320 6.041 ns/op BenchmarkIndexAnyASCII/1:32-4 201044264 5.969 ns/op BenchmarkIndexAnyASCII/1:32-4 201044618 6.085 ns/op BenchmarkIndexAnyASCII/1:32-4 201032866 6.213 ns/op BenchmarkIndexAnyASCII/1:32-4 198367072 6.240 ns/op BenchmarkIndexAnyASCII/1:32-4 201041172 5.969 ns/op BenchmarkIndexAnyASCII/1:32-4 193919725 6.073 ns/op BenchmarkIndexAnyASCII/1:32-4 192498716 6.004 ns/op BenchmarkIndexAnyASCII/1:32-4 193037748 6.240 ns/op BenchmarkIndexAnyASCII/1:32-4 192528260 5.987 ns/op BenchmarkIndexAnyASCII/1:64-4 192295552 6.240 ns/op BenchmarkIndexAnyASCII/1:64-4 192311190 6.240 ns/op BenchmarkIndexAnyASCII/1:64-4 192283893 6.240 ns/op BenchmarkIndexAnyASCII/1:64-4 192282932 6.240 ns/op BenchmarkIndexAnyASCII/1:64-4 192264900 6.245 ns/op BenchmarkIndexAnyASCII/1:64-4 192138559 6.243 ns/op BenchmarkIndexAnyASCII/1:64-4 192288532 6.240 ns/op BenchmarkIndexAnyASCII/1:64-4 192295305 6.240 ns/op BenchmarkIndexAnyASCII/1:64-4 192289118 6.240 ns/op BenchmarkIndexAnyASCII/1:64-4 192314619 6.240 ns/op BenchmarkIndexAnyASCII/16:1-4 267293971 4.575 ns/op BenchmarkIndexAnyASCII/16:1-4 267170330 4.552 ns/op BenchmarkIndexAnyASCII/16:1-4 261398022 4.521 ns/op BenchmarkIndexAnyASCII/16:1-4 261997220 4.570 ns/op BenchmarkIndexAnyASCII/16:1-4 268018850 4.612 ns/op BenchmarkIndexAnyASCII/16:1-4 262971892 4.603 ns/op BenchmarkIndexAnyASCII/16:1-4 262319853 4.542 ns/op BenchmarkIndexAnyASCII/16:1-4 264445124 4.612 ns/op BenchmarkIndexAnyASCII/16:1-4 260613007 4.531 ns/op BenchmarkIndexAnyASCII/16:1-4 266715388 4.576 ns/op BenchmarkIndexAnyASCII/16:2-4 79971114 15.01 ns/op BenchmarkIndexAnyASCII/16:2-4 79349654 14.97 ns/op BenchmarkIndexAnyASCII/16:2-4 81039640 14.98 ns/op BenchmarkIndexAnyASCII/16:2-4 81236043 14.97 ns/op BenchmarkIndexAnyASCII/16:2-4 80604592 14.92 ns/op BenchmarkIndexAnyASCII/16:2-4 81159624 14.97 ns/op BenchmarkIndexAnyASCII/16:2-4 81100435 14.86 ns/op BenchmarkIndexAnyASCII/16:2-4 80705538 14.93 ns/op BenchmarkIndexAnyASCII/16:2-4 79710019 14.95 ns/op BenchmarkIndexAnyASCII/16:2-4 80340165 14.96 ns/op BenchmarkIndexAnyASCII/16:4-4 68188578 17.62 ns/op BenchmarkIndexAnyASCII/16:4-4 67267834 17.67 ns/op BenchmarkIndexAnyASCII/16:4-4 67322665 17.70 ns/op BenchmarkIndexAnyASCII/16:4-4 67885489 17.64 ns/op BenchmarkIndexAnyASCII/16:4-4 68032976 17.69 ns/op BenchmarkIndexAnyASCII/16:4-4 68219318 17.63 ns/op BenchmarkIndexAnyASCII/16:4-4 67736389 17.70 ns/op BenchmarkIndexAnyASCII/16:4-4 67579188 17.74 ns/op BenchmarkIndexAnyASCII/16:4-4 68328199 17.62 ns/op BenchmarkIndexAnyASCII/16:4-4 68142964 17.68 ns/op BenchmarkIndexAnyASCII/16:8-4 50431586 23.86 ns/op BenchmarkIndexAnyASCII/16:8-4 50314188 23.86 ns/op BenchmarkIndexAnyASCII/16:8-4 50158749 23.85 ns/op BenchmarkIndexAnyASCII/16:8-4 50318703 23.84 ns/op BenchmarkIndexAnyASCII/16:8-4 50174353 23.86 ns/op BenchmarkIndexAnyASCII/16:8-4 50331345 23.86 ns/op BenchmarkIndexAnyASCII/16:8-4 50387180 23.85 ns/op BenchmarkIndexAnyASCII/16:8-4 50277972 23.87 ns/op BenchmarkIndexAnyASCII/16:8-4 50317711 23.94 ns/op BenchmarkIndexAnyASCII/16:8-4 49863411 23.87 ns/op BenchmarkIndexAnyASCII/16:16-4 34733821 34.81 ns/op BenchmarkIndexAnyASCII/16:16-4 30998804 34.63 ns/op BenchmarkIndexAnyASCII/16:16-4 33755395 34.74 ns/op BenchmarkIndexAnyASCII/16:16-4 34128614 34.76 ns/op BenchmarkIndexAnyASCII/16:16-4 34931518 34.97 ns/op BenchmarkIndexAnyASCII/16:16-4 34572836 35.07 ns/op BenchmarkIndexAnyASCII/16:16-4 34304884 35.18 ns/op BenchmarkIndexAnyASCII/16:16-4 31120508 34.96 ns/op BenchmarkIndexAnyASCII/16:16-4 34798303 34.97 ns/op BenchmarkIndexAnyASCII/16:16-4 34685520 34.74 ns/op BenchmarkIndexAnyASCII/16:32-4 20156733 60.52 ns/op BenchmarkIndexAnyASCII/16:32-4 19578538 60.73 ns/op BenchmarkIndexAnyASCII/16:32-4 19662451 60.97 ns/op BenchmarkIndexAnyASCII/16:32-4 20083088 60.61 ns/op BenchmarkIndexAnyASCII/16:32-4 19752273 60.11 ns/op BenchmarkIndexAnyASCII/16:32-4 20256308 60.36 ns/op BenchmarkIndexAnyASCII/16:32-4 19756293 60.52 ns/op BenchmarkIndexAnyASCII/16:32-4 19603396 60.41 ns/op BenchmarkIndexAnyASCII/16:32-4 19834658 60.75 ns/op BenchmarkIndexAnyASCII/16:32-4 19903472 60.68 ns/op BenchmarkIndexAnyASCII/16:64-4 12783720 96.96 ns/op BenchmarkIndexAnyASCII/16:64-4 12203070 93.80 ns/op BenchmarkIndexAnyASCII/16:64-4 12562908 97.73 ns/op BenchmarkIndexAnyASCII/16:64-4 12733920 96.63 ns/op BenchmarkIndexAnyASCII/16:64-4 12702622 97.35 ns/op BenchmarkIndexAnyASCII/16:64-4 12378733 96.62 ns/op BenchmarkIndexAnyASCII/16:64-4 12497029 97.05 ns/op BenchmarkIndexAnyASCII/16:64-4 12530760 95.50 ns/op BenchmarkIndexAnyASCII/16:64-4 12542199 94.75 ns/op BenchmarkIndexAnyASCII/16:64-4 12491593 95.45 ns/op BenchmarkIndexAnyASCII/256:1-4 176939094 6.782 ns/op BenchmarkIndexAnyASCII/256:1-4 176913571 6.782 ns/op BenchmarkIndexAnyASCII/256:1-4 176850759 6.782 ns/op BenchmarkIndexAnyASCII/256:1-4 176915248 6.783 ns/op BenchmarkIndexAnyASCII/256:1-4 176924476 6.783 ns/op BenchmarkIndexAnyASCII/256:1-4 176933409 6.783 ns/op BenchmarkIndexAnyASCII/256:1-4 176921652 6.783 ns/op BenchmarkIndexAnyASCII/256:1-4 176931522 6.782 ns/op BenchmarkIndexAnyASCII/256:1-4 176937556 6.783 ns/op BenchmarkIndexAnyASCII/256:1-4 176902351 6.783 ns/op BenchmarkIndexAnyASCII/256:2-4 8069299 149.4 ns/op BenchmarkIndexAnyASCII/256:2-4 8048572 148.9 ns/op BenchmarkIndexAnyASCII/256:2-4 8066131 149.0 ns/op BenchmarkIndexAnyASCII/256:2-4 8071304 148.8 ns/op BenchmarkIndexAnyASCII/256:2-4 8058764 149.0 ns/op BenchmarkIndexAnyASCII/256:2-4 8048832 148.9 ns/op BenchmarkIndexAnyASCII/256:2-4 8057205 149.0 ns/op BenchmarkIndexAnyASCII/256:2-4 8049013 149.0 ns/op BenchmarkIndexAnyASCII/256:2-4 8058058 149.3 ns/op BenchmarkIndexAnyASCII/256:2-4 8079121 149.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7990750 150.5 ns/op BenchmarkIndexAnyASCII/256:4-4 7989308 150.8 ns/op BenchmarkIndexAnyASCII/256:4-4 7981599 150.7 ns/op BenchmarkIndexAnyASCII/256:4-4 7984237 151.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7904539 151.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7982578 150.5 ns/op BenchmarkIndexAnyASCII/256:4-4 7942713 150.9 ns/op BenchmarkIndexAnyASCII/256:4-4 7947741 150.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7771312 150.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7842039 150.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7537687 160.3 ns/op BenchmarkIndexAnyASCII/256:8-4 7535602 158.7 ns/op BenchmarkIndexAnyASCII/256:8-4 7514077 159.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7557206 158.7 ns/op BenchmarkIndexAnyASCII/256:8-4 7559389 159.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7411842 160.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7556332 159.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7564138 159.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7544071 159.0 ns/op BenchmarkIndexAnyASCII/256:8-4 7569786 158.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7007978 171.2 ns/op BenchmarkIndexAnyASCII/256:16-4 6986353 171.5 ns/op BenchmarkIndexAnyASCII/256:16-4 6999914 171.1 ns/op BenchmarkIndexAnyASCII/256:16-4 7009298 171.4 ns/op BenchmarkIndexAnyASCII/256:16-4 6974368 171.3 ns/op BenchmarkIndexAnyASCII/256:16-4 7012765 171.1 ns/op BenchmarkIndexAnyASCII/256:16-4 7034371 170.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7030478 171.2 ns/op BenchmarkIndexAnyASCII/256:16-4 7007468 171.4 ns/op BenchmarkIndexAnyASCII/256:16-4 6973525 171.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6644426 180.5 ns/op BenchmarkIndexAnyASCII/256:32-4 6651283 180.7 ns/op BenchmarkIndexAnyASCII/256:32-4 6635869 180.6 ns/op BenchmarkIndexAnyASCII/256:32-4 6657124 180.6 ns/op BenchmarkIndexAnyASCII/256:32-4 6655850 180.5 ns/op BenchmarkIndexAnyASCII/256:32-4 6661124 180.5 ns/op BenchmarkIndexAnyASCII/256:32-4 6652412 180.4 ns/op BenchmarkIndexAnyASCII/256:32-4 6658056 180.6 ns/op BenchmarkIndexAnyASCII/256:32-4 6636478 180.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6666622 180.4 ns/op BenchmarkIndexAnyASCII/256:64-4 5286903 228.5 ns/op BenchmarkIndexAnyASCII/256:64-4 5239674 228.3 ns/op BenchmarkIndexAnyASCII/256:64-4 5244286 228.3 ns/op BenchmarkIndexAnyASCII/256:64-4 5246136 228.6 ns/op BenchmarkIndexAnyASCII/256:64-4 5243800 229.1 ns/op BenchmarkIndexAnyASCII/256:64-4 5252035 228.8 ns/op BenchmarkIndexAnyASCII/256:64-4 5246859 228.7 ns/op BenchmarkIndexAnyASCII/256:64-4 5244955 228.6 ns/op BenchmarkIndexAnyASCII/256:64-4 5277007 228.6 ns/op BenchmarkIndexAnyASCII/256:64-4 5256607 228.5 ns/op BenchmarkIndexAnyUTF8/1:1-4 295525206 4.060 ns/op BenchmarkIndexAnyUTF8/1:1-4 295618488 4.070 ns/op BenchmarkIndexAnyUTF8/1:1-4 315932486 4.047 ns/op BenchmarkIndexAnyUTF8/1:1-4 296567798 4.062 ns/op BenchmarkIndexAnyUTF8/1:1-4 306420750 3.972 ns/op BenchmarkIndexAnyUTF8/1:1-4 295544706 4.061 ns/op BenchmarkIndexAnyUTF8/1:1-4 307931216 4.062 ns/op BenchmarkIndexAnyUTF8/1:1-4 294892966 3.993 ns/op BenchmarkIndexAnyUTF8/1:1-4 304093885 4.060 ns/op BenchmarkIndexAnyUTF8/1:1-4 294889800 4.061 ns/op BenchmarkIndexAnyUTF8/1:2-4 202314991 5.919 ns/op BenchmarkIndexAnyUTF8/1:2-4 203261977 5.933 ns/op BenchmarkIndexAnyUTF8/1:2-4 204146298 5.885 ns/op BenchmarkIndexAnyUTF8/1:2-4 201666631 5.969 ns/op BenchmarkIndexAnyUTF8/1:2-4 201662428 5.880 ns/op BenchmarkIndexAnyUTF8/1:2-4 201873356 5.927 ns/op BenchmarkIndexAnyUTF8/1:2-4 202541062 5.969 ns/op BenchmarkIndexAnyUTF8/1:2-4 201963168 5.960 ns/op BenchmarkIndexAnyUTF8/1:2-4 204928369 5.969 ns/op BenchmarkIndexAnyUTF8/1:2-4 201599298 5.951 ns/op BenchmarkIndexAnyUTF8/1:4-4 210622384 5.920 ns/op BenchmarkIndexAnyUTF8/1:4-4 202197859 5.969 ns/op BenchmarkIndexAnyUTF8/1:4-4 201847762 5.919 ns/op BenchmarkIndexAnyUTF8/1:4-4 204299300 5.969 ns/op BenchmarkIndexAnyUTF8/1:4-4 202152530 5.928 ns/op BenchmarkIndexAnyUTF8/1:4-4 201047205 5.938 ns/op BenchmarkIndexAnyUTF8/1:4-4 202217476 5.956 ns/op BenchmarkIndexAnyUTF8/1:4-4 204222099 5.934 ns/op BenchmarkIndexAnyUTF8/1:4-4 201514838 5.969 ns/op BenchmarkIndexAnyUTF8/1:4-4 203169067 5.960 ns/op BenchmarkIndexAnyUTF8/1:8-4 201641487 5.936 ns/op BenchmarkIndexAnyUTF8/1:8-4 208411876 5.937 ns/op BenchmarkIndexAnyUTF8/1:8-4 201559597 5.957 ns/op BenchmarkIndexAnyUTF8/1:8-4 201575690 5.946 ns/op BenchmarkIndexAnyUTF8/1:8-4 203642635 5.969 ns/op BenchmarkIndexAnyUTF8/1:8-4 203538708 5.951 ns/op BenchmarkIndexAnyUTF8/1:8-4 207031050 5.961 ns/op BenchmarkIndexAnyUTF8/1:8-4 201987606 5.936 ns/op BenchmarkIndexAnyUTF8/1:8-4 201245500 5.969 ns/op BenchmarkIndexAnyUTF8/1:8-4 201522018 5.837 ns/op BenchmarkIndexAnyUTF8/1:16-4 211601628 5.690 ns/op BenchmarkIndexAnyUTF8/1:16-4 214230021 5.698 ns/op BenchmarkIndexAnyUTF8/1:16-4 221140762 5.643 ns/op BenchmarkIndexAnyUTF8/1:16-4 212380454 5.689 ns/op BenchmarkIndexAnyUTF8/1:16-4 212666847 5.662 ns/op BenchmarkIndexAnyUTF8/1:16-4 216959846 5.681 ns/op BenchmarkIndexAnyUTF8/1:16-4 213142176 5.697 ns/op BenchmarkIndexAnyUTF8/1:16-4 211303533 5.622 ns/op BenchmarkIndexAnyUTF8/1:16-4 210578854 5.650 ns/op BenchmarkIndexAnyUTF8/1:16-4 213236924 5.672 ns/op BenchmarkIndexAnyUTF8/1:32-4 194329532 6.136 ns/op BenchmarkIndexAnyUTF8/1:32-4 201044059 5.969 ns/op BenchmarkIndexAnyUTF8/1:32-4 201060356 6.006 ns/op BenchmarkIndexAnyUTF8/1:32-4 199514707 5.997 ns/op BenchmarkIndexAnyUTF8/1:32-4 201061374 5.969 ns/op BenchmarkIndexAnyUTF8/1:32-4 193402872 6.113 ns/op BenchmarkIndexAnyUTF8/1:32-4 194978040 6.130 ns/op BenchmarkIndexAnyUTF8/1:32-4 196295930 5.981 ns/op BenchmarkIndexAnyUTF8/1:32-4 201028192 6.028 ns/op BenchmarkIndexAnyUTF8/1:32-4 194237175 6.319 ns/op BenchmarkIndexAnyUTF8/1:64-4 192286198 6.241 ns/op BenchmarkIndexAnyUTF8/1:64-4 192270638 6.240 ns/op BenchmarkIndexAnyUTF8/1:64-4 192302797 6.240 ns/op BenchmarkIndexAnyUTF8/1:64-4 192311361 6.240 ns/op BenchmarkIndexAnyUTF8/1:64-4 192280786 6.240 ns/op BenchmarkIndexAnyUTF8/1:64-4 192284542 6.241 ns/op BenchmarkIndexAnyUTF8/1:64-4 192293460 6.241 ns/op BenchmarkIndexAnyUTF8/1:64-4 192306136 6.241 ns/op BenchmarkIndexAnyUTF8/1:64-4 192280508 6.240 ns/op BenchmarkIndexAnyUTF8/1:64-4 192285379 6.240 ns/op BenchmarkIndexAnyUTF8/16:1-4 74893935 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74998087 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74897866 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74919690 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 75007401 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74922403 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74893267 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74912815 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74892192 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74945570 16.01 ns/op BenchmarkIndexAnyUTF8/16:2-4 20055552 61.59 ns/op BenchmarkIndexAnyUTF8/16:2-4 20091901 59.96 ns/op BenchmarkIndexAnyUTF8/16:2-4 20043699 61.75 ns/op BenchmarkIndexAnyUTF8/16:2-4 20070784 59.95 ns/op BenchmarkIndexAnyUTF8/16:2-4 20115451 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20064364 59.96 ns/op BenchmarkIndexAnyUTF8/16:2-4 19035654 59.96 ns/op BenchmarkIndexAnyUTF8/16:2-4 20059776 59.96 ns/op BenchmarkIndexAnyUTF8/16:2-4 20042847 59.97 ns/op BenchmarkIndexAnyUTF8/16:2-4 20046685 62.95 ns/op BenchmarkIndexAnyUTF8/16:4-4 20063798 63.74 ns/op BenchmarkIndexAnyUTF8/16:4-4 19052430 59.96 ns/op BenchmarkIndexAnyUTF8/16:4-4 20129812 62.15 ns/op BenchmarkIndexAnyUTF8/16:4-4 18743504 59.96 ns/op BenchmarkIndexAnyUTF8/16:4-4 20115026 63.97 ns/op BenchmarkIndexAnyUTF8/16:4-4 18730435 63.98 ns/op BenchmarkIndexAnyUTF8/16:4-4 20049577 59.95 ns/op BenchmarkIndexAnyUTF8/16:4-4 19462568 64.11 ns/op BenchmarkIndexAnyUTF8/16:4-4 20043633 62.33 ns/op BenchmarkIndexAnyUTF8/16:4-4 19004371 64.14 ns/op BenchmarkIndexAnyUTF8/16:8-4 20072684 62.59 ns/op BenchmarkIndexAnyUTF8/16:8-4 20009230 63.91 ns/op BenchmarkIndexAnyUTF8/16:8-4 20027354 62.21 ns/op BenchmarkIndexAnyUTF8/16:8-4 20062716 59.95 ns/op BenchmarkIndexAnyUTF8/16:8-4 20051241 59.96 ns/op BenchmarkIndexAnyUTF8/16:8-4 20037364 61.86 ns/op BenchmarkIndexAnyUTF8/16:8-4 20074908 59.96 ns/op BenchmarkIndexAnyUTF8/16:8-4 20058196 60.31 ns/op BenchmarkIndexAnyUTF8/16:8-4 20108998 60.93 ns/op BenchmarkIndexAnyUTF8/16:8-4 20064996 59.96 ns/op BenchmarkIndexAnyUTF8/16:16-4 20171829 58.97 ns/op BenchmarkIndexAnyUTF8/16:16-4 18872149 58.88 ns/op BenchmarkIndexAnyUTF8/16:16-4 19936272 59.56 ns/op BenchmarkIndexAnyUTF8/16:16-4 20370764 59.52 ns/op BenchmarkIndexAnyUTF8/16:16-4 20372382 59.65 ns/op BenchmarkIndexAnyUTF8/16:16-4 18856008 59.18 ns/op BenchmarkIndexAnyUTF8/16:16-4 20101316 58.87 ns/op BenchmarkIndexAnyUTF8/16:16-4 18984265 61.74 ns/op BenchmarkIndexAnyUTF8/16:16-4 19204941 59.91 ns/op BenchmarkIndexAnyUTF8/16:16-4 19959504 59.45 ns/op BenchmarkIndexAnyUTF8/16:32-4 18690478 63.55 ns/op BenchmarkIndexAnyUTF8/16:32-4 18549481 67.93 ns/op BenchmarkIndexAnyUTF8/16:32-4 18707862 64.30 ns/op BenchmarkIndexAnyUTF8/16:32-4 18886831 64.30 ns/op BenchmarkIndexAnyUTF8/16:32-4 18697557 63.54 ns/op BenchmarkIndexAnyUTF8/16:32-4 18561399 63.58 ns/op BenchmarkIndexAnyUTF8/16:32-4 18383604 63.55 ns/op BenchmarkIndexAnyUTF8/16:32-4 18680774 63.57 ns/op BenchmarkIndexAnyUTF8/16:32-4 18260349 67.87 ns/op BenchmarkIndexAnyUTF8/16:32-4 18612210 63.49 ns/op BenchmarkIndexAnyUTF8/16:64-4 17691636 68.25 ns/op BenchmarkIndexAnyUTF8/16:64-4 17389147 67.94 ns/op BenchmarkIndexAnyUTF8/16:64-4 17581333 68.37 ns/op BenchmarkIndexAnyUTF8/16:64-4 17691308 67.92 ns/op BenchmarkIndexAnyUTF8/16:64-4 17330691 67.89 ns/op BenchmarkIndexAnyUTF8/16:64-4 17401657 67.91 ns/op BenchmarkIndexAnyUTF8/16:64-4 17324402 67.91 ns/op BenchmarkIndexAnyUTF8/16:64-4 17246356 67.83 ns/op BenchmarkIndexAnyUTF8/16:64-4 17278933 67.92 ns/op BenchmarkIndexAnyUTF8/16:64-4 17678209 67.90 ns/op BenchmarkIndexAnyUTF8/256:1-4 5551897 215.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 5549359 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5550045 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5550153 216.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 5550243 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5546258 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5556710 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5545508 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5550210 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5547759 216.1 ns/op BenchmarkIndexAnyUTF8/256:2-4 1262869 943.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314687 927.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314668 912.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314709 973.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314650 912.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314700 912.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314712 930.4 ns/op BenchmarkIndexAnyUTF8/256:2-4 1263021 913.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 1261459 979.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314733 912.8 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314542 912.8 ns/op BenchmarkIndexAnyUTF8/256:4-4 1296811 980.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314596 912.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314644 964.8 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314642 946.4 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225827 980.8 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314775 912.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 1305646 980.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314748 912.8 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225209 978.2 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314598 912.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314441 912.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314540 979.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 1256864 912.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314710 912.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314606 912.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314658 912.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 1239834 963.1 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314684 969.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314774 979.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315671 912.2 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315597 912.2 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315599 912.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315627 912.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315645 912.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315512 912.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315461 912.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315587 912.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315530 912.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315610 912.2 ns/op BenchmarkIndexAnyUTF8/256:32-4 1220980 1050 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1001 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1013 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1050 ns/op BenchmarkIndexAnyUTF8/256:32-4 1220772 1050 ns/op BenchmarkIndexAnyUTF8/256:32-4 1000000 1048 ns/op BenchmarkIndexAnyUTF8/256:32-4 1221724 982.2 ns/op BenchmarkIndexAnyUTF8/256:32-4 1221812 982.3 ns/op BenchmarkIndexAnyUTF8/256:32-4 1221807 982.1 ns/op BenchmarkIndexAnyUTF8/256:32-4 1221680 982.2 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1052 ns/op BenchmarkLastIndexAnyASCII/1:1-4 221488220 5.409 ns/op BenchmarkLastIndexAnyASCII/1:1-4 232724515 5.391 ns/op BenchmarkLastIndexAnyASCII/1:1-4 220054549 5.240 ns/op BenchmarkLastIndexAnyASCII/1:1-4 226323127 5.126 ns/op BenchmarkLastIndexAnyASCII/1:1-4 224470515 5.426 ns/op BenchmarkLastIndexAnyASCII/1:1-4 221534426 5.426 ns/op BenchmarkLastIndexAnyASCII/1:1-4 232796880 5.370 ns/op BenchmarkLastIndexAnyASCII/1:1-4 243913038 5.129 ns/op BenchmarkLastIndexAnyASCII/1:1-4 222881314 5.423 ns/op BenchmarkLastIndexAnyASCII/1:1-4 232722778 5.394 ns/op BenchmarkLastIndexAnyASCII/1:2-4 225072835 5.422 ns/op BenchmarkLastIndexAnyASCII/1:2-4 224525132 5.329 ns/op BenchmarkLastIndexAnyASCII/1:2-4 224668334 5.336 ns/op BenchmarkLastIndexAnyASCII/1:2-4 232808580 5.382 ns/op BenchmarkLastIndexAnyASCII/1:2-4 237955394 5.315 ns/op BenchmarkLastIndexAnyASCII/1:2-4 221167770 5.419 ns/op BenchmarkLastIndexAnyASCII/1:2-4 232772031 5.418 ns/op BenchmarkLastIndexAnyASCII/1:2-4 221144444 5.364 ns/op BenchmarkLastIndexAnyASCII/1:2-4 232769463 5.314 ns/op BenchmarkLastIndexAnyASCII/1:2-4 224959098 5.426 ns/op BenchmarkLastIndexAnyASCII/1:4-4 236374090 5.086 ns/op BenchmarkLastIndexAnyASCII/1:4-4 224119548 5.380 ns/op BenchmarkLastIndexAnyASCII/1:4-4 224034614 5.426 ns/op BenchmarkLastIndexAnyASCII/1:4-4 223327765 5.393 ns/op BenchmarkLastIndexAnyASCII/1:4-4 228646518 5.371 ns/op BenchmarkLastIndexAnyASCII/1:4-4 225290754 5.426 ns/op BenchmarkLastIndexAnyASCII/1:4-4 223232116 5.423 ns/op BenchmarkLastIndexAnyASCII/1:4-4 234209235 5.322 ns/op BenchmarkLastIndexAnyASCII/1:4-4 224552209 5.423 ns/op BenchmarkLastIndexAnyASCII/1:4-4 231841861 5.359 ns/op BenchmarkLastIndexAnyASCII/1:8-4 232804522 5.442 ns/op BenchmarkLastIndexAnyASCII/1:8-4 232773631 5.282 ns/op BenchmarkLastIndexAnyASCII/1:8-4 231546086 5.098 ns/op BenchmarkLastIndexAnyASCII/1:8-4 222828390 5.370 ns/op BenchmarkLastIndexAnyASCII/1:8-4 232776244 5.413 ns/op BenchmarkLastIndexAnyASCII/1:8-4 229565604 5.321 ns/op BenchmarkLastIndexAnyASCII/1:8-4 227299182 5.132 ns/op BenchmarkLastIndexAnyASCII/1:8-4 223989913 5.426 ns/op BenchmarkLastIndexAnyASCII/1:8-4 229663686 5.426 ns/op BenchmarkLastIndexAnyASCII/1:8-4 234294374 5.415 ns/op BenchmarkLastIndexAnyASCII/1:16-4 242735449 4.880 ns/op BenchmarkLastIndexAnyASCII/1:16-4 234682286 4.868 ns/op BenchmarkLastIndexAnyASCII/1:16-4 248712562 4.876 ns/op BenchmarkLastIndexAnyASCII/1:16-4 232778583 5.155 ns/op BenchmarkLastIndexAnyASCII/1:16-4 254301961 5.152 ns/op BenchmarkLastIndexAnyASCII/1:16-4 232789456 4.875 ns/op BenchmarkLastIndexAnyASCII/1:16-4 233109470 5.148 ns/op BenchmarkLastIndexAnyASCII/1:16-4 238378171 5.155 ns/op BenchmarkLastIndexAnyASCII/1:16-4 247886529 5.089 ns/op BenchmarkLastIndexAnyASCII/1:16-4 260155934 5.095 ns/op BenchmarkLastIndexAnyASCII/1:32-4 224166757 4.951 ns/op BenchmarkLastIndexAnyASCII/1:32-4 223758360 5.384 ns/op BenchmarkLastIndexAnyASCII/1:32-4 234197644 5.151 ns/op BenchmarkLastIndexAnyASCII/1:32-4 238898584 5.391 ns/op BenchmarkLastIndexAnyASCII/1:32-4 245719946 5.136 ns/op BenchmarkLastIndexAnyASCII/1:32-4 221372374 5.126 ns/op BenchmarkLastIndexAnyASCII/1:32-4 230904280 5.136 ns/op BenchmarkLastIndexAnyASCII/1:32-4 222778083 5.092 ns/op BenchmarkLastIndexAnyASCII/1:32-4 243899389 5.687 ns/op BenchmarkLastIndexAnyASCII/1:32-4 224640945 5.417 ns/op BenchmarkLastIndexAnyASCII/1:64-4 210916945 5.698 ns/op BenchmarkLastIndexAnyASCII/1:64-4 210608342 5.535 ns/op BenchmarkLastIndexAnyASCII/1:64-4 212796144 5.679 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221121002 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 213196831 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221156929 5.612 ns/op BenchmarkLastIndexAnyASCII/1:64-4 212869046 5.698 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221142094 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221146221 5.426 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221145231 5.427 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85537588 14.04 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85803834 14.10 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85605871 14.11 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85571076 14.03 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85317988 14.03 ns/op BenchmarkLastIndexAnyASCII/16:1-4 84682250 14.09 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85545698 14.02 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85596834 14.05 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85663566 14.06 ns/op BenchmarkLastIndexAnyASCII/16:1-4 85069278 14.08 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79034289 15.09 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79529118 15.17 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79975143 15.07 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79692852 15.05 ns/op BenchmarkLastIndexAnyASCII/16:2-4 78505089 15.08 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80070070 15.08 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79792947 15.09 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80136321 15.08 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79650159 15.08 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79135560 15.01 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67381126 17.84 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67342863 17.87 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67247229 17.84 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67165105 17.86 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67073200 17.84 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67349817 17.86 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67199517 17.85 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67198351 17.85 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67188232 17.86 ns/op BenchmarkLastIndexAnyASCII/16:4-4 66964916 17.85 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47334715 25.46 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47233081 25.45 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47032425 25.45 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46863790 25.46 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47004754 25.48 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47114432 25.45 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47199232 25.48 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47152885 25.46 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47205955 25.44 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47065944 25.43 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34356470 34.95 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34418235 34.85 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34338234 34.89 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34443913 34.83 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34500684 34.88 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34466408 34.85 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34468220 34.89 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34122366 34.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34402134 34.84 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34350619 34.86 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19713739 57.69 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20575566 57.99 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20130195 57.57 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20499184 57.12 ns/op BenchmarkLastIndexAnyASCII/16:32-4 21537993 56.97 ns/op BenchmarkLastIndexAnyASCII/16:32-4 21260515 57.74 ns/op BenchmarkLastIndexAnyASCII/16:32-4 21074641 57.46 ns/op BenchmarkLastIndexAnyASCII/16:32-4 21369577 57.74 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20785600 57.98 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20999384 57.75 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11239756 106.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11355690 109.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11007328 106.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11390881 106.5 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11402695 107.6 ns/op BenchmarkLastIndexAnyASCII/16:64-4 10922224 108.0 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11063821 106.6 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11068114 105.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11156923 107.0 ns/op BenchmarkLastIndexAnyASCII/16:64-4 10957477 107.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8000617 149.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7994444 150.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8024174 150.3 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8043870 149.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7936332 149.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7989771 150.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8046709 150.3 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8052726 150.4 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7948734 150.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7969624 150.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7961886 151.0 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7974135 151.6 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7812301 150.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7979256 151.0 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7973684 151.3 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7932000 150.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7881190 150.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7830867 151.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7927953 151.5 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7907280 150.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7727216 153.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7867670 153.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7861713 153.1 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7883112 153.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7755770 154.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7847073 153.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7863212 153.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7847404 153.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7847968 153.6 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7880282 153.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7405388 161.9 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7271626 160.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7456339 160.9 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7476771 161.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7429171 161.2 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7481538 160.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7321501 160.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7483987 160.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7469484 160.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7467122 162.0 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7191649 167.1 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7192605 167.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7156542 167.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7207147 167.1 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7186999 167.8 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7113890 167.0 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7158644 167.6 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7183948 167.6 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7181919 166.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7174484 167.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6780534 176.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6756627 177.1 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6770667 177.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6787423 176.8 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6779401 177.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6792492 176.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6782806 177.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6793742 177.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6779301 176.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6786278 177.0 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5359069 223.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5382780 223.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5370739 223.6 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5372230 224.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5377947 223.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5362354 224.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5351988 223.8 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5373007 224.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5373166 223.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5374102 223.6 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 225109773 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 225424216 5.408 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 227388766 5.413 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 236395230 5.359 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 239373688 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 244352103 5.409 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 221147762 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 222878763 5.260 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 232789694 5.413 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 221150436 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 228691167 5.297 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 230388894 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 222849873 5.408 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 224925847 5.678 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 222220726 5.403 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 221492548 5.424 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 232362300 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 226241852 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 224450756 5.388 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 232802988 5.392 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 225394213 5.206 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 230454644 5.302 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 225985635 5.405 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 223187697 5.409 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 224610752 5.389 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 223992632 5.393 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 232753437 5.391 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 222744126 5.632 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 232806536 5.345 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 225491910 5.389 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 232793307 5.327 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 222882667 5.435 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 221172810 5.249 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 222715412 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 233658658 5.191 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 227786484 5.357 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 223572006 5.251 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 230099301 5.315 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 227166196 5.380 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 222013078 5.414 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 232818556 5.155 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 232809150 5.151 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 235617337 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 235336059 4.865 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 229877502 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 239811354 5.025 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 239414577 5.053 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 234112568 5.148 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 232812310 5.151 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 234673572 5.136 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 211699801 5.697 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 233099272 5.382 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 222249379 5.423 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 224050279 5.132 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 238912304 5.422 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 226865692 5.698 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 219451294 5.390 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 232732533 5.369 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 212399196 5.697 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 222878842 5.370 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 212693992 5.697 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 213900357 5.680 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 216642478 5.697 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 210901695 5.681 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221154829 5.689 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 215464819 5.672 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 212343079 5.698 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221138988 5.666 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 213624276 5.478 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221157648 5.607 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34766796 34.46 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34801833 34.45 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34791854 34.18 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34827226 34.45 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35117198 34.18 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35096523 34.18 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34817151 34.18 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34801572 34.18 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35052511 34.45 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 35095321 34.19 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15414854 84.00 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14949864 84.59 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15159084 88.33 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13863255 93.68 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15412244 85.73 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15397876 85.61 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14742614 88.12 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15368686 85.54 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14831940 88.13 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15355677 84.40 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14597212 85.79 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14350732 85.88 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14754170 85.96 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 15395503 85.77 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14972053 85.21 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14071520 85.99 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13366357 88.30 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14524118 85.97 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 15122328 85.79 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14497917 89.70 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 15123655 84.43 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14735402 86.99 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14895079 85.55 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13836288 86.39 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14706444 85.51 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13305177 87.05 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14685099 85.46 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 15346728 85.77 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 15005316 87.75 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 15140445 84.15 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15629275 79.31 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15261999 82.20 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 16320896 81.19 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15993656 82.15 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15826009 77.87 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15592747 77.87 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 16049944 81.98 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 14931285 82.12 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 16321851 81.69 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 16315580 77.81 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14070188 93.03 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14813696 82.20 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14835526 82.14 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14588437 94.42 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14777894 86.40 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 13524558 91.28 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 13184808 89.56 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14682624 82.19 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14636966 83.37 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 13842466 87.78 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 14042430 86.55 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13885842 86.55 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13899049 86.54 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13478775 93.21 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13074148 90.80 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 14012775 90.24 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13940269 93.44 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13962711 86.54 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 14040958 89.24 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 14019865 86.43 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2426365 494.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2426145 494.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2427670 494.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2426296 494.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2427433 494.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2425999 494.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2426311 494.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2427319 494.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2427810 494.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2427532 494.6 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1251 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1298 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 951945 1274 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1298 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1256 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1268 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1258 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 954014 1258 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1262 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1301 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1310 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1256 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1256 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1276 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1255 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1254 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1249 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1256 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1256 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1289 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1254 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 954322 1266 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1298 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 903891 1250 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1213 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1224 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1186 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1231 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1249 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1224 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1188 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1189 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1188 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1190 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 952292 1259 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 953497 1330 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 902518 1391 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 952346 1259 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 952573 1373 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 951871 1259 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 953026 1259 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 952951 1333 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 901974 1259 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 952150 1284 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903172 1328 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902535 1328 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902811 1394 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902850 1328 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902725 1353 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902175 1328 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903280 1328 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902192 1357 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903132 1385 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902232 1369 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234592 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234420 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234670 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234706 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234729 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234609 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234697 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234646 5107 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234620 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234524 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234210 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234222 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234105 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234330 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234247 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234290 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234237 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234321 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234316 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234265 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20546 58391 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20547 58397 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20544 58390 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20541 58401 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20562 58316 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20572 58314 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20572 58309 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20572 58314 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20578 58310 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20550 58383 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41145 29155 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41152 29147 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41118 29150 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41142 29178 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41056 29222 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41070 29150 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41043 29225 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41037 29225 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41034 29229 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41065 29220 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81882 14652 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81706 14685 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81643 14652 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81638 14691 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81591 14688 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81679 14643 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81745 14653 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81673 14697 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81675 14697 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 81726 14655 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161361 7428 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161577 7431 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161142 7437 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161200 7443 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161539 7429 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161254 7433 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161612 7436 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 160940 7455 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161428 7428 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161268 7425 ns/op BenchmarkIndexByte_Bytes/10-4 393654192 3.048 ns/op 3280.36 MB/s BenchmarkIndexByte_Bytes/10-4 368583542 3.255 ns/op 3071.75 MB/s BenchmarkIndexByte_Bytes/10-4 368617791 3.050 ns/op 3278.83 MB/s BenchmarkIndexByte_Bytes/10-4 368620486 3.053 ns/op 3275.73 MB/s BenchmarkIndexByte_Bytes/10-4 393416106 3.051 ns/op 3278.13 MB/s BenchmarkIndexByte_Bytes/10-4 368601555 3.050 ns/op 3279.10 MB/s BenchmarkIndexByte_Bytes/10-4 368589304 3.050 ns/op 3278.74 MB/s BenchmarkIndexByte_Bytes/10-4 368582784 3.256 ns/op 3071.60 MB/s BenchmarkIndexByte_Bytes/10-4 368605088 3.255 ns/op 3072.05 MB/s BenchmarkIndexByte_Bytes/10-4 393307638 3.255 ns/op 3071.76 MB/s BenchmarkIndexByte_Bytes/32-4 339611881 3.534 ns/op 9056.10 MB/s BenchmarkIndexByte_Bytes/32-4 339699193 3.533 ns/op 9058.18 MB/s BenchmarkIndexByte_Bytes/32-4 315950335 3.798 ns/op 8425.05 MB/s BenchmarkIndexByte_Bytes/32-4 316058744 3.796 ns/op 8429.56 MB/s BenchmarkIndexByte_Bytes/32-4 315954963 3.533 ns/op 9057.76 MB/s BenchmarkIndexByte_Bytes/32-4 315911752 3.532 ns/op 9059.96 MB/s BenchmarkIndexByte_Bytes/32-4 316832860 3.794 ns/op 8433.56 MB/s BenchmarkIndexByte_Bytes/32-4 316270676 3.533 ns/op 9058.07 MB/s BenchmarkIndexByte_Bytes/32-4 315912618 3.532 ns/op 9059.04 MB/s BenchmarkIndexByte_Bytes/32-4 316060675 3.533 ns/op 9057.18 MB/s BenchmarkIndexByte_Bytes/4K-4 24684442 45.03 ns/op 90954.70 MB/s BenchmarkIndexByte_Bytes/4K-4 25896040 45.04 ns/op 90949.86 MB/s BenchmarkIndexByte_Bytes/4K-4 24242768 45.03 ns/op 90956.70 MB/s BenchmarkIndexByte_Bytes/4K-4 25958928 45.24 ns/op 90536.91 MB/s BenchmarkIndexByte_Bytes/4K-4 26631662 45.09 ns/op 90838.66 MB/s BenchmarkIndexByte_Bytes/4K-4 24729865 45.04 ns/op 90949.52 MB/s BenchmarkIndexByte_Bytes/4K-4 26248971 45.03 ns/op 90953.38 MB/s BenchmarkIndexByte_Bytes/4K-4 26625949 45.04 ns/op 90938.87 MB/s BenchmarkIndexByte_Bytes/4K-4 26647850 45.03 ns/op 90955.40 MB/s BenchmarkIndexByte_Bytes/4K-4 26625234 45.19 ns/op 90629.73 MB/s BenchmarkIndexByte_Bytes/4M-4 27628 43447 ns/op 96537.52 MB/s BenchmarkIndexByte_Bytes/4M-4 27648 43424 ns/op 96589.41 MB/s BenchmarkIndexByte_Bytes/4M-4 27618 43397 ns/op 96650.25 MB/s BenchmarkIndexByte_Bytes/4M-4 27636 43404 ns/op 96633.77 MB/s BenchmarkIndexByte_Bytes/4M-4 27651 43412 ns/op 96615.36 MB/s BenchmarkIndexByte_Bytes/4M-4 27622 43414 ns/op 96610.78 MB/s BenchmarkIndexByte_Bytes/4M-4 27622 43434 ns/op 96568.03 MB/s BenchmarkIndexByte_Bytes/4M-4 27658 43412 ns/op 96616.17 MB/s BenchmarkIndexByte_Bytes/4M-4 27660 43430 ns/op 96575.18 MB/s BenchmarkIndexByte_Bytes/4M-4 27632 43405 ns/op 96631.14 MB/s BenchmarkIndexByte_Bytes/64M-4 733 1406705 ns/op 47706.41 MB/s BenchmarkIndexByte_Bytes/64M-4 829 1416133 ns/op 47388.82 MB/s BenchmarkIndexByte_Bytes/64M-4 824 1415460 ns/op 47411.34 MB/s BenchmarkIndexByte_Bytes/64M-4 826 1411218 ns/op 47553.85 MB/s BenchmarkIndexByte_Bytes/64M-4 826 1402941 ns/op 47834.43 MB/s BenchmarkIndexByte_Bytes/64M-4 824 1419769 ns/op 47267.46 MB/s BenchmarkIndexByte_Bytes/64M-4 835 1422289 ns/op 47183.72 MB/s BenchmarkIndexByte_Bytes/64M-4 830 1415556 ns/op 47408.13 MB/s BenchmarkIndexByte_Bytes/64M-4 831 1407008 ns/op 47696.15 MB/s BenchmarkIndexByte_Bytes/64M-4 824 1409748 ns/op 47603.45 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.73 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.68 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.63 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.59 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.58 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.61 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 12.19 ns/op 820.60 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.61 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.73 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.94 ns/op 837.64 MB/s BenchmarkIndexRune_Bytes/32-4 90208606 13.29 ns/op 2407.84 MB/s BenchmarkIndexRune_Bytes/32-4 90114302 13.29 ns/op 2407.60 MB/s BenchmarkIndexRune_Bytes/32-4 90177484 13.29 ns/op 2408.32 MB/s BenchmarkIndexRune_Bytes/32-4 90226167 13.29 ns/op 2407.84 MB/s BenchmarkIndexRune_Bytes/32-4 90313425 13.29 ns/op 2407.81 MB/s BenchmarkIndexRune_Bytes/32-4 90294805 13.29 ns/op 2407.66 MB/s BenchmarkIndexRune_Bytes/32-4 90192802 13.29 ns/op 2407.58 MB/s BenchmarkIndexRune_Bytes/32-4 90229084 13.29 ns/op 2407.19 MB/s BenchmarkIndexRune_Bytes/32-4 90334508 13.29 ns/op 2407.29 MB/s BenchmarkIndexRune_Bytes/32-4 90257655 13.29 ns/op 2407.83 MB/s BenchmarkIndexRune_Bytes/4K-4 20562894 58.30 ns/op 70256.77 MB/s BenchmarkIndexRune_Bytes/4K-4 20326460 58.28 ns/op 70279.22 MB/s BenchmarkIndexRune_Bytes/4K-4 20564007 58.30 ns/op 70258.64 MB/s BenchmarkIndexRune_Bytes/4K-4 20616855 58.28 ns/op 70287.06 MB/s BenchmarkIndexRune_Bytes/4K-4 20571555 58.26 ns/op 70299.51 MB/s BenchmarkIndexRune_Bytes/4K-4 20563112 58.29 ns/op 70264.64 MB/s BenchmarkIndexRune_Bytes/4K-4 20588037 58.29 ns/op 70267.65 MB/s BenchmarkIndexRune_Bytes/4K-4 20591980 58.29 ns/op 70270.57 MB/s BenchmarkIndexRune_Bytes/4K-4 20573072 58.28 ns/op 70277.93 MB/s BenchmarkIndexRune_Bytes/4K-4 20590358 58.26 ns/op 70307.65 MB/s BenchmarkIndexRune_Bytes/4M-4 22203 54094 ns/op 77537.54 MB/s BenchmarkIndexRune_Bytes/4M-4 22184 54107 ns/op 77517.99 MB/s BenchmarkIndexRune_Bytes/4M-4 22168 54109 ns/op 77515.56 MB/s BenchmarkIndexRune_Bytes/4M-4 22206 54070 ns/op 77571.47 MB/s BenchmarkIndexRune_Bytes/4M-4 22186 54114 ns/op 77508.69 MB/s BenchmarkIndexRune_Bytes/4M-4 22203 54088 ns/op 77546.44 MB/s BenchmarkIndexRune_Bytes/4M-4 22186 54116 ns/op 77505.84 MB/s BenchmarkIndexRune_Bytes/4M-4 22188 54076 ns/op 77563.03 MB/s BenchmarkIndexRune_Bytes/4M-4 22201 54076 ns/op 77563.61 MB/s BenchmarkIndexRune_Bytes/4M-4 22194 54093 ns/op 77538.66 MB/s BenchmarkIndexRune_Bytes/64M-4 730 1519041 ns/op 44178.46 MB/s BenchmarkIndexRune_Bytes/64M-4 766 1522128 ns/op 44088.85 MB/s BenchmarkIndexRune_Bytes/64M-4 763 1518685 ns/op 44188.78 MB/s BenchmarkIndexRune_Bytes/64M-4 769 1515822 ns/op 44272.27 MB/s BenchmarkIndexRune_Bytes/64M-4 766 1519791 ns/op 44156.63 MB/s BenchmarkIndexRune_Bytes/64M-4 768 1518159 ns/op 44204.10 MB/s BenchmarkIndexRune_Bytes/64M-4 771 1527944 ns/op 43921.01 MB/s BenchmarkIndexRune_Bytes/64M-4 769 1523746 ns/op 44042.04 MB/s BenchmarkIndexRune_Bytes/64M-4 765 1533783 ns/op 43753.83 MB/s BenchmarkIndexRune_Bytes/64M-4 772 1522191 ns/op 44087.01 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 371850213 3.252 ns/op 3074.71 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370540386 3.251 ns/op 3075.85 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370522869 3.256 ns/op 3071.38 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370216616 3.252 ns/op 3075.22 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370337316 3.252 ns/op 3075.46 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370466692 3.256 ns/op 3071.60 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370293667 3.252 ns/op 3075.04 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370259356 3.252 ns/op 3075.06 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370297072 3.252 ns/op 3075.38 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 370411512 3.252 ns/op 3075.33 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340150707 3.529 ns/op 9067.87 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340248358 3.527 ns/op 9072.15 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340194207 3.528 ns/op 9070.64 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340258963 3.528 ns/op 9069.66 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340207526 3.527 ns/op 9072.66 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340210390 3.528 ns/op 9070.86 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340245079 3.527 ns/op 9073.28 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340128580 3.528 ns/op 9069.85 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340176588 3.527 ns/op 9072.52 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 340145365 3.527 ns/op 9072.98 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 26489605 50.69 ns/op 80810.03 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 25469404 50.66 ns/op 80854.03 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 26478364 50.67 ns/op 80837.55 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24635230 50.68 ns/op 80828.40 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24705349 45.30 ns/op 90409.80 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24740826 50.71 ns/op 80777.44 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24541780 50.69 ns/op 80812.54 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24330397 45.31 ns/op 90400.20 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24673651 50.67 ns/op 80831.32 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24719200 50.69 ns/op 80812.17 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27552 43489 ns/op 96445.44 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27553 43491 ns/op 96439.87 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27582 43542 ns/op 96326.94 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27584 43533 ns/op 96347.87 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27579 43536 ns/op 96341.65 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27590 43518 ns/op 96381.23 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27565 43496 ns/op 96428.73 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27580 43485 ns/op 96454.76 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27585 43539 ns/op 96334.97 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27570 43536 ns/op 96341.10 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 770 1428532 ns/op 46977.52 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 818 1412444 ns/op 47512.57 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 816 1428425 ns/op 46981.03 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 814 1430850 ns/op 46901.40 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 816 1433904 ns/op 46801.50 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 817 1412144 ns/op 47522.69 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 817 1415827 ns/op 47399.04 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 814 1416095 ns/op 47390.10 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 823 1430661 ns/op 46907.59 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 825 1434746 ns/op 46774.05 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340181908 3.467 ns/op 2884.25 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340253312 3.527 ns/op 2835.03 MB/s BenchmarkIndexNonASCII_Bytes/10-4 348125340 3.467 ns/op 2884.40 MB/s BenchmarkIndexNonASCII_Bytes/10-4 346813651 3.461 ns/op 2889.27 MB/s BenchmarkIndexNonASCII_Bytes/10-4 347581180 3.462 ns/op 2888.69 MB/s BenchmarkIndexNonASCII_Bytes/10-4 347152482 3.497 ns/op 2859.27 MB/s BenchmarkIndexNonASCII_Bytes/10-4 345167058 3.455 ns/op 2894.26 MB/s BenchmarkIndexNonASCII_Bytes/10-4 347988717 3.455 ns/op 2894.38 MB/s BenchmarkIndexNonASCII_Bytes/10-4 346153692 3.469 ns/op 2882.50 MB/s BenchmarkIndexNonASCII_Bytes/10-4 348337956 3.504 ns/op 2853.60 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.18 ns/op 3142.04 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.04 ns/op 3188.31 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.13 ns/op 3158.54 MB/s BenchmarkIndexNonASCII_Bytes/32-4 116069960 10.33 ns/op 3098.15 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.32 ns/op 3101.93 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.37 ns/op 3085.11 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.04 ns/op 3187.98 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.04 ns/op 3188.28 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.28 ns/op 3113.23 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.10 ns/op 3166.91 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1118 ns/op 3662.47 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1119 ns/op 3661.97 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1126 ns/op 3637.71 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1119 ns/op 3661.01 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1120 ns/op 3657.37 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3645.63 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1122 ns/op 3649.07 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1119 ns/op 3660.42 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1118 ns/op 3662.16 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1118 ns/op 3662.17 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1050 1139359 ns/op 3681.28 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139934 ns/op 3679.43 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139362 ns/op 3681.27 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139323 ns/op 3681.40 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139710 ns/op 3680.15 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139535 ns/op 3680.71 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139892 ns/op 3679.56 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1050 1140242 ns/op 3678.43 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1050 1140177 ns/op 3678.64 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1050 1140327 ns/op 3678.16 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 64 18311943 ns/op 3664.76 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18311288 ns/op 3664.89 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18316218 ns/op 3663.90 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18312242 ns/op 3664.70 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18311204 ns/op 3664.91 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18307495 ns/op 3665.65 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18300648 ns/op 3667.02 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18305215 ns/op 3666.11 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18302480 ns/op 3666.65 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 56 18304117 ns/op 3666.33 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2043.651s strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/stdlib.10.1707000584.3ecb49c8.txt 0000664 0000000 0000000 00000276704 14720254634 0027041 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 BenchmarkIndexRune-4 98016976 12.24 ns/op BenchmarkIndexRune-4 97824400 12.24 ns/op BenchmarkIndexRune-4 98177762 12.24 ns/op BenchmarkIndexRune-4 98199696 12.24 ns/op BenchmarkIndexRune-4 98082262 12.23 ns/op BenchmarkIndexRune-4 97974555 12.24 ns/op BenchmarkIndexRune-4 97487439 12.24 ns/op BenchmarkIndexRune-4 97955120 12.23 ns/op BenchmarkIndexRune-4 98079144 12.24 ns/op BenchmarkIndexRune-4 98116192 12.23 ns/op BenchmarkIndexRuneLongString-4 87833512 13.59 ns/op BenchmarkIndexRuneLongString-4 88186304 13.59 ns/op BenchmarkIndexRuneLongString-4 88208020 13.59 ns/op BenchmarkIndexRuneLongString-4 88198620 13.59 ns/op BenchmarkIndexRuneLongString-4 88266933 13.59 ns/op BenchmarkIndexRuneLongString-4 88234287 13.59 ns/op BenchmarkIndexRuneLongString-4 88304996 13.59 ns/op BenchmarkIndexRuneLongString-4 88144272 13.59 ns/op BenchmarkIndexRuneLongString-4 88170040 13.59 ns/op BenchmarkIndexRuneLongString-4 88285057 13.59 ns/op BenchmarkIndexRuneFastPath-4 323256228 3.526 ns/op BenchmarkIndexRuneFastPath-4 317077488 3.526 ns/op BenchmarkIndexRuneFastPath-4 340385073 3.526 ns/op BenchmarkIndexRuneFastPath-4 315998316 3.526 ns/op BenchmarkIndexRuneFastPath-4 340307910 3.526 ns/op BenchmarkIndexRuneFastPath-4 340305458 3.526 ns/op BenchmarkIndexRuneFastPath-4 340295790 3.526 ns/op BenchmarkIndexRuneFastPath-4 340308596 3.526 ns/op BenchmarkIndexRuneFastPath-4 340314202 3.526 ns/op BenchmarkIndexRuneFastPath-4 340336045 3.526 ns/op BenchmarkIndex-4 316536469 3.795 ns/op BenchmarkIndex-4 294964332 3.795 ns/op BenchmarkIndex-4 316474719 3.795 ns/op BenchmarkIndex-4 316429413 3.795 ns/op BenchmarkIndex-4 294957496 3.795 ns/op BenchmarkIndex-4 316404998 3.795 ns/op BenchmarkIndex-4 316321501 3.795 ns/op BenchmarkIndex-4 316332842 3.796 ns/op BenchmarkIndex-4 295930588 3.796 ns/op BenchmarkIndex-4 316509417 3.796 ns/op BenchmarkLastIndex-4 341628987 3.521 ns/op BenchmarkLastIndex-4 341211190 3.523 ns/op BenchmarkLastIndex-4 341554564 3.522 ns/op BenchmarkLastIndex-4 341909822 3.523 ns/op BenchmarkLastIndex-4 341344084 3.523 ns/op BenchmarkLastIndex-4 340354680 3.523 ns/op BenchmarkLastIndex-4 341761216 3.521 ns/op BenchmarkLastIndex-4 341302434 3.523 ns/op BenchmarkLastIndex-4 340306246 3.522 ns/op BenchmarkLastIndex-4 341326228 3.523 ns/op BenchmarkIndexByte-4 442093430 2.713 ns/op BenchmarkIndexByte-4 442258821 2.713 ns/op BenchmarkIndexByte-4 442367502 2.713 ns/op BenchmarkIndexByte-4 442352712 2.712 ns/op BenchmarkIndexByte-4 442301091 2.712 ns/op BenchmarkIndexByte-4 442438201 2.713 ns/op BenchmarkIndexByte-4 442387914 2.713 ns/op BenchmarkIndexByte-4 442354678 2.713 ns/op BenchmarkIndexByte-4 442350162 2.713 ns/op BenchmarkIndexByte-4 442373594 2.713 ns/op BenchmarkEqualFold/ASCII-4 136878182 9.182 ns/op BenchmarkEqualFold/ASCII-4 131047411 9.041 ns/op BenchmarkEqualFold/ASCII-4 132842934 9.123 ns/op BenchmarkEqualFold/ASCII-4 131241560 9.180 ns/op BenchmarkEqualFold/ASCII-4 131763297 9.115 ns/op BenchmarkEqualFold/ASCII-4 130131362 9.181 ns/op BenchmarkEqualFold/ASCII-4 131852028 9.165 ns/op BenchmarkEqualFold/ASCII-4 131101909 8.828 ns/op BenchmarkEqualFold/ASCII-4 134462371 9.177 ns/op BenchmarkEqualFold/ASCII-4 135964389 9.121 ns/op BenchmarkEqualFold/UnicodePrefix-4 13438376 90.01 ns/op BenchmarkEqualFold/UnicodePrefix-4 13479160 90.19 ns/op BenchmarkEqualFold/UnicodePrefix-4 13293775 89.92 ns/op BenchmarkEqualFold/UnicodePrefix-4 13331232 89.88 ns/op BenchmarkEqualFold/UnicodePrefix-4 13438392 90.06 ns/op BenchmarkEqualFold/UnicodePrefix-4 13294113 90.12 ns/op BenchmarkEqualFold/UnicodePrefix-4 13340815 90.03 ns/op BenchmarkEqualFold/UnicodePrefix-4 13406187 90.04 ns/op BenchmarkEqualFold/UnicodePrefix-4 13326236 90.07 ns/op BenchmarkEqualFold/UnicodePrefix-4 13323763 90.10 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14599185 82.23 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14568504 82.26 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14619796 82.19 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14582726 82.27 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14558796 82.19 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14534712 82.12 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14615157 82.21 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14593412 82.15 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14584465 82.17 ns/op BenchmarkEqualFold/UnicodeSuffix-4 14594599 82.16 ns/op BenchmarkIndexHard1-4 14724 81480 ns/op BenchmarkIndexHard1-4 14725 81490 ns/op BenchmarkIndexHard1-4 14722 81491 ns/op BenchmarkIndexHard1-4 14724 81481 ns/op BenchmarkIndexHard1-4 14727 81488 ns/op BenchmarkIndexHard1-4 14725 81485 ns/op BenchmarkIndexHard1-4 14724 81485 ns/op BenchmarkIndexHard1-4 14724 81484 ns/op BenchmarkIndexHard1-4 14725 81483 ns/op BenchmarkIndexHard1-4 14722 81487 ns/op BenchmarkIndexHard2-4 10497 114246 ns/op BenchmarkIndexHard2-4 10496 114241 ns/op BenchmarkIndexHard2-4 10497 114249 ns/op BenchmarkIndexHard2-4 10497 114247 ns/op BenchmarkIndexHard2-4 10497 114244 ns/op BenchmarkIndexHard2-4 10497 114237 ns/op BenchmarkIndexHard2-4 10497 114264 ns/op BenchmarkIndexHard2-4 10496 114253 ns/op BenchmarkIndexHard2-4 10497 114245 ns/op BenchmarkIndexHard2-4 10497 114252 ns/op BenchmarkIndexHard3-4 2014 570524 ns/op BenchmarkIndexHard3-4 2012 570596 ns/op BenchmarkIndexHard3-4 2013 570498 ns/op BenchmarkIndexHard3-4 2013 570619 ns/op BenchmarkIndexHard3-4 2012 570502 ns/op BenchmarkIndexHard3-4 2013 570605 ns/op BenchmarkIndexHard3-4 2012 570550 ns/op BenchmarkIndexHard3-4 2014 570558 ns/op BenchmarkIndexHard3-4 2012 570552 ns/op BenchmarkIndexHard3-4 2013 570551 ns/op BenchmarkIndexHard4-4 2034 570243 ns/op BenchmarkIndexHard4-4 2032 570289 ns/op BenchmarkIndexHard4-4 2032 570220 ns/op BenchmarkIndexHard4-4 2032 570233 ns/op BenchmarkIndexHard4-4 2032 570265 ns/op BenchmarkIndexHard4-4 2032 570264 ns/op BenchmarkIndexHard4-4 2032 570262 ns/op BenchmarkIndexHard4-4 2032 570234 ns/op BenchmarkIndexHard4-4 2032 570217 ns/op BenchmarkIndexHard4-4 2032 570210 ns/op BenchmarkLastIndexHard1-4 810 1451417 ns/op BenchmarkLastIndexHard1-4 811 1451223 ns/op BenchmarkLastIndexHard1-4 811 1451207 ns/op BenchmarkLastIndexHard1-4 811 1451592 ns/op BenchmarkLastIndexHard1-4 811 1451337 ns/op BenchmarkLastIndexHard1-4 811 1451469 ns/op BenchmarkLastIndexHard1-4 811 1450928 ns/op BenchmarkLastIndexHard1-4 810 1451911 ns/op BenchmarkLastIndexHard1-4 811 1450696 ns/op BenchmarkLastIndexHard1-4 811 1452211 ns/op BenchmarkLastIndexHard2-4 811 1451246 ns/op BenchmarkLastIndexHard2-4 810 1451267 ns/op BenchmarkLastIndexHard2-4 810 1451320 ns/op BenchmarkLastIndexHard2-4 811 1451309 ns/op BenchmarkLastIndexHard2-4 811 1451973 ns/op BenchmarkLastIndexHard2-4 811 1451789 ns/op BenchmarkLastIndexHard2-4 810 1451491 ns/op BenchmarkLastIndexHard2-4 810 1451811 ns/op BenchmarkLastIndexHard2-4 811 1451771 ns/op BenchmarkLastIndexHard2-4 811 1451593 ns/op BenchmarkLastIndexHard3-4 811 1451376 ns/op BenchmarkLastIndexHard3-4 811 1450937 ns/op BenchmarkLastIndexHard3-4 811 1451665 ns/op BenchmarkLastIndexHard3-4 811 1451364 ns/op BenchmarkLastIndexHard3-4 811 1450892 ns/op BenchmarkLastIndexHard3-4 811 1451592 ns/op BenchmarkLastIndexHard3-4 811 1451058 ns/op BenchmarkLastIndexHard3-4 811 1450838 ns/op BenchmarkLastIndexHard3-4 811 1450693 ns/op BenchmarkLastIndexHard3-4 811 1450976 ns/op BenchmarkCountHard1-4 14719 81489 ns/op BenchmarkCountHard1-4 14721 81489 ns/op BenchmarkCountHard1-4 14724 81491 ns/op BenchmarkCountHard1-4 14725 81495 ns/op BenchmarkCountHard1-4 14722 81485 ns/op BenchmarkCountHard1-4 14722 81506 ns/op BenchmarkCountHard1-4 14724 81488 ns/op BenchmarkCountHard1-4 14722 81494 ns/op BenchmarkCountHard1-4 14722 81494 ns/op BenchmarkCountHard1-4 14724 81493 ns/op BenchmarkCountHard2-4 10496 114251 ns/op BenchmarkCountHard2-4 10497 114256 ns/op BenchmarkCountHard2-4 10497 114260 ns/op BenchmarkCountHard2-4 10496 114257 ns/op BenchmarkCountHard2-4 10496 114260 ns/op BenchmarkCountHard2-4 10496 114259 ns/op BenchmarkCountHard2-4 10497 114258 ns/op BenchmarkCountHard2-4 10496 114254 ns/op BenchmarkCountHard2-4 10496 114253 ns/op BenchmarkCountHard2-4 10496 114250 ns/op BenchmarkCountHard3-4 2014 570553 ns/op BenchmarkCountHard3-4 2013 570613 ns/op BenchmarkCountHard3-4 2013 570505 ns/op BenchmarkCountHard3-4 2013 570532 ns/op BenchmarkCountHard3-4 2013 570574 ns/op BenchmarkCountHard3-4 2013 570568 ns/op BenchmarkCountHard3-4 2013 570512 ns/op BenchmarkCountHard3-4 2012 570568 ns/op BenchmarkCountHard3-4 2013 570639 ns/op BenchmarkCountHard3-4 2013 570495 ns/op BenchmarkIndexTorture-4 108976 11008 ns/op BenchmarkIndexTorture-4 109004 11013 ns/op BenchmarkIndexTorture-4 108844 11014 ns/op BenchmarkIndexTorture-4 109029 11005 ns/op BenchmarkIndexTorture-4 108945 11014 ns/op BenchmarkIndexTorture-4 108916 11011 ns/op BenchmarkIndexTorture-4 109102 11006 ns/op BenchmarkIndexTorture-4 109003 11010 ns/op BenchmarkIndexTorture-4 109077 11013 ns/op BenchmarkIndexTorture-4 108946 11010 ns/op BenchmarkCountTorture-4 108948 11011 ns/op BenchmarkCountTorture-4 108998 11012 ns/op BenchmarkCountTorture-4 108810 11013 ns/op BenchmarkCountTorture-4 108988 11008 ns/op BenchmarkCountTorture-4 108962 11013 ns/op BenchmarkCountTorture-4 108946 11008 ns/op BenchmarkCountTorture-4 108946 11010 ns/op BenchmarkCountTorture-4 108926 11013 ns/op BenchmarkCountTorture-4 109026 11011 ns/op BenchmarkCountTorture-4 109138 11009 ns/op BenchmarkCountTortureOverlapping-4 28434 42718 ns/op BenchmarkCountTortureOverlapping-4 28538 42173 ns/op BenchmarkCountTortureOverlapping-4 28252 41947 ns/op BenchmarkCountTortureOverlapping-4 28477 42692 ns/op BenchmarkCountTortureOverlapping-4 28333 41928 ns/op BenchmarkCountTortureOverlapping-4 28567 42661 ns/op BenchmarkCountTortureOverlapping-4 28446 41858 ns/op BenchmarkCountTortureOverlapping-4 28374 41846 ns/op BenchmarkCountTortureOverlapping-4 27916 41830 ns/op BenchmarkCountTortureOverlapping-4 28119 41900 ns/op BenchmarkCountByte/10-4 340328020 3.526 ns/op 2835.89 MB/s BenchmarkCountByte/10-4 340335442 3.526 ns/op 2836.12 MB/s BenchmarkCountByte/10-4 340278840 3.526 ns/op 2836.13 MB/s BenchmarkCountByte/10-4 340320896 3.780 ns/op 2645.84 MB/s BenchmarkCountByte/10-4 340327980 3.526 ns/op 2836.00 MB/s BenchmarkCountByte/10-4 340336069 3.526 ns/op 2836.07 MB/s BenchmarkCountByte/10-4 340327797 3.526 ns/op 2836.24 MB/s BenchmarkCountByte/10-4 340311514 3.526 ns/op 2836.13 MB/s BenchmarkCountByte/10-4 340360298 3.526 ns/op 2836.16 MB/s BenchmarkCountByte/10-4 340240903 3.526 ns/op 2835.98 MB/s BenchmarkCountByte/32-4 260256933 4.609 ns/op 6943.64 MB/s BenchmarkCountByte/32-4 260238664 4.611 ns/op 6940.09 MB/s BenchmarkCountByte/32-4 260164646 4.610 ns/op 6940.94 MB/s BenchmarkCountByte/32-4 260307525 4.611 ns/op 6940.55 MB/s BenchmarkCountByte/32-4 260234967 4.611 ns/op 6940.46 MB/s BenchmarkCountByte/32-4 260308936 4.610 ns/op 6941.59 MB/s BenchmarkCountByte/32-4 260250256 4.610 ns/op 6941.96 MB/s BenchmarkCountByte/32-4 260282856 4.610 ns/op 6941.30 MB/s BenchmarkCountByte/32-4 260244556 4.610 ns/op 6940.71 MB/s BenchmarkCountByte/32-4 260253807 4.611 ns/op 6940.21 MB/s BenchmarkCountByte/4K-4 12727676 95.73 ns/op 42786.16 MB/s BenchmarkCountByte/4K-4 12492483 95.63 ns/op 42831.12 MB/s BenchmarkCountByte/4K-4 12635812 95.75 ns/op 42780.01 MB/s BenchmarkCountByte/4K-4 12712978 95.68 ns/op 42808.33 MB/s BenchmarkCountByte/4K-4 12691406 95.73 ns/op 42787.21 MB/s BenchmarkCountByte/4K-4 12646098 95.70 ns/op 42801.22 MB/s BenchmarkCountByte/4K-4 12735585 95.66 ns/op 42819.13 MB/s BenchmarkCountByte/4K-4 12712414 95.60 ns/op 42845.89 MB/s BenchmarkCountByte/4K-4 12518018 95.68 ns/op 42809.69 MB/s BenchmarkCountByte/4K-4 12758170 95.70 ns/op 42801.83 MB/s BenchmarkCountByte/4M-4 13728 87413 ns/op 47982.37 MB/s BenchmarkCountByte/4M-4 13729 87407 ns/op 47985.75 MB/s BenchmarkCountByte/4M-4 13725 87385 ns/op 47997.74 MB/s BenchmarkCountByte/4M-4 13725 87405 ns/op 47986.84 MB/s BenchmarkCountByte/4M-4 13728 87440 ns/op 47967.95 MB/s BenchmarkCountByte/4M-4 13728 87384 ns/op 47998.53 MB/s BenchmarkCountByte/4M-4 13725 87386 ns/op 47997.23 MB/s BenchmarkCountByte/4M-4 13724 87412 ns/op 47983.43 MB/s BenchmarkCountByte/4M-4 13729 87424 ns/op 47976.50 MB/s BenchmarkCountByte/4M-4 13725 87408 ns/op 47985.48 MB/s BenchmarkCountByte/64M-4 715 1653830 ns/op 40577.85 MB/s BenchmarkCountByte/64M-4 715 1656145 ns/op 40521.12 MB/s BenchmarkCountByte/64M-4 712 1651686 ns/op 40630.51 MB/s BenchmarkCountByte/64M-4 715 1654453 ns/op 40562.56 MB/s BenchmarkCountByte/64M-4 715 1651527 ns/op 40634.44 MB/s BenchmarkCountByte/64M-4 714 1654270 ns/op 40567.05 MB/s BenchmarkCountByte/64M-4 714 1653452 ns/op 40587.13 MB/s BenchmarkCountByte/64M-4 712 1651816 ns/op 40627.33 MB/s BenchmarkCountByte/64M-4 714 1655297 ns/op 40541.88 MB/s BenchmarkCountByte/64M-4 714 1653208 ns/op 40593.12 MB/s BenchmarkIndexAnyASCII/1:1-4 254680090 4.871 ns/op BenchmarkIndexAnyASCII/1:1-4 245803916 4.831 ns/op BenchmarkIndexAnyASCII/1:1-4 247159102 4.863 ns/op BenchmarkIndexAnyASCII/1:1-4 259929270 4.820 ns/op BenchmarkIndexAnyASCII/1:1-4 248677747 4.811 ns/op BenchmarkIndexAnyASCII/1:1-4 251129859 4.819 ns/op BenchmarkIndexAnyASCII/1:1-4 246305490 4.722 ns/op BenchmarkIndexAnyASCII/1:1-4 245774058 4.795 ns/op BenchmarkIndexAnyASCII/1:1-4 248069514 4.802 ns/op BenchmarkIndexAnyASCII/1:1-4 249415618 4.866 ns/op BenchmarkIndexAnyASCII/1:2-4 204936106 5.946 ns/op BenchmarkIndexAnyASCII/1:2-4 202689294 5.953 ns/op BenchmarkIndexAnyASCII/1:2-4 203319717 5.956 ns/op BenchmarkIndexAnyASCII/1:2-4 208446808 5.959 ns/op BenchmarkIndexAnyASCII/1:2-4 202378704 5.903 ns/op BenchmarkIndexAnyASCII/1:2-4 201731000 5.949 ns/op BenchmarkIndexAnyASCII/1:2-4 201069806 5.950 ns/op BenchmarkIndexAnyASCII/1:2-4 206046063 5.911 ns/op BenchmarkIndexAnyASCII/1:2-4 210158145 5.958 ns/op BenchmarkIndexAnyASCII/1:2-4 202262718 5.941 ns/op BenchmarkIndexAnyASCII/1:4-4 210412317 5.958 ns/op BenchmarkIndexAnyASCII/1:4-4 207043387 5.960 ns/op BenchmarkIndexAnyASCII/1:4-4 202953999 5.959 ns/op BenchmarkIndexAnyASCII/1:4-4 201250974 5.915 ns/op BenchmarkIndexAnyASCII/1:4-4 202257433 5.960 ns/op BenchmarkIndexAnyASCII/1:4-4 210662095 5.955 ns/op BenchmarkIndexAnyASCII/1:4-4 203281782 5.960 ns/op BenchmarkIndexAnyASCII/1:4-4 201606436 5.935 ns/op BenchmarkIndexAnyASCII/1:4-4 202364799 5.917 ns/op BenchmarkIndexAnyASCII/1:4-4 203303320 5.967 ns/op BenchmarkIndexAnyASCII/1:8-4 201593911 5.959 ns/op BenchmarkIndexAnyASCII/1:8-4 202988814 5.947 ns/op BenchmarkIndexAnyASCII/1:8-4 202306856 5.925 ns/op BenchmarkIndexAnyASCII/1:8-4 205937457 5.959 ns/op BenchmarkIndexAnyASCII/1:8-4 207291021 5.954 ns/op BenchmarkIndexAnyASCII/1:8-4 202354723 5.954 ns/op BenchmarkIndexAnyASCII/1:8-4 204318942 5.913 ns/op BenchmarkIndexAnyASCII/1:8-4 206053755 5.858 ns/op BenchmarkIndexAnyASCII/1:8-4 202344848 5.892 ns/op BenchmarkIndexAnyASCII/1:8-4 201245203 5.934 ns/op BenchmarkIndexAnyASCII/1:16-4 211347249 5.673 ns/op BenchmarkIndexAnyASCII/1:16-4 211224674 5.696 ns/op BenchmarkIndexAnyASCII/1:16-4 211354701 5.688 ns/op BenchmarkIndexAnyASCII/1:16-4 210675152 5.680 ns/op BenchmarkIndexAnyASCII/1:16-4 215608333 5.689 ns/op BenchmarkIndexAnyASCII/1:16-4 212432335 5.660 ns/op BenchmarkIndexAnyASCII/1:16-4 212140760 5.616 ns/op BenchmarkIndexAnyASCII/1:16-4 218390829 5.674 ns/op BenchmarkIndexAnyASCII/1:16-4 213642457 5.689 ns/op BenchmarkIndexAnyASCII/1:16-4 210848955 5.687 ns/op BenchmarkIndexAnyASCII/1:32-4 200307016 6.166 ns/op BenchmarkIndexAnyASCII/1:32-4 194679807 6.238 ns/op BenchmarkIndexAnyASCII/1:32-4 195929244 6.211 ns/op BenchmarkIndexAnyASCII/1:32-4 196141653 6.183 ns/op BenchmarkIndexAnyASCII/1:32-4 193470534 6.174 ns/op BenchmarkIndexAnyASCII/1:32-4 192783121 6.195 ns/op BenchmarkIndexAnyASCII/1:32-4 196202043 6.192 ns/op BenchmarkIndexAnyASCII/1:32-4 196598685 6.206 ns/op BenchmarkIndexAnyASCII/1:32-4 192797617 6.212 ns/op BenchmarkIndexAnyASCII/1:32-4 194467158 6.200 ns/op BenchmarkIndexAnyASCII/1:64-4 192348836 6.238 ns/op BenchmarkIndexAnyASCII/1:64-4 192347976 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192308547 6.238 ns/op BenchmarkIndexAnyASCII/1:64-4 192354934 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192330576 6.238 ns/op BenchmarkIndexAnyASCII/1:64-4 192363199 6.238 ns/op BenchmarkIndexAnyASCII/1:64-4 192354728 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192364479 6.238 ns/op BenchmarkIndexAnyASCII/1:64-4 192354248 6.239 ns/op BenchmarkIndexAnyASCII/1:64-4 192344690 6.238 ns/op BenchmarkIndexAnyASCII/16:1-4 261558559 4.565 ns/op BenchmarkIndexAnyASCII/16:1-4 262093580 4.611 ns/op BenchmarkIndexAnyASCII/16:1-4 260247285 4.573 ns/op BenchmarkIndexAnyASCII/16:1-4 260222844 4.574 ns/op BenchmarkIndexAnyASCII/16:1-4 268942328 4.589 ns/op BenchmarkIndexAnyASCII/16:1-4 266628939 4.611 ns/op BenchmarkIndexAnyASCII/16:1-4 265123230 4.536 ns/op BenchmarkIndexAnyASCII/16:1-4 276508000 4.571 ns/op BenchmarkIndexAnyASCII/16:1-4 265192660 4.592 ns/op BenchmarkIndexAnyASCII/16:1-4 261514514 4.575 ns/op BenchmarkIndexAnyASCII/16:2-4 81207643 14.95 ns/op BenchmarkIndexAnyASCII/16:2-4 80421057 14.96 ns/op BenchmarkIndexAnyASCII/16:2-4 80666866 14.97 ns/op BenchmarkIndexAnyASCII/16:2-4 78790636 14.98 ns/op BenchmarkIndexAnyASCII/16:2-4 80204386 15.00 ns/op BenchmarkIndexAnyASCII/16:2-4 79040454 14.93 ns/op BenchmarkIndexAnyASCII/16:2-4 80590578 14.95 ns/op BenchmarkIndexAnyASCII/16:2-4 80500508 14.93 ns/op BenchmarkIndexAnyASCII/16:2-4 80536436 14.96 ns/op BenchmarkIndexAnyASCII/16:2-4 79898692 15.00 ns/op BenchmarkIndexAnyASCII/16:4-4 68143274 17.57 ns/op BenchmarkIndexAnyASCII/16:4-4 68259633 17.56 ns/op BenchmarkIndexAnyASCII/16:4-4 68232196 17.56 ns/op BenchmarkIndexAnyASCII/16:4-4 68205127 17.55 ns/op BenchmarkIndexAnyASCII/16:4-4 68375697 17.57 ns/op BenchmarkIndexAnyASCII/16:4-4 68234637 17.56 ns/op BenchmarkIndexAnyASCII/16:4-4 68341507 17.56 ns/op BenchmarkIndexAnyASCII/16:4-4 68013580 17.56 ns/op BenchmarkIndexAnyASCII/16:4-4 68374738 17.57 ns/op BenchmarkIndexAnyASCII/16:4-4 68228332 17.56 ns/op BenchmarkIndexAnyASCII/16:8-4 50528408 23.77 ns/op BenchmarkIndexAnyASCII/16:8-4 50433697 23.76 ns/op BenchmarkIndexAnyASCII/16:8-4 50449260 23.75 ns/op BenchmarkIndexAnyASCII/16:8-4 50533876 23.76 ns/op BenchmarkIndexAnyASCII/16:8-4 50511991 23.77 ns/op BenchmarkIndexAnyASCII/16:8-4 50448878 23.78 ns/op BenchmarkIndexAnyASCII/16:8-4 50441709 23.76 ns/op BenchmarkIndexAnyASCII/16:8-4 50327324 23.77 ns/op BenchmarkIndexAnyASCII/16:8-4 50430730 23.74 ns/op BenchmarkIndexAnyASCII/16:8-4 50451232 23.77 ns/op BenchmarkIndexAnyASCII/16:16-4 35051970 34.22 ns/op BenchmarkIndexAnyASCII/16:16-4 35113144 34.27 ns/op BenchmarkIndexAnyASCII/16:16-4 34953122 34.26 ns/op BenchmarkIndexAnyASCII/16:16-4 34966629 34.27 ns/op BenchmarkIndexAnyASCII/16:16-4 35075488 34.24 ns/op BenchmarkIndexAnyASCII/16:16-4 34935967 34.24 ns/op BenchmarkIndexAnyASCII/16:16-4 35043858 34.37 ns/op BenchmarkIndexAnyASCII/16:16-4 35140599 34.30 ns/op BenchmarkIndexAnyASCII/16:16-4 35043612 34.25 ns/op BenchmarkIndexAnyASCII/16:16-4 35255404 34.25 ns/op BenchmarkIndexAnyASCII/16:32-4 19967276 60.65 ns/op BenchmarkIndexAnyASCII/16:32-4 20148373 60.80 ns/op BenchmarkIndexAnyASCII/16:32-4 19804048 60.57 ns/op BenchmarkIndexAnyASCII/16:32-4 20025879 60.75 ns/op BenchmarkIndexAnyASCII/16:32-4 20002792 60.42 ns/op BenchmarkIndexAnyASCII/16:32-4 19926163 60.59 ns/op BenchmarkIndexAnyASCII/16:32-4 19636876 60.33 ns/op BenchmarkIndexAnyASCII/16:32-4 19830229 60.41 ns/op BenchmarkIndexAnyASCII/16:32-4 20055228 60.75 ns/op BenchmarkIndexAnyASCII/16:32-4 19925246 60.80 ns/op BenchmarkIndexAnyASCII/16:64-4 12100662 97.96 ns/op BenchmarkIndexAnyASCII/16:64-4 12388814 97.76 ns/op BenchmarkIndexAnyASCII/16:64-4 12530018 99.77 ns/op BenchmarkIndexAnyASCII/16:64-4 11984888 97.94 ns/op BenchmarkIndexAnyASCII/16:64-4 12620790 98.16 ns/op BenchmarkIndexAnyASCII/16:64-4 12418244 98.02 ns/op BenchmarkIndexAnyASCII/16:64-4 12353870 97.09 ns/op BenchmarkIndexAnyASCII/16:64-4 12610269 97.41 ns/op BenchmarkIndexAnyASCII/16:64-4 12325719 98.10 ns/op BenchmarkIndexAnyASCII/16:64-4 12610800 98.48 ns/op BenchmarkIndexAnyASCII/256:1-4 176966701 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176952436 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176963662 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176932806 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176972121 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176949348 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176950423 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176961270 6.781 ns/op BenchmarkIndexAnyASCII/256:1-4 176955631 6.782 ns/op BenchmarkIndexAnyASCII/256:1-4 176961069 6.781 ns/op BenchmarkIndexAnyASCII/256:2-4 8032268 149.0 ns/op BenchmarkIndexAnyASCII/256:2-4 8070734 148.6 ns/op BenchmarkIndexAnyASCII/256:2-4 8010886 148.7 ns/op BenchmarkIndexAnyASCII/256:2-4 8066400 148.7 ns/op BenchmarkIndexAnyASCII/256:2-4 8085058 148.8 ns/op BenchmarkIndexAnyASCII/256:2-4 8079619 148.7 ns/op BenchmarkIndexAnyASCII/256:2-4 8018551 149.1 ns/op BenchmarkIndexAnyASCII/256:2-4 8073282 149.0 ns/op BenchmarkIndexAnyASCII/256:2-4 8081739 148.7 ns/op BenchmarkIndexAnyASCII/256:2-4 8070621 148.8 ns/op BenchmarkIndexAnyASCII/256:4-4 7952918 151.3 ns/op BenchmarkIndexAnyASCII/256:4-4 7927686 151.5 ns/op BenchmarkIndexAnyASCII/256:4-4 7823131 151.3 ns/op BenchmarkIndexAnyASCII/256:4-4 7959267 151.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7845492 151.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7950792 151.7 ns/op BenchmarkIndexAnyASCII/256:4-4 7836771 151.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7975375 151.0 ns/op BenchmarkIndexAnyASCII/256:4-4 7958930 151.5 ns/op BenchmarkIndexAnyASCII/256:4-4 7921500 151.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7540213 158.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7579603 158.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7570880 158.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7558656 159.0 ns/op BenchmarkIndexAnyASCII/256:8-4 7565690 159.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7536374 158.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7482957 158.7 ns/op BenchmarkIndexAnyASCII/256:8-4 7546322 158.6 ns/op BenchmarkIndexAnyASCII/256:8-4 7561904 159.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7582767 158.9 ns/op BenchmarkIndexAnyASCII/256:16-4 6987567 169.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7058955 170.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7002930 170.3 ns/op BenchmarkIndexAnyASCII/256:16-4 7049460 169.7 ns/op BenchmarkIndexAnyASCII/256:16-4 7035679 170.0 ns/op BenchmarkIndexAnyASCII/256:16-4 7046077 170.8 ns/op BenchmarkIndexAnyASCII/256:16-4 6992100 171.2 ns/op BenchmarkIndexAnyASCII/256:16-4 7064594 170.3 ns/op BenchmarkIndexAnyASCII/256:16-4 6995886 170.1 ns/op BenchmarkIndexAnyASCII/256:16-4 7016157 171.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6661382 180.1 ns/op BenchmarkIndexAnyASCII/256:32-4 6656145 180.1 ns/op BenchmarkIndexAnyASCII/256:32-4 6654956 180.1 ns/op BenchmarkIndexAnyASCII/256:32-4 6666498 180.1 ns/op BenchmarkIndexAnyASCII/256:32-4 6664130 180.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6664711 180.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6642994 180.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6663994 180.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6656214 180.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6671308 180.2 ns/op BenchmarkIndexAnyASCII/256:64-4 5228151 229.1 ns/op BenchmarkIndexAnyASCII/256:64-4 5225493 229.1 ns/op BenchmarkIndexAnyASCII/256:64-4 5245374 229.3 ns/op BenchmarkIndexAnyASCII/256:64-4 5253765 229.6 ns/op BenchmarkIndexAnyASCII/256:64-4 5232831 229.5 ns/op BenchmarkIndexAnyASCII/256:64-4 5254324 228.7 ns/op BenchmarkIndexAnyASCII/256:64-4 5213881 229.4 ns/op BenchmarkIndexAnyASCII/256:64-4 5219677 228.9 ns/op BenchmarkIndexAnyASCII/256:64-4 5240204 229.7 ns/op BenchmarkIndexAnyASCII/256:64-4 5244840 229.4 ns/op BenchmarkIndexAnyUTF8/1:1-4 302429260 4.041 ns/op BenchmarkIndexAnyUTF8/1:1-4 294933134 4.060 ns/op BenchmarkIndexAnyUTF8/1:1-4 297747654 4.060 ns/op BenchmarkIndexAnyUTF8/1:1-4 298664533 4.015 ns/op BenchmarkIndexAnyUTF8/1:1-4 300169874 4.027 ns/op BenchmarkIndexAnyUTF8/1:1-4 295879896 4.021 ns/op BenchmarkIndexAnyUTF8/1:1-4 295514650 4.055 ns/op BenchmarkIndexAnyUTF8/1:1-4 296777827 3.939 ns/op BenchmarkIndexAnyUTF8/1:1-4 294930506 4.061 ns/op BenchmarkIndexAnyUTF8/1:1-4 315985618 4.007 ns/op BenchmarkIndexAnyUTF8/1:2-4 203685489 5.954 ns/op BenchmarkIndexAnyUTF8/1:2-4 209401676 5.936 ns/op BenchmarkIndexAnyUTF8/1:2-4 202027254 5.939 ns/op BenchmarkIndexAnyUTF8/1:2-4 202566264 5.945 ns/op BenchmarkIndexAnyUTF8/1:2-4 201626864 5.950 ns/op BenchmarkIndexAnyUTF8/1:2-4 201662208 5.959 ns/op BenchmarkIndexAnyUTF8/1:2-4 201700196 5.882 ns/op BenchmarkIndexAnyUTF8/1:2-4 201645902 5.960 ns/op BenchmarkIndexAnyUTF8/1:2-4 203973740 5.833 ns/op BenchmarkIndexAnyUTF8/1:2-4 203597577 5.931 ns/op BenchmarkIndexAnyUTF8/1:4-4 210684482 5.951 ns/op BenchmarkIndexAnyUTF8/1:4-4 203563837 5.949 ns/op BenchmarkIndexAnyUTF8/1:4-4 202059282 5.834 ns/op BenchmarkIndexAnyUTF8/1:4-4 201652207 5.865 ns/op BenchmarkIndexAnyUTF8/1:4-4 192596592 5.955 ns/op BenchmarkIndexAnyUTF8/1:4-4 204326204 5.932 ns/op BenchmarkIndexAnyUTF8/1:4-4 204970308 5.885 ns/op BenchmarkIndexAnyUTF8/1:4-4 201625850 5.908 ns/op BenchmarkIndexAnyUTF8/1:4-4 202950802 5.930 ns/op BenchmarkIndexAnyUTF8/1:4-4 206696652 5.960 ns/op BenchmarkIndexAnyUTF8/1:8-4 201615789 5.922 ns/op BenchmarkIndexAnyUTF8/1:8-4 202575496 5.960 ns/op BenchmarkIndexAnyUTF8/1:8-4 210554349 5.937 ns/op BenchmarkIndexAnyUTF8/1:8-4 210657159 5.942 ns/op BenchmarkIndexAnyUTF8/1:8-4 208372048 5.956 ns/op BenchmarkIndexAnyUTF8/1:8-4 201666705 5.944 ns/op BenchmarkIndexAnyUTF8/1:8-4 201099423 5.939 ns/op BenchmarkIndexAnyUTF8/1:8-4 203652802 5.956 ns/op BenchmarkIndexAnyUTF8/1:8-4 203244865 5.944 ns/op BenchmarkIndexAnyUTF8/1:8-4 207936105 5.949 ns/op BenchmarkIndexAnyUTF8/1:16-4 201369574 5.668 ns/op BenchmarkIndexAnyUTF8/1:16-4 219127867 5.688 ns/op BenchmarkIndexAnyUTF8/1:16-4 215824258 5.645 ns/op BenchmarkIndexAnyUTF8/1:16-4 214339528 5.697 ns/op BenchmarkIndexAnyUTF8/1:16-4 213160128 5.674 ns/op BenchmarkIndexAnyUTF8/1:16-4 211385887 5.678 ns/op BenchmarkIndexAnyUTF8/1:16-4 210679376 5.679 ns/op BenchmarkIndexAnyUTF8/1:16-4 211192544 5.601 ns/op BenchmarkIndexAnyUTF8/1:16-4 211368104 5.669 ns/op BenchmarkIndexAnyUTF8/1:16-4 221220746 5.648 ns/op BenchmarkIndexAnyUTF8/1:32-4 195727965 6.225 ns/op BenchmarkIndexAnyUTF8/1:32-4 193674198 6.149 ns/op BenchmarkIndexAnyUTF8/1:32-4 198772077 6.194 ns/op BenchmarkIndexAnyUTF8/1:32-4 192534946 6.225 ns/op BenchmarkIndexAnyUTF8/1:32-4 197191706 6.231 ns/op BenchmarkIndexAnyUTF8/1:32-4 196779150 6.165 ns/op BenchmarkIndexAnyUTF8/1:32-4 193385017 6.210 ns/op BenchmarkIndexAnyUTF8/1:32-4 193597102 6.172 ns/op BenchmarkIndexAnyUTF8/1:32-4 195139971 6.230 ns/op BenchmarkIndexAnyUTF8/1:32-4 194035104 6.168 ns/op BenchmarkIndexAnyUTF8/1:64-4 192357066 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192340142 6.240 ns/op BenchmarkIndexAnyUTF8/1:64-4 192346759 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192342010 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192336799 6.238 ns/op BenchmarkIndexAnyUTF8/1:64-4 192339632 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192340270 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192335341 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192333516 6.239 ns/op BenchmarkIndexAnyUTF8/1:64-4 192353281 6.238 ns/op BenchmarkIndexAnyUTF8/16:1-4 74969904 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 74994408 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 74961946 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 74972104 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 74959226 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74991361 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 74970278 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 74955297 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 75012738 16.00 ns/op BenchmarkIndexAnyUTF8/16:1-4 74962780 16.00 ns/op BenchmarkIndexAnyUTF8/16:2-4 20067583 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20062600 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20017833 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20073466 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20015476 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20060463 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20048737 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20068018 59.93 ns/op BenchmarkIndexAnyUTF8/16:2-4 20125278 59.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 20065398 59.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 20054884 59.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 20050777 59.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 20077668 59.95 ns/op BenchmarkIndexAnyUTF8/16:4-4 20055096 59.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 20057600 59.93 ns/op BenchmarkIndexAnyUTF8/16:4-4 20075954 59.95 ns/op BenchmarkIndexAnyUTF8/16:4-4 20016648 59.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 20014334 63.96 ns/op BenchmarkIndexAnyUTF8/16:4-4 20057264 59.93 ns/op BenchmarkIndexAnyUTF8/16:4-4 20052163 59.95 ns/op BenchmarkIndexAnyUTF8/16:8-4 20067064 59.93 ns/op BenchmarkIndexAnyUTF8/16:8-4 20062184 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20173700 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20045530 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20102678 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20052170 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20047752 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20070570 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20051752 59.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 20005645 59.94 ns/op BenchmarkIndexAnyUTF8/16:16-4 20376609 58.86 ns/op BenchmarkIndexAnyUTF8/16:16-4 19893850 58.86 ns/op BenchmarkIndexAnyUTF8/16:16-4 20373672 59.25 ns/op BenchmarkIndexAnyUTF8/16:16-4 19055006 58.86 ns/op BenchmarkIndexAnyUTF8/16:16-4 20381990 58.86 ns/op BenchmarkIndexAnyUTF8/16:16-4 20387811 58.86 ns/op BenchmarkIndexAnyUTF8/16:16-4 20386402 58.86 ns/op BenchmarkIndexAnyUTF8/16:16-4 20380842 60.09 ns/op BenchmarkIndexAnyUTF8/16:16-4 20386585 58.86 ns/op BenchmarkIndexAnyUTF8/16:16-4 18927550 59.08 ns/op BenchmarkIndexAnyUTF8/16:32-4 18679543 64.27 ns/op BenchmarkIndexAnyUTF8/16:32-4 18487201 64.02 ns/op BenchmarkIndexAnyUTF8/16:32-4 18506514 63.52 ns/op BenchmarkIndexAnyUTF8/16:32-4 18550693 63.96 ns/op BenchmarkIndexAnyUTF8/16:32-4 18696778 64.14 ns/op BenchmarkIndexAnyUTF8/16:32-4 18905954 64.09 ns/op BenchmarkIndexAnyUTF8/16:32-4 18692113 64.27 ns/op BenchmarkIndexAnyUTF8/16:32-4 18660717 63.51 ns/op BenchmarkIndexAnyUTF8/16:32-4 18905871 63.91 ns/op BenchmarkIndexAnyUTF8/16:32-4 18566289 63.55 ns/op BenchmarkIndexAnyUTF8/16:64-4 17347384 67.90 ns/op BenchmarkIndexAnyUTF8/16:64-4 17294748 67.81 ns/op BenchmarkIndexAnyUTF8/16:64-4 17696368 68.29 ns/op BenchmarkIndexAnyUTF8/16:64-4 17285617 67.90 ns/op BenchmarkIndexAnyUTF8/16:64-4 17690926 67.87 ns/op BenchmarkIndexAnyUTF8/16:64-4 17381259 67.89 ns/op BenchmarkIndexAnyUTF8/16:64-4 17696199 67.88 ns/op BenchmarkIndexAnyUTF8/16:64-4 17694195 67.81 ns/op BenchmarkIndexAnyUTF8/16:64-4 17690934 67.88 ns/op BenchmarkIndexAnyUTF8/16:64-4 17692898 70.48 ns/op BenchmarkIndexAnyUTF8/256:1-4 5555298 216.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 5559633 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5553454 216.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 5549304 216.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 5556090 216.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 5552084 215.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 5553130 216.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 5555960 216.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 5549726 216.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 5558906 216.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 1315059 912.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1315054 912.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314948 912.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314992 912.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1315017 912.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314867 912.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314970 912.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1315000 912.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1314949 912.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1315024 912.4 ns/op BenchmarkIndexAnyUTF8/256:4-4 1315010 912.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314975 912.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1315035 912.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314849 912.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314778 912.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1315021 912.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1225704 912.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1315024 912.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1297556 912.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 1314999 912.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314981 912.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 1315046 912.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1315039 912.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314966 912.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1315122 912.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314979 912.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 1315041 912.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314979 912.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314994 912.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1314907 912.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315842 911.8 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315915 911.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315966 912.0 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315953 912.0 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315861 911.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315980 911.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315887 911.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315946 912.0 ns/op BenchmarkIndexAnyUTF8/256:16-4 1316060 911.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 1315827 911.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222230 981.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222099 981.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222107 981.8 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222189 982.0 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222173 981.8 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222213 981.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222024 981.8 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222177 981.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222218 981.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 1222086 981.9 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkIndexAnyUTF8/256:64-4 1000000 1051 ns/op BenchmarkLastIndexAnyASCII/1:1-4 230059575 5.646 ns/op BenchmarkLastIndexAnyASCII/1:1-4 218337192 5.578 ns/op BenchmarkLastIndexAnyASCII/1:1-4 230309718 5.425 ns/op BenchmarkLastIndexAnyASCII/1:1-4 218470443 5.639 ns/op BenchmarkLastIndexAnyASCII/1:1-4 224242861 5.541 ns/op BenchmarkLastIndexAnyASCII/1:1-4 232839424 5.466 ns/op BenchmarkLastIndexAnyASCII/1:1-4 225847359 5.341 ns/op BenchmarkLastIndexAnyASCII/1:1-4 224980968 5.398 ns/op BenchmarkLastIndexAnyASCII/1:1-4 215332297 5.454 ns/op BenchmarkLastIndexAnyASCII/1:1-4 225976225 5.351 ns/op BenchmarkLastIndexAnyASCII/1:2-4 210679317 5.665 ns/op BenchmarkLastIndexAnyASCII/1:2-4 219171144 5.401 ns/op BenchmarkLastIndexAnyASCII/1:2-4 215243472 5.431 ns/op BenchmarkLastIndexAnyASCII/1:2-4 234865098 5.661 ns/op BenchmarkLastIndexAnyASCII/1:2-4 215143796 5.616 ns/op BenchmarkLastIndexAnyASCII/1:2-4 226761411 5.446 ns/op BenchmarkLastIndexAnyASCII/1:2-4 217517239 5.325 ns/op BenchmarkLastIndexAnyASCII/1:2-4 228656103 5.209 ns/op BenchmarkLastIndexAnyASCII/1:2-4 225493314 5.598 ns/op BenchmarkLastIndexAnyASCII/1:2-4 232853796 5.421 ns/op BenchmarkLastIndexAnyASCII/1:4-4 232825486 5.335 ns/op BenchmarkLastIndexAnyASCII/1:4-4 228105901 5.696 ns/op BenchmarkLastIndexAnyASCII/1:4-4 226147148 5.567 ns/op BenchmarkLastIndexAnyASCII/1:4-4 210670210 5.348 ns/op BenchmarkLastIndexAnyASCII/1:4-4 222224262 5.568 ns/op BenchmarkLastIndexAnyASCII/1:4-4 216860970 5.416 ns/op BenchmarkLastIndexAnyASCII/1:4-4 213757969 5.530 ns/op BenchmarkLastIndexAnyASCII/1:4-4 223811335 5.554 ns/op BenchmarkLastIndexAnyASCII/1:4-4 219805244 5.202 ns/op BenchmarkLastIndexAnyASCII/1:4-4 232842268 5.676 ns/op BenchmarkLastIndexAnyASCII/1:8-4 219633778 5.153 ns/op BenchmarkLastIndexAnyASCII/1:8-4 222034360 5.549 ns/op BenchmarkLastIndexAnyASCII/1:8-4 228859440 5.630 ns/op BenchmarkLastIndexAnyASCII/1:8-4 224374918 5.696 ns/op BenchmarkLastIndexAnyASCII/1:8-4 222571438 5.610 ns/op BenchmarkLastIndexAnyASCII/1:8-4 212757985 5.595 ns/op BenchmarkLastIndexAnyASCII/1:8-4 245777319 5.565 ns/op BenchmarkLastIndexAnyASCII/1:8-4 245764575 5.525 ns/op BenchmarkLastIndexAnyASCII/1:8-4 210672879 5.648 ns/op BenchmarkLastIndexAnyASCII/1:8-4 231311776 5.571 ns/op BenchmarkLastIndexAnyASCII/1:16-4 221206730 5.350 ns/op BenchmarkLastIndexAnyASCII/1:16-4 228361928 5.336 ns/op BenchmarkLastIndexAnyASCII/1:16-4 221206264 5.302 ns/op BenchmarkLastIndexAnyASCII/1:16-4 226462209 5.400 ns/op BenchmarkLastIndexAnyASCII/1:16-4 241706980 5.365 ns/op BenchmarkLastIndexAnyASCII/1:16-4 245766853 5.249 ns/op BenchmarkLastIndexAnyASCII/1:16-4 245230830 5.374 ns/op BenchmarkLastIndexAnyASCII/1:16-4 236146616 5.398 ns/op BenchmarkLastIndexAnyASCII/1:16-4 238935858 5.219 ns/op BenchmarkLastIndexAnyASCII/1:16-4 225997183 5.012 ns/op BenchmarkLastIndexAnyASCII/1:32-4 234306691 5.153 ns/op BenchmarkLastIndexAnyASCII/1:32-4 224625277 5.475 ns/op BenchmarkLastIndexAnyASCII/1:32-4 230902027 5.417 ns/op BenchmarkLastIndexAnyASCII/1:32-4 239597388 5.325 ns/op BenchmarkLastIndexAnyASCII/1:32-4 229051144 5.630 ns/op BenchmarkLastIndexAnyASCII/1:32-4 201120607 5.284 ns/op BenchmarkLastIndexAnyASCII/1:32-4 240073812 5.421 ns/op BenchmarkLastIndexAnyASCII/1:32-4 227826914 5.411 ns/op BenchmarkLastIndexAnyASCII/1:32-4 210648952 5.416 ns/op BenchmarkLastIndexAnyASCII/1:32-4 232035121 5.398 ns/op BenchmarkLastIndexAnyASCII/1:64-4 212117283 5.593 ns/op BenchmarkLastIndexAnyASCII/1:64-4 215929183 5.693 ns/op BenchmarkLastIndexAnyASCII/1:64-4 212087479 5.670 ns/op BenchmarkLastIndexAnyASCII/1:64-4 221190752 5.669 ns/op BenchmarkLastIndexAnyASCII/1:64-4 214431927 5.618 ns/op BenchmarkLastIndexAnyASCII/1:64-4 217031614 5.684 ns/op BenchmarkLastIndexAnyASCII/1:64-4 220275235 5.446 ns/op BenchmarkLastIndexAnyASCII/1:64-4 212112756 5.692 ns/op BenchmarkLastIndexAnyASCII/1:64-4 213149403 5.696 ns/op BenchmarkLastIndexAnyASCII/1:64-4 215116518 5.556 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86824686 13.81 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86890321 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86813442 13.80 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86873210 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86845924 13.81 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86772393 13.81 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86364026 13.83 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86761465 13.82 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86429832 13.80 ns/op BenchmarkLastIndexAnyASCII/16:1-4 86840388 13.81 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79425388 15.05 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80324623 15.00 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79964079 14.97 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80158665 14.99 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80134208 15.03 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80029296 15.02 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79841227 14.96 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79966152 15.04 ns/op BenchmarkLastIndexAnyASCII/16:2-4 79885614 15.02 ns/op BenchmarkLastIndexAnyASCII/16:2-4 80266387 14.99 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67475908 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67388422 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67484871 17.77 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67545805 17.77 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67430188 17.77 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67426252 17.77 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67420945 17.77 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67537232 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67331236 17.77 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67491992 17.78 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47009623 25.55 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47211645 25.60 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47153282 25.62 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47125154 25.58 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46794538 25.59 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46865028 25.64 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47271159 25.61 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47104603 25.56 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46891891 25.60 ns/op BenchmarkLastIndexAnyASCII/16:8-4 47131596 25.60 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34350446 34.87 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34586606 34.91 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34005726 34.90 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34429519 34.83 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34103462 34.85 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34607013 34.87 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34251470 34.81 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34661962 34.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34339753 34.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 34321532 34.80 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19014428 62.43 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18803395 61.89 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19172653 62.53 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19239721 62.34 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19105746 63.14 ns/op BenchmarkLastIndexAnyASCII/16:32-4 21072120 61.92 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19344319 61.68 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19237252 61.49 ns/op BenchmarkLastIndexAnyASCII/16:32-4 19939406 62.28 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18263660 59.95 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11734748 101.3 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11471858 101.0 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11216458 101.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11660943 102.5 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11422136 101.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11852473 103.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11438349 102.6 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11651168 102.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11186517 100.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11460081 103.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8008878 149.7 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7979100 150.3 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7970638 150.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7991307 150.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7988810 149.8 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8013217 150.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7964797 150.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7980398 150.4 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8014520 150.8 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7978237 150.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7927580 151.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7955221 151.1 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7974052 151.3 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7973007 152.0 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7968276 151.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7885753 152.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7960761 151.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7985000 151.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7997814 151.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7998097 151.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7703503 153.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7849963 154.3 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7791940 153.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7842076 152.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7822134 153.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7892912 153.1 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7897444 153.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7811384 153.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7781431 153.6 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7851962 153.2 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7483237 161.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7484872 160.5 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7497878 161.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7493016 162.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7478482 161.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7393473 162.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7435833 161.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7484581 161.6 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7475408 161.2 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7406470 162.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7176547 166.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7240638 168.0 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7154766 167.0 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7200982 167.9 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7151106 168.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7128872 168.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7184654 167.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7165846 167.6 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7120515 167.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7220392 168.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6764764 177.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6753577 177.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6788679 176.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6777274 177.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6756068 177.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6755350 177.1 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6798152 177.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6794415 177.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6772006 177.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6775394 177.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5359362 223.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5363594 223.0 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5394902 223.2 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5379553 223.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5375638 223.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5373232 223.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5366221 223.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5351758 223.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5360828 223.0 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5362426 223.4 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 225307861 5.543 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 219911582 5.355 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 217929756 5.386 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 210650853 5.411 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 210684684 5.640 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 232831390 5.367 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 239607980 5.473 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 232850511 5.392 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 232838461 5.573 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 222509146 5.314 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 225643952 5.648 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 236949364 5.487 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 237697849 5.645 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 210693472 5.636 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 222716715 5.479 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 211885026 5.614 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 229542345 5.551 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 222837460 5.593 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 226901235 5.476 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 220444062 5.393 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 235262310 5.444 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 232825602 5.452 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 222864300 5.544 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 221273502 5.359 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 210680216 5.578 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 232853880 5.502 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 221533660 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 233583716 5.535 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 224464780 5.218 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 227318953 5.333 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 214991834 5.481 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 213732487 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 223637359 5.615 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 224365174 5.424 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 232856158 5.231 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 221219935 5.391 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 214284712 5.696 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 220107967 5.602 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 218905305 5.432 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 223013301 5.426 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 245501604 5.395 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 222484135 4.967 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 233846355 5.393 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 226728940 5.232 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 221195083 5.425 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 246627308 5.317 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 234129574 5.198 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 221200771 5.328 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 245733835 5.355 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 236591059 5.259 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 202266278 5.618 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 232847610 5.438 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 225942018 5.591 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 234796354 5.603 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 226070085 5.370 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 215409943 5.505 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 223336915 5.594 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 202970944 5.145 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 230523380 5.444 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 203330194 5.524 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221188950 5.676 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 210864528 5.587 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 220663250 5.841 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 212888151 5.696 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 221217460 5.831 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 213981678 5.659 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 211802445 5.894 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 211685823 5.683 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 211050260 5.807 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 207752713 5.967 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31128638 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31141854 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31139761 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31138144 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31157509 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31098314 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31130745 38.51 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31155931 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31148395 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 31144966 38.52 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14599214 85.74 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13925000 86.04 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14744841 85.16 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 13849168 85.86 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15409718 84.68 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 15414298 84.52 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14707737 89.17 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14775842 87.22 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14761861 86.46 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 14826429 86.27 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13323927 84.75 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14976718 84.84 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14977346 83.50 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13924002 85.25 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13835844 85.62 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14597588 85.29 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14706285 89.47 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 15151982 84.64 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 13994288 85.61 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 14758298 85.67 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14597277 88.38 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13311907 85.59 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14762019 85.63 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14706138 82.54 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14598390 85.69 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14911768 85.95 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 15365571 85.79 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 14600996 85.40 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 15182635 84.08 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 13821692 85.16 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15836678 77.62 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 16141771 79.92 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15415285 78.51 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15594148 79.06 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15827282 79.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15410682 77.80 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 14661615 81.47 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 14599101 77.63 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15410222 77.81 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 15006418 81.08 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14599726 84.96 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 12576853 90.44 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14361936 82.11 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14694216 82.17 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14842635 82.70 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14697961 82.18 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14598952 82.12 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14842110 84.88 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 13864909 82.17 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 14594186 86.30 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13638133 88.83 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13867231 88.35 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13899241 89.74 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13857829 86.99 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13805150 90.51 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13929608 91.31 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13966652 88.72 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13909682 89.03 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13207456 89.51 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 13900190 89.57 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2131058 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2130687 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2130578 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2130475 563.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2131120 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2131004 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2130886 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2131104 563.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2130727 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2131011 563.1 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1270 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 952618 1265 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1324 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1312 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1265 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 953004 1255 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1284 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 952063 1299 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 953233 1284 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1255 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 953671 1314 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1295 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1253 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 953804 1258 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 952353 1258 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1255 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1303 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1315 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1256 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1251 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1300 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1275 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 952730 1293 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1298 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1283 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1257 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1188 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1187 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1247 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 954140 1188 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1202 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1187 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1246 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1203 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1189 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1214 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 858829 1294 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 952579 1309 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 951922 1311 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 859303 1296 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 858897 1259 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 951913 1258 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 953385 1297 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 858450 1397 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 952750 1321 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 903778 1328 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903231 1352 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902337 1387 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902730 1383 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 901839 1378 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903043 1378 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 903156 1387 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 858452 1382 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 902491 1370 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 859208 1336 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 858912 1328 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234597 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234720 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234706 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234756 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234453 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234696 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234727 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234715 5106 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234718 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 234765 5105 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234327 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234236 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234153 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234369 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234294 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234327 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234403 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234229 5114 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234254 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 234457 5113 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20782 57772 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20772 57755 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20763 57770 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20768 57770 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20768 57758 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20754 57771 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20767 57759 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20770 57774 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20760 57699 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 20823 57774 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41424 28957 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41426 28954 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41425 28954 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41515 28959 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41427 28958 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41414 28953 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41430 28954 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41412 28952 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41431 28954 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 41544 28924 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82501 14539 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82456 14540 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82413 14551 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82490 14515 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82470 14546 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82716 14542 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82522 14526 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82472 14547 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82502 14543 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 82485 14543 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 162800 7371 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 162366 7390 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161953 7421 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 162400 7385 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 160030 7415 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161704 7378 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 162673 7398 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 162892 7396 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 160470 7370 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 161762 7367 ns/op BenchmarkIndexByte_Bytes/10-4 368691186 3.255 ns/op 3072.53 MB/s BenchmarkIndexByte_Bytes/10-4 340308474 3.255 ns/op 3071.87 MB/s BenchmarkIndexByte_Bytes/10-4 340277794 3.255 ns/op 3072.54 MB/s BenchmarkIndexByte_Bytes/10-4 340355217 3.255 ns/op 3072.25 MB/s BenchmarkIndexByte_Bytes/10-4 340337958 3.255 ns/op 3072.27 MB/s BenchmarkIndexByte_Bytes/10-4 340367517 3.255 ns/op 3072.22 MB/s BenchmarkIndexByte_Bytes/10-4 368697140 3.255 ns/op 3072.49 MB/s BenchmarkIndexByte_Bytes/10-4 368647234 3.255 ns/op 3072.39 MB/s BenchmarkIndexByte_Bytes/10-4 368622457 3.255 ns/op 3072.09 MB/s BenchmarkIndexByte_Bytes/10-4 340294922 3.255 ns/op 3072.38 MB/s BenchmarkIndexByte_Bytes/32-4 340265223 3.797 ns/op 8427.56 MB/s BenchmarkIndexByte_Bytes/32-4 340301697 3.526 ns/op 9075.04 MB/s BenchmarkIndexByte_Bytes/32-4 340293765 3.526 ns/op 9074.80 MB/s BenchmarkIndexByte_Bytes/32-4 336513939 3.526 ns/op 9075.31 MB/s BenchmarkIndexByte_Bytes/32-4 340314099 3.685 ns/op 8683.74 MB/s BenchmarkIndexByte_Bytes/32-4 340274004 3.526 ns/op 9074.63 MB/s BenchmarkIndexByte_Bytes/32-4 340180675 3.526 ns/op 9074.87 MB/s BenchmarkIndexByte_Bytes/32-4 340310084 3.526 ns/op 9074.72 MB/s BenchmarkIndexByte_Bytes/32-4 340340372 3.526 ns/op 9074.62 MB/s BenchmarkIndexByte_Bytes/32-4 331010605 3.527 ns/op 9072.88 MB/s BenchmarkIndexByte_Bytes/4K-4 24426538 45.03 ns/op 90968.12 MB/s BenchmarkIndexByte_Bytes/4K-4 26649868 45.03 ns/op 90970.77 MB/s BenchmarkIndexByte_Bytes/4K-4 24612333 45.03 ns/op 90959.20 MB/s BenchmarkIndexByte_Bytes/4K-4 25996495 45.31 ns/op 90393.98 MB/s BenchmarkIndexByte_Bytes/4K-4 26646002 45.35 ns/op 90317.92 MB/s BenchmarkIndexByte_Bytes/4K-4 24727597 45.03 ns/op 90969.23 MB/s BenchmarkIndexByte_Bytes/4K-4 26641950 51.00 ns/op 80321.22 MB/s BenchmarkIndexByte_Bytes/4K-4 26652328 45.03 ns/op 90965.02 MB/s BenchmarkIndexByte_Bytes/4K-4 26638159 45.03 ns/op 90964.53 MB/s BenchmarkIndexByte_Bytes/4K-4 26631046 45.03 ns/op 90963.44 MB/s BenchmarkIndexByte_Bytes/4M-4 27621 43509 ns/op 96400.85 MB/s BenchmarkIndexByte_Bytes/4M-4 27595 43507 ns/op 96406.31 MB/s BenchmarkIndexByte_Bytes/4M-4 27592 43505 ns/op 96409.76 MB/s BenchmarkIndexByte_Bytes/4M-4 27606 43528 ns/op 96359.34 MB/s BenchmarkIndexByte_Bytes/4M-4 27606 43504 ns/op 96411.40 MB/s BenchmarkIndexByte_Bytes/4M-4 27606 43508 ns/op 96403.90 MB/s BenchmarkIndexByte_Bytes/4M-4 27592 43482 ns/op 96460.95 MB/s BenchmarkIndexByte_Bytes/4M-4 27598 43512 ns/op 96394.18 MB/s BenchmarkIndexByte_Bytes/4M-4 27580 43487 ns/op 96449.09 MB/s BenchmarkIndexByte_Bytes/4M-4 27590 43486 ns/op 96452.54 MB/s BenchmarkIndexByte_Bytes/64M-4 739 1423667 ns/op 47138.03 MB/s BenchmarkIndexByte_Bytes/64M-4 828 1410664 ns/op 47572.54 MB/s BenchmarkIndexByte_Bytes/64M-4 824 1406285 ns/op 47720.67 MB/s BenchmarkIndexByte_Bytes/64M-4 828 1412865 ns/op 47498.44 MB/s BenchmarkIndexByte_Bytes/64M-4 829 1408513 ns/op 47645.18 MB/s BenchmarkIndexByte_Bytes/64M-4 828 1415443 ns/op 47411.90 MB/s BenchmarkIndexByte_Bytes/64M-4 824 1421222 ns/op 47219.12 MB/s BenchmarkIndexByte_Bytes/64M-4 819 1409177 ns/op 47622.73 MB/s BenchmarkIndexByte_Bytes/64M-4 830 1416482 ns/op 47377.14 MB/s BenchmarkIndexByte_Bytes/64M-4 818 1413797 ns/op 47467.12 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.64 ns/op 859.46 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.63 ns/op 860.10 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.58 ns/op 863.22 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.63 ns/op 859.84 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.63 ns/op 859.56 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.61 ns/op 861.23 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.62 ns/op 860.36 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.62 ns/op 860.32 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.60 ns/op 862.34 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.62 ns/op 860.62 MB/s BenchmarkIndexRune_Bytes/32-4 90189507 13.29 ns/op 2407.49 MB/s BenchmarkIndexRune_Bytes/32-4 90260670 13.29 ns/op 2407.58 MB/s BenchmarkIndexRune_Bytes/32-4 90159835 13.29 ns/op 2407.58 MB/s BenchmarkIndexRune_Bytes/32-4 90117375 13.29 ns/op 2407.46 MB/s BenchmarkIndexRune_Bytes/32-4 90300478 13.29 ns/op 2407.48 MB/s BenchmarkIndexRune_Bytes/32-4 90242553 13.29 ns/op 2407.44 MB/s BenchmarkIndexRune_Bytes/32-4 90204972 13.29 ns/op 2407.53 MB/s BenchmarkIndexRune_Bytes/32-4 90214392 13.29 ns/op 2407.55 MB/s BenchmarkIndexRune_Bytes/32-4 90264608 13.29 ns/op 2407.58 MB/s BenchmarkIndexRune_Bytes/32-4 90226329 13.29 ns/op 2407.49 MB/s BenchmarkIndexRune_Bytes/4K-4 20469946 58.39 ns/op 70154.14 MB/s BenchmarkIndexRune_Bytes/4K-4 20526644 58.38 ns/op 70155.54 MB/s BenchmarkIndexRune_Bytes/4K-4 20568363 58.37 ns/op 70170.74 MB/s BenchmarkIndexRune_Bytes/4K-4 20555102 58.38 ns/op 70155.59 MB/s BenchmarkIndexRune_Bytes/4K-4 20528486 58.40 ns/op 70142.11 MB/s BenchmarkIndexRune_Bytes/4K-4 20554264 58.40 ns/op 70133.62 MB/s BenchmarkIndexRune_Bytes/4K-4 20534378 58.41 ns/op 70130.64 MB/s BenchmarkIndexRune_Bytes/4K-4 20543539 58.43 ns/op 70097.36 MB/s BenchmarkIndexRune_Bytes/4K-4 20539129 58.38 ns/op 70157.13 MB/s BenchmarkIndexRune_Bytes/4K-4 20545640 58.37 ns/op 70176.11 MB/s BenchmarkIndexRune_Bytes/4M-4 22221 54008 ns/op 77660.65 MB/s BenchmarkIndexRune_Bytes/4M-4 22213 54054 ns/op 77594.07 MB/s BenchmarkIndexRune_Bytes/4M-4 22214 54031 ns/op 77627.98 MB/s BenchmarkIndexRune_Bytes/4M-4 22208 54004 ns/op 77666.85 MB/s BenchmarkIndexRune_Bytes/4M-4 22213 54009 ns/op 77659.48 MB/s BenchmarkIndexRune_Bytes/4M-4 22216 54020 ns/op 77643.83 MB/s BenchmarkIndexRune_Bytes/4M-4 22221 54020 ns/op 77642.93 MB/s BenchmarkIndexRune_Bytes/4M-4 22202 54033 ns/op 77625.53 MB/s BenchmarkIndexRune_Bytes/4M-4 22206 53992 ns/op 77683.55 MB/s BenchmarkIndexRune_Bytes/4M-4 22208 54069 ns/op 77572.81 MB/s BenchmarkIndexRune_Bytes/64M-4 730 1514132 ns/op 44321.66 MB/s BenchmarkIndexRune_Bytes/64M-4 763 1528989 ns/op 43890.99 MB/s BenchmarkIndexRune_Bytes/64M-4 764 1540508 ns/op 43562.81 MB/s BenchmarkIndexRune_Bytes/64M-4 764 1547014 ns/op 43379.60 MB/s BenchmarkIndexRune_Bytes/64M-4 762 1537098 ns/op 43659.45 MB/s BenchmarkIndexRune_Bytes/64M-4 764 1560063 ns/op 43016.76 MB/s BenchmarkIndexRune_Bytes/64M-4 758 1562770 ns/op 42942.25 MB/s BenchmarkIndexRune_Bytes/64M-4 753 1554667 ns/op 43166.08 MB/s BenchmarkIndexRune_Bytes/64M-4 753 1596645 ns/op 42031.17 MB/s BenchmarkIndexRune_Bytes/64M-4 732 1551747 ns/op 43247.29 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341457645 3.522 ns/op 2839.52 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341667740 3.521 ns/op 2839.83 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341325770 3.522 ns/op 2839.11 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 316079047 3.521 ns/op 2840.50 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 316011042 3.522 ns/op 2839.20 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 317097705 3.523 ns/op 2838.63 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 317262284 3.522 ns/op 2839.15 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 316666675 3.522 ns/op 2839.56 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341568052 3.797 ns/op 2633.55 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 341618392 3.522 ns/op 2839.65 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 327721299 3.661 ns/op 8740.14 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 327730357 3.662 ns/op 8739.31 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 327690121 3.661 ns/op 8739.88 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 316546285 3.661 ns/op 8739.70 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 294987440 3.661 ns/op 8739.94 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 327750904 3.663 ns/op 8736.60 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 327782104 3.661 ns/op 8739.71 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 294971065 3.661 ns/op 8740.24 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 327713160 3.661 ns/op 8740.19 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 327735418 3.661 ns/op 8739.84 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24571321 51.16 ns/op 80067.68 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24449756 51.14 ns/op 80090.28 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24470751 51.14 ns/op 80093.94 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 23515008 51.15 ns/op 80078.84 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24056250 51.17 ns/op 80046.88 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24626107 51.18 ns/op 80034.79 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24316087 51.16 ns/op 80057.26 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 25819435 45.29 ns/op 90430.92 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24534813 51.16 ns/op 80057.63 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 24548848 51.14 ns/op 80098.20 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27499 43692 ns/op 95997.79 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27483 43679 ns/op 96026.13 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27504 43693 ns/op 95994.21 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27463 43653 ns/op 96082.03 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27489 43665 ns/op 96056.45 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27493 43693 ns/op 95995.48 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27488 43702 ns/op 95974.33 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27501 43658 ns/op 96072.37 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27495 43654 ns/op 96080.00 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 27483 43638 ns/op 96116.26 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 787 1419663 ns/op 47270.97 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 820 1414707 ns/op 47436.58 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 825 1421340 ns/op 47215.22 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 818 1416359 ns/op 47381.25 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 823 1412507 ns/op 47510.47 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 825 1414315 ns/op 47449.72 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 811 1419652 ns/op 47271.35 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 826 1427791 ns/op 47001.89 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 819 1415272 ns/op 47417.65 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 824 1419861 ns/op 47264.39 MB/s BenchmarkIndexNonASCII_Bytes/10-4 334403600 3.529 ns/op 2833.82 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340278853 3.527 ns/op 2835.66 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340319152 3.528 ns/op 2834.50 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340540836 3.526 ns/op 2836.07 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340373712 3.527 ns/op 2835.09 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340391448 3.527 ns/op 2835.02 MB/s BenchmarkIndexNonASCII_Bytes/10-4 345602625 3.528 ns/op 2834.14 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340353013 3.538 ns/op 2826.46 MB/s BenchmarkIndexNonASCII_Bytes/10-4 339019088 3.528 ns/op 2834.20 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340329984 3.528 ns/op 2834.45 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.32 ns/op 3102.17 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.36 ns/op 3088.66 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.32 ns/op 3101.87 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.36 ns/op 3088.78 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.24 ns/op 3123.77 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.29 ns/op 3108.70 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.27 ns/op 3116.33 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.25 ns/op 3122.38 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.30 ns/op 3105.34 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.33 ns/op 3098.34 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3645.25 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1119 ns/op 3659.41 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1130 ns/op 3625.88 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 951924 1124 ns/op 3644.79 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1125 ns/op 3640.33 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3643.25 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3644.85 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3645.01 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1124 ns/op 3645.27 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1119 ns/op 3660.74 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1138884 ns/op 3682.82 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1139307 ns/op 3681.45 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1138971 ns/op 3682.54 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1138881 ns/op 3682.83 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1138950 ns/op 3682.60 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1138875 ns/op 3682.85 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1050 1138857 ns/op 3682.91 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1138958 ns/op 3682.58 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1051 1138869 ns/op 3682.87 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1048 1139323 ns/op 3681.40 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 64 18294775 ns/op 3668.20 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18299044 ns/op 3667.34 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18299367 ns/op 3667.28 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18298870 ns/op 3667.38 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18299778 ns/op 3667.20 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18299015 ns/op 3667.35 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18300027 ns/op 3667.15 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18298643 ns/op 3667.42 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18300665 ns/op 3667.02 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 55 18295534 ns/op 3668.05 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2050.888s strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/strcase.10.1706755042.23dd4971.txt 0000664 0000000 0000000 00000276552 14720254634 0027067 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 BenchmarkIndexRune-4 98197036 12.21 ns/op BenchmarkIndexRune-4 98176148 12.21 ns/op BenchmarkIndexRune-4 98289451 12.21 ns/op BenchmarkIndexRune-4 98196795 12.21 ns/op BenchmarkIndexRune-4 98359704 12.21 ns/op BenchmarkIndexRune-4 98170044 12.21 ns/op BenchmarkIndexRune-4 98267317 12.21 ns/op BenchmarkIndexRune-4 98236105 12.21 ns/op BenchmarkIndexRune-4 98298067 12.21 ns/op BenchmarkIndexRune-4 98160649 12.21 ns/op BenchmarkIndexRuneLongString-4 90188260 13.29 ns/op BenchmarkIndexRuneLongString-4 90156549 13.29 ns/op BenchmarkIndexRuneLongString-4 90250263 13.30 ns/op BenchmarkIndexRuneLongString-4 90123310 13.29 ns/op BenchmarkIndexRuneLongString-4 90200402 13.29 ns/op BenchmarkIndexRuneLongString-4 90296306 13.29 ns/op BenchmarkIndexRuneLongString-4 89936475 13.29 ns/op BenchmarkIndexRuneLongString-4 90200937 13.29 ns/op BenchmarkIndexRuneLongString-4 89939036 13.30 ns/op BenchmarkIndexRuneLongString-4 90093532 13.29 ns/op BenchmarkIndexRuneFastPath-4 210656074 5.697 ns/op BenchmarkIndexRuneFastPath-4 210634692 5.697 ns/op BenchmarkIndexRuneFastPath-4 210603517 5.697 ns/op BenchmarkIndexRuneFastPath-4 210628436 5.697 ns/op BenchmarkIndexRuneFastPath-4 210622214 5.697 ns/op BenchmarkIndexRuneFastPath-4 210598110 5.697 ns/op BenchmarkIndexRuneFastPath-4 210644475 5.697 ns/op BenchmarkIndexRuneFastPath-4 210648882 5.697 ns/op BenchmarkIndexRuneFastPath-4 210632650 5.697 ns/op BenchmarkIndexRuneFastPath-4 210632827 5.697 ns/op BenchmarkIndex-4 185079237 5.968 ns/op BenchmarkIndex-4 194250036 5.968 ns/op BenchmarkIndex-4 201073092 5.968 ns/op BenchmarkIndex-4 196889498 5.968 ns/op BenchmarkIndex-4 201070063 5.968 ns/op BenchmarkIndex-4 198300292 5.968 ns/op BenchmarkIndex-4 201088867 5.968 ns/op BenchmarkIndex-4 198118555 5.968 ns/op BenchmarkIndex-4 201053714 5.968 ns/op BenchmarkIndex-4 201061387 5.968 ns/op BenchmarkLastIndex-4 233144245 5.152 ns/op BenchmarkLastIndex-4 233199738 5.151 ns/op BenchmarkLastIndex-4 233237676 5.150 ns/op BenchmarkLastIndex-4 233319240 5.149 ns/op BenchmarkLastIndex-4 233144806 5.342 ns/op BenchmarkLastIndex-4 232849584 5.149 ns/op BenchmarkLastIndex-4 233284898 5.149 ns/op BenchmarkLastIndex-4 233127024 5.147 ns/op BenchmarkLastIndex-4 234244507 5.145 ns/op BenchmarkLastIndex-4 233239914 5.150 ns/op BenchmarkIndexByte-4 260870520 4.341 ns/op BenchmarkIndexByte-4 276460458 4.340 ns/op BenchmarkIndexByte-4 276426781 4.340 ns/op BenchmarkIndexByte-4 276493200 4.341 ns/op BenchmarkIndexByte-4 276496058 4.612 ns/op BenchmarkIndexByte-4 276462577 4.341 ns/op BenchmarkIndexByte-4 260564590 4.341 ns/op BenchmarkIndexByte-4 260802861 4.340 ns/op BenchmarkIndexByte-4 276434504 4.340 ns/op BenchmarkIndexByte-4 260214231 4.340 ns/op BenchmarkEqualFold/ASCII-4 142516719 8.365 ns/op BenchmarkEqualFold/ASCII-4 142335938 8.442 ns/op BenchmarkEqualFold/ASCII-4 143833706 8.376 ns/op BenchmarkEqualFold/ASCII-4 131251072 8.308 ns/op BenchmarkEqualFold/ASCII-4 142621234 8.370 ns/op BenchmarkEqualFold/ASCII-4 142459767 8.327 ns/op BenchmarkEqualFold/ASCII-4 141648291 8.373 ns/op BenchmarkEqualFold/ASCII-4 142770993 8.416 ns/op BenchmarkEqualFold/ASCII-4 143545736 8.308 ns/op BenchmarkEqualFold/ASCII-4 145532144 8.382 ns/op BenchmarkEqualFold/UnicodePrefix-4 34991097 34.14 ns/op BenchmarkEqualFold/UnicodePrefix-4 35390152 34.04 ns/op BenchmarkEqualFold/UnicodePrefix-4 35361224 34.06 ns/op BenchmarkEqualFold/UnicodePrefix-4 34969449 34.05 ns/op BenchmarkEqualFold/UnicodePrefix-4 35367799 34.05 ns/op BenchmarkEqualFold/UnicodePrefix-4 35171444 34.08 ns/op BenchmarkEqualFold/UnicodePrefix-4 35261130 34.06 ns/op BenchmarkEqualFold/UnicodePrefix-4 35393096 34.14 ns/op BenchmarkEqualFold/UnicodePrefix-4 35360410 34.04 ns/op BenchmarkEqualFold/UnicodePrefix-4 35317575 34.10 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45179480 26.43 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45330760 26.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45412623 26.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45342459 26.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45349725 26.43 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45382311 26.47 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45348250 26.47 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45315373 26.44 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45327046 26.43 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45351595 26.45 ns/op BenchmarkIndexHard1-4 14709 81537 ns/op BenchmarkIndexHard1-4 14708 81557 ns/op BenchmarkIndexHard1-4 14709 81605 ns/op BenchmarkIndexHard1-4 14704 81592 ns/op BenchmarkIndexHard1-4 14706 81597 ns/op BenchmarkIndexHard1-4 14708 81588 ns/op BenchmarkIndexHard1-4 14708 81588 ns/op BenchmarkIndexHard1-4 14707 81596 ns/op BenchmarkIndexHard1-4 14706 81596 ns/op BenchmarkIndexHard1-4 14706 81588 ns/op BenchmarkIndexHard2-4 468 2558066 ns/op BenchmarkIndexHard2-4 469 2547304 ns/op BenchmarkIndexHard2-4 472 2559498 ns/op BenchmarkIndexHard2-4 464 2560057 ns/op BenchmarkIndexHard2-4 469 2556080 ns/op BenchmarkIndexHard2-4 472 2534129 ns/op BenchmarkIndexHard2-4 464 2533875 ns/op BenchmarkIndexHard2-4 464 2534006 ns/op BenchmarkIndexHard2-4 471 2534048 ns/op BenchmarkIndexHard2-4 469 2558162 ns/op BenchmarkIndexHard3-4 566 2095726 ns/op BenchmarkIndexHard3-4 566 2095455 ns/op BenchmarkIndexHard3-4 566 2095968 ns/op BenchmarkIndexHard3-4 566 2094793 ns/op BenchmarkIndexHard3-4 566 2128310 ns/op BenchmarkIndexHard3-4 567 2094055 ns/op BenchmarkIndexHard3-4 566 2094560 ns/op BenchmarkIndexHard3-4 566 2093850 ns/op BenchmarkIndexHard3-4 568 2094009 ns/op BenchmarkIndexHard3-4 566 2105467 ns/op BenchmarkIndexHard4-4 784 1509537 ns/op BenchmarkIndexHard4-4 784 1509647 ns/op BenchmarkIndexHard4-4 784 1513766 ns/op BenchmarkIndexHard4-4 784 1509645 ns/op BenchmarkIndexHard4-4 784 1509651 ns/op BenchmarkIndexHard4-4 784 1509565 ns/op BenchmarkIndexHard4-4 784 1509603 ns/op BenchmarkIndexHard4-4 784 1509545 ns/op BenchmarkIndexHard4-4 784 1509766 ns/op BenchmarkIndexHard4-4 784 1509466 ns/op BenchmarkLastIndexHard1-4 709 1663198 ns/op BenchmarkLastIndexHard1-4 709 1663254 ns/op BenchmarkLastIndexHard1-4 709 1663194 ns/op BenchmarkLastIndexHard1-4 709 1663244 ns/op BenchmarkLastIndexHard1-4 709 1663352 ns/op BenchmarkLastIndexHard1-4 709 1663177 ns/op BenchmarkLastIndexHard1-4 709 1663242 ns/op BenchmarkLastIndexHard1-4 709 1663337 ns/op BenchmarkLastIndexHard1-4 709 1663297 ns/op BenchmarkLastIndexHard1-4 709 1663184 ns/op BenchmarkLastIndexHard2-4 709 1663318 ns/op BenchmarkLastIndexHard2-4 709 1663240 ns/op BenchmarkLastIndexHard2-4 709 1663314 ns/op BenchmarkLastIndexHard2-4 709 1663575 ns/op BenchmarkLastIndexHard2-4 709 1663393 ns/op BenchmarkLastIndexHard2-4 709 1663302 ns/op BenchmarkLastIndexHard2-4 709 1663467 ns/op BenchmarkLastIndexHard2-4 709 1663254 ns/op BenchmarkLastIndexHard2-4 709 1663383 ns/op BenchmarkLastIndexHard2-4 709 1663246 ns/op BenchmarkLastIndexHard3-4 709 1663851 ns/op BenchmarkLastIndexHard3-4 709 1664013 ns/op BenchmarkLastIndexHard3-4 709 1663943 ns/op BenchmarkLastIndexHard3-4 709 1663928 ns/op BenchmarkLastIndexHard3-4 709 1663850 ns/op BenchmarkLastIndexHard3-4 709 1663850 ns/op BenchmarkLastIndexHard3-4 709 1663841 ns/op BenchmarkLastIndexHard3-4 709 1663883 ns/op BenchmarkLastIndexHard3-4 709 1663958 ns/op BenchmarkLastIndexHard3-4 709 1663902 ns/op BenchmarkCountHard1-4 14706 81582 ns/op BenchmarkCountHard1-4 14707 81578 ns/op BenchmarkCountHard1-4 14706 81581 ns/op BenchmarkCountHard1-4 14708 81565 ns/op BenchmarkCountHard1-4 14709 81597 ns/op BenchmarkCountHard1-4 14703 81600 ns/op BenchmarkCountHard1-4 14703 81598 ns/op BenchmarkCountHard1-4 14704 81600 ns/op BenchmarkCountHard1-4 14704 81596 ns/op BenchmarkCountHard1-4 14703 81602 ns/op BenchmarkCountHard2-4 463 2558968 ns/op BenchmarkCountHard2-4 464 2534888 ns/op BenchmarkCountHard2-4 470 2558387 ns/op BenchmarkCountHard2-4 465 2534088 ns/op BenchmarkCountHard2-4 468 2537633 ns/op BenchmarkCountHard2-4 469 2536981 ns/op BenchmarkCountHard2-4 470 2536371 ns/op BenchmarkCountHard2-4 465 2533748 ns/op BenchmarkCountHard2-4 468 2536249 ns/op BenchmarkCountHard2-4 470 2565498 ns/op BenchmarkCountHard3-4 567 2092976 ns/op BenchmarkCountHard3-4 567 2093489 ns/op BenchmarkCountHard3-4 566 2090789 ns/op BenchmarkCountHard3-4 567 2092675 ns/op BenchmarkCountHard3-4 566 2094184 ns/op BenchmarkCountHard3-4 558 2116446 ns/op BenchmarkCountHard3-4 566 2093611 ns/op BenchmarkCountHard3-4 567 2096007 ns/op BenchmarkCountHard3-4 567 2090746 ns/op BenchmarkCountHard3-4 567 2091497 ns/op BenchmarkIndexTorture-4 59653 20131 ns/op BenchmarkIndexTorture-4 59642 20133 ns/op BenchmarkIndexTorture-4 59666 20132 ns/op BenchmarkIndexTorture-4 59613 20130 ns/op BenchmarkIndexTorture-4 59611 20127 ns/op BenchmarkIndexTorture-4 59617 20129 ns/op BenchmarkIndexTorture-4 59601 20130 ns/op BenchmarkIndexTorture-4 59649 20131 ns/op BenchmarkIndexTorture-4 59632 20122 ns/op BenchmarkIndexTorture-4 59619 20134 ns/op BenchmarkCountTorture-4 61533 19514 ns/op BenchmarkCountTorture-4 61546 19514 ns/op BenchmarkCountTorture-4 61514 19512 ns/op BenchmarkCountTorture-4 61552 19512 ns/op BenchmarkCountTorture-4 61491 19515 ns/op BenchmarkCountTorture-4 61537 19512 ns/op BenchmarkCountTorture-4 61521 19512 ns/op BenchmarkCountTorture-4 61479 19516 ns/op BenchmarkCountTorture-4 61502 19505 ns/op BenchmarkCountTorture-4 61544 19512 ns/op BenchmarkCountTortureOverlapping-4 235 4747473 ns/op BenchmarkCountTortureOverlapping-4 250 4744423 ns/op BenchmarkCountTortureOverlapping-4 250 4747257 ns/op BenchmarkCountTortureOverlapping-4 242 4747368 ns/op BenchmarkCountTortureOverlapping-4 250 4776051 ns/op BenchmarkCountTortureOverlapping-4 250 4745063 ns/op BenchmarkCountTortureOverlapping-4 250 4743428 ns/op BenchmarkCountTortureOverlapping-4 250 4743762 ns/op BenchmarkCountTortureOverlapping-4 232 4748303 ns/op BenchmarkCountTortureOverlapping-4 250 4744565 ns/op BenchmarkCountByte/10-4 100000000 10.20 ns/op 980.36 MB/s BenchmarkCountByte/10-4 100000000 10.19 ns/op 981.01 MB/s BenchmarkCountByte/10-4 100000000 10.18 ns/op 982.58 MB/s BenchmarkCountByte/10-4 100000000 10.31 ns/op 969.60 MB/s BenchmarkCountByte/10-4 100000000 10.31 ns/op 969.80 MB/s BenchmarkCountByte/10-4 100000000 10.31 ns/op 969.65 MB/s BenchmarkCountByte/10-4 100000000 10.31 ns/op 969.74 MB/s BenchmarkCountByte/10-4 100000000 10.20 ns/op 980.76 MB/s BenchmarkCountByte/10-4 100000000 10.31 ns/op 969.76 MB/s BenchmarkCountByte/10-4 100000000 10.18 ns/op 982.35 MB/s BenchmarkCountByte/32-4 52010542 23.02 ns/op 1389.81 MB/s BenchmarkCountByte/32-4 52062712 23.04 ns/op 1388.97 MB/s BenchmarkCountByte/32-4 52649511 23.06 ns/op 1387.88 MB/s BenchmarkCountByte/32-4 52011354 22.78 ns/op 1404.46 MB/s BenchmarkCountByte/32-4 52029507 23.05 ns/op 1388.22 MB/s BenchmarkCountByte/32-4 51967837 22.91 ns/op 1396.86 MB/s BenchmarkCountByte/32-4 52021816 23.03 ns/op 1389.43 MB/s BenchmarkCountByte/32-4 52018366 23.03 ns/op 1389.78 MB/s BenchmarkCountByte/32-4 52043317 22.79 ns/op 1404.40 MB/s BenchmarkCountByte/32-4 51984204 23.30 ns/op 1373.67 MB/s BenchmarkCountByte/4K-4 537000 2234 ns/op 1833.88 MB/s BenchmarkCountByte/4K-4 536882 2233 ns/op 1833.94 MB/s BenchmarkCountByte/4K-4 536744 2234 ns/op 1833.84 MB/s BenchmarkCountByte/4K-4 536862 2234 ns/op 1833.55 MB/s BenchmarkCountByte/4K-4 536812 2234 ns/op 1833.80 MB/s BenchmarkCountByte/4K-4 537244 2233 ns/op 1834.00 MB/s BenchmarkCountByte/4K-4 536652 2234 ns/op 1833.75 MB/s BenchmarkCountByte/4K-4 536822 2234 ns/op 1833.88 MB/s BenchmarkCountByte/4K-4 536871 2233 ns/op 1834.07 MB/s BenchmarkCountByte/4K-4 536390 2233 ns/op 1834.01 MB/s BenchmarkCountByte/4M-4 520 2282436 ns/op 1837.64 MB/s BenchmarkCountByte/4M-4 520 2282456 ns/op 1837.63 MB/s BenchmarkCountByte/4M-4 520 2282456 ns/op 1837.63 MB/s BenchmarkCountByte/4M-4 520 2282420 ns/op 1837.66 MB/s BenchmarkCountByte/4M-4 520 2282355 ns/op 1837.71 MB/s BenchmarkCountByte/4M-4 520 2282318 ns/op 1837.74 MB/s BenchmarkCountByte/4M-4 520 2282485 ns/op 1837.60 MB/s BenchmarkCountByte/4M-4 520 2282323 ns/op 1837.73 MB/s BenchmarkCountByte/4M-4 520 2282277 ns/op 1837.77 MB/s BenchmarkCountByte/4M-4 520 2282420 ns/op 1837.66 MB/s BenchmarkCountByte/64M-4 30 37737384 ns/op 1778.31 MB/s BenchmarkCountByte/64M-4 30 37740370 ns/op 1778.17 MB/s BenchmarkCountByte/64M-4 30 37736449 ns/op 1778.36 MB/s BenchmarkCountByte/64M-4 30 37736671 ns/op 1778.35 MB/s BenchmarkCountByte/64M-4 30 37738364 ns/op 1778.27 MB/s BenchmarkCountByte/64M-4 30 37740782 ns/op 1778.15 MB/s BenchmarkCountByte/64M-4 30 37738130 ns/op 1778.28 MB/s BenchmarkCountByte/64M-4 30 37731329 ns/op 1778.60 MB/s BenchmarkCountByte/64M-4 30 37728659 ns/op 1778.72 MB/s BenchmarkCountByte/64M-4 30 37727020 ns/op 1778.80 MB/s BenchmarkIndexAnyASCII/1:1-4 184331992 6.715 ns/op BenchmarkIndexAnyASCII/1:1-4 192356233 6.373 ns/op BenchmarkIndexAnyASCII/1:1-4 192361182 6.239 ns/op BenchmarkIndexAnyASCII/1:1-4 184354538 6.239 ns/op BenchmarkIndexAnyASCII/1:1-4 184316673 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 192334087 6.394 ns/op BenchmarkIndexAnyASCII/1:1-4 192352076 6.239 ns/op BenchmarkIndexAnyASCII/1:1-4 178358120 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 184348401 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 184148942 6.256 ns/op BenchmarkIndexAnyASCII/1:2-4 142719454 8.408 ns/op BenchmarkIndexAnyASCII/1:2-4 142704987 8.408 ns/op BenchmarkIndexAnyASCII/1:2-4 142717242 8.408 ns/op BenchmarkIndexAnyASCII/1:2-4 142719163 8.672 ns/op BenchmarkIndexAnyASCII/1:2-4 142719909 8.409 ns/op BenchmarkIndexAnyASCII/1:2-4 142696940 8.580 ns/op BenchmarkIndexAnyASCII/1:2-4 142712665 8.408 ns/op BenchmarkIndexAnyASCII/1:2-4 142712347 8.409 ns/op BenchmarkIndexAnyASCII/1:2-4 142724308 8.408 ns/op BenchmarkIndexAnyASCII/1:2-4 142718606 8.545 ns/op BenchmarkIndexAnyASCII/1:4-4 142724540 8.537 ns/op BenchmarkIndexAnyASCII/1:4-4 142703214 8.408 ns/op BenchmarkIndexAnyASCII/1:4-4 142710106 8.408 ns/op BenchmarkIndexAnyASCII/1:4-4 142712622 8.408 ns/op BenchmarkIndexAnyASCII/1:4-4 142709406 8.892 ns/op BenchmarkIndexAnyASCII/1:4-4 142670517 8.410 ns/op BenchmarkIndexAnyASCII/1:4-4 142696636 8.411 ns/op BenchmarkIndexAnyASCII/1:4-4 142667905 8.409 ns/op BenchmarkIndexAnyASCII/1:4-4 142151913 8.410 ns/op BenchmarkIndexAnyASCII/1:4-4 142689888 8.410 ns/op BenchmarkIndexAnyASCII/1:8-4 142686111 8.410 ns/op BenchmarkIndexAnyASCII/1:8-4 140649525 8.409 ns/op BenchmarkIndexAnyASCII/1:8-4 142697206 8.410 ns/op BenchmarkIndexAnyASCII/1:8-4 142700953 8.410 ns/op BenchmarkIndexAnyASCII/1:8-4 142701571 8.411 ns/op BenchmarkIndexAnyASCII/1:8-4 139504077 8.409 ns/op BenchmarkIndexAnyASCII/1:8-4 142698142 8.410 ns/op BenchmarkIndexAnyASCII/1:8-4 142688080 8.410 ns/op BenchmarkIndexAnyASCII/1:8-4 142693256 8.482 ns/op BenchmarkIndexAnyASCII/1:8-4 142687694 8.411 ns/op BenchmarkIndexAnyASCII/1:16-4 142681434 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142690276 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142709574 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142728709 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142711603 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142719392 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142713525 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142727656 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142720114 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142720483 8.408 ns/op BenchmarkIndexAnyASCII/1:32-4 138264010 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138274016 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138261554 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138271047 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138260781 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138269233 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138265299 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138256104 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138258882 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138269916 8.679 ns/op BenchmarkIndexAnyASCII/1:64-4 142726152 8.407 ns/op BenchmarkIndexAnyASCII/1:64-4 142709406 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142729558 8.407 ns/op BenchmarkIndexAnyASCII/1:64-4 142727414 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142726869 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142692122 8.408 ns/op BenchmarkIndexAnyASCII/1:64-4 142691272 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142687126 8.408 ns/op BenchmarkIndexAnyASCII/1:64-4 142733815 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142725015 8.409 ns/op BenchmarkIndexAnyASCII/16:1-4 192329839 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192309145 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192336559 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 184328514 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192295962 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 190000218 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 190267998 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 188342383 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192295885 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192330100 6.239 ns/op BenchmarkIndexAnyASCII/16:2-4 64718893 18.37 ns/op BenchmarkIndexAnyASCII/16:2-4 65243400 18.35 ns/op BenchmarkIndexAnyASCII/16:2-4 65439261 18.45 ns/op BenchmarkIndexAnyASCII/16:2-4 64974460 18.44 ns/op BenchmarkIndexAnyASCII/16:2-4 64921939 18.40 ns/op BenchmarkIndexAnyASCII/16:2-4 65448398 18.36 ns/op BenchmarkIndexAnyASCII/16:2-4 65024656 18.33 ns/op BenchmarkIndexAnyASCII/16:2-4 65357991 18.43 ns/op BenchmarkIndexAnyASCII/16:2-4 65529914 18.41 ns/op BenchmarkIndexAnyASCII/16:2-4 65374616 18.40 ns/op BenchmarkIndexAnyASCII/16:4-4 58080601 20.71 ns/op BenchmarkIndexAnyASCII/16:4-4 57738126 20.72 ns/op BenchmarkIndexAnyASCII/16:4-4 57970723 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 57971926 20.69 ns/op BenchmarkIndexAnyASCII/16:4-4 57981619 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 57632222 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 57853398 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 58036188 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 57952500 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 57746524 20.69 ns/op BenchmarkIndexAnyASCII/16:8-4 45965114 26.06 ns/op BenchmarkIndexAnyASCII/16:8-4 46089860 26.07 ns/op BenchmarkIndexAnyASCII/16:8-4 46036372 26.06 ns/op BenchmarkIndexAnyASCII/16:8-4 46062471 26.05 ns/op BenchmarkIndexAnyASCII/16:8-4 46088019 26.06 ns/op BenchmarkIndexAnyASCII/16:8-4 46081576 26.07 ns/op BenchmarkIndexAnyASCII/16:8-4 46055702 26.06 ns/op BenchmarkIndexAnyASCII/16:8-4 46094038 26.05 ns/op BenchmarkIndexAnyASCII/16:8-4 46007744 26.07 ns/op BenchmarkIndexAnyASCII/16:8-4 45934288 26.05 ns/op BenchmarkIndexAnyASCII/16:16-4 30467911 39.44 ns/op BenchmarkIndexAnyASCII/16:16-4 30414088 39.42 ns/op BenchmarkIndexAnyASCII/16:16-4 30463704 39.42 ns/op BenchmarkIndexAnyASCII/16:16-4 30444837 39.39 ns/op BenchmarkIndexAnyASCII/16:16-4 30459922 39.46 ns/op BenchmarkIndexAnyASCII/16:16-4 30501057 39.45 ns/op BenchmarkIndexAnyASCII/16:16-4 30465784 39.40 ns/op BenchmarkIndexAnyASCII/16:16-4 30497298 39.37 ns/op BenchmarkIndexAnyASCII/16:16-4 30339630 39.39 ns/op BenchmarkIndexAnyASCII/16:16-4 30429444 39.44 ns/op BenchmarkIndexAnyASCII/16:32-4 18414418 65.05 ns/op BenchmarkIndexAnyASCII/16:32-4 18466086 65.07 ns/op BenchmarkIndexAnyASCII/16:32-4 18443536 65.08 ns/op BenchmarkIndexAnyASCII/16:32-4 18429670 65.01 ns/op BenchmarkIndexAnyASCII/16:32-4 18461613 65.07 ns/op BenchmarkIndexAnyASCII/16:32-4 18453710 65.07 ns/op BenchmarkIndexAnyASCII/16:32-4 18465244 65.01 ns/op BenchmarkIndexAnyASCII/16:32-4 18452918 65.04 ns/op BenchmarkIndexAnyASCII/16:32-4 18442864 65.07 ns/op BenchmarkIndexAnyASCII/16:32-4 18408106 65.04 ns/op BenchmarkIndexAnyASCII/16:64-4 9170564 131.0 ns/op BenchmarkIndexAnyASCII/16:64-4 9152395 130.8 ns/op BenchmarkIndexAnyASCII/16:64-4 9163111 131.0 ns/op BenchmarkIndexAnyASCII/16:64-4 9168897 131.0 ns/op BenchmarkIndexAnyASCII/16:64-4 9168517 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9144548 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9156120 131.0 ns/op BenchmarkIndexAnyASCII/16:64-4 9172281 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9166425 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9181978 131.0 ns/op BenchmarkIndexAnyASCII/256:1-4 134040002 8.953 ns/op BenchmarkIndexAnyASCII/256:1-4 134041377 8.952 ns/op BenchmarkIndexAnyASCII/256:1-4 134042557 8.952 ns/op BenchmarkIndexAnyASCII/256:1-4 134045739 8.952 ns/op BenchmarkIndexAnyASCII/256:1-4 134044560 8.953 ns/op BenchmarkIndexAnyASCII/256:1-4 134047416 8.953 ns/op BenchmarkIndexAnyASCII/256:1-4 134032563 8.952 ns/op BenchmarkIndexAnyASCII/256:1-4 134045062 8.952 ns/op BenchmarkIndexAnyASCII/256:1-4 134032492 8.952 ns/op BenchmarkIndexAnyASCII/256:1-4 134049267 8.952 ns/op BenchmarkIndexAnyASCII/256:2-4 7992520 150.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7999041 150.6 ns/op BenchmarkIndexAnyASCII/256:2-4 7948016 150.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7973322 151.0 ns/op BenchmarkIndexAnyASCII/256:2-4 7936822 151.5 ns/op BenchmarkIndexAnyASCII/256:2-4 7985443 150.6 ns/op BenchmarkIndexAnyASCII/256:2-4 7995586 150.7 ns/op BenchmarkIndexAnyASCII/256:2-4 7959786 150.7 ns/op BenchmarkIndexAnyASCII/256:2-4 7999088 150.9 ns/op BenchmarkIndexAnyASCII/256:2-4 7978737 150.7 ns/op BenchmarkIndexAnyASCII/256:4-4 7709068 154.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7816214 153.9 ns/op BenchmarkIndexAnyASCII/256:4-4 7737154 154.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7824313 153.8 ns/op BenchmarkIndexAnyASCII/256:4-4 7821772 154.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7810491 154.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7774435 154.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7747539 155.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7824086 155.7 ns/op BenchmarkIndexAnyASCII/256:4-4 7829450 154.6 ns/op BenchmarkIndexAnyASCII/256:8-4 7310750 163.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7317096 163.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7272884 163.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7387318 163.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7333348 163.6 ns/op BenchmarkIndexAnyASCII/256:8-4 7380804 163.4 ns/op BenchmarkIndexAnyASCII/256:8-4 7263440 164.0 ns/op BenchmarkIndexAnyASCII/256:8-4 7339718 165.3 ns/op BenchmarkIndexAnyASCII/256:8-4 7387114 164.7 ns/op BenchmarkIndexAnyASCII/256:8-4 7355702 165.0 ns/op BenchmarkIndexAnyASCII/256:16-4 7024382 170.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7044217 170.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7010526 170.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7040826 171.0 ns/op BenchmarkIndexAnyASCII/256:16-4 7045458 170.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7022535 170.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7039546 170.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7038523 171.0 ns/op BenchmarkIndexAnyASCII/256:16-4 7031209 170.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7009582 170.9 ns/op BenchmarkIndexAnyASCII/256:32-4 6057960 198.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6066506 198.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6058802 198.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6061831 197.7 ns/op BenchmarkIndexAnyASCII/256:32-4 6072252 198.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6070353 198.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6057955 198.1 ns/op BenchmarkIndexAnyASCII/256:32-4 6050809 198.0 ns/op BenchmarkIndexAnyASCII/256:32-4 6052124 197.9 ns/op BenchmarkIndexAnyASCII/256:32-4 6063610 198.2 ns/op BenchmarkIndexAnyASCII/256:64-4 4604954 260.6 ns/op BenchmarkIndexAnyASCII/256:64-4 4610546 260.1 ns/op BenchmarkIndexAnyASCII/256:64-4 4602415 260.8 ns/op BenchmarkIndexAnyASCII/256:64-4 4595968 260.8 ns/op BenchmarkIndexAnyASCII/256:64-4 4595281 260.9 ns/op BenchmarkIndexAnyASCII/256:64-4 4612006 261.0 ns/op BenchmarkIndexAnyASCII/256:64-4 4594824 260.3 ns/op BenchmarkIndexAnyASCII/256:64-4 4599225 260.9 ns/op BenchmarkIndexAnyASCII/256:64-4 4608307 260.7 ns/op BenchmarkIndexAnyASCII/256:64-4 4587648 260.6 ns/op BenchmarkIndexAnyUTF8/1:1-4 315954067 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 315952021 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 340223964 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 340253092 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 340255573 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 340291216 3.527 ns/op BenchmarkIndexAnyUTF8/1:1-4 315988257 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 315999075 3.527 ns/op BenchmarkIndexAnyUTF8/1:1-4 340288698 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 315942550 3.526 ns/op BenchmarkIndexAnyUTF8/1:2-4 139658797 8.410 ns/op BenchmarkIndexAnyUTF8/1:2-4 141725594 8.549 ns/op BenchmarkIndexAnyUTF8/1:2-4 130101156 8.410 ns/op BenchmarkIndexAnyUTF8/1:2-4 140919852 8.410 ns/op BenchmarkIndexAnyUTF8/1:2-4 140280944 9.223 ns/op BenchmarkIndexAnyUTF8/1:2-4 142693407 8.410 ns/op BenchmarkIndexAnyUTF8/1:2-4 141552284 8.410 ns/op BenchmarkIndexAnyUTF8/1:2-4 142682632 8.617 ns/op BenchmarkIndexAnyUTF8/1:2-4 142209009 8.953 ns/op BenchmarkIndexAnyUTF8/1:2-4 142702196 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 142691797 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 142697803 8.411 ns/op BenchmarkIndexAnyUTF8/1:4-4 142703488 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 142703472 8.640 ns/op BenchmarkIndexAnyUTF8/1:4-4 142688882 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 142699158 8.463 ns/op BenchmarkIndexAnyUTF8/1:4-4 142692342 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 142692874 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 140482520 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 141551458 8.477 ns/op BenchmarkIndexAnyUTF8/1:8-4 142684498 8.410 ns/op BenchmarkIndexAnyUTF8/1:8-4 138225939 8.755 ns/op BenchmarkIndexAnyUTF8/1:8-4 142685046 8.410 ns/op BenchmarkIndexAnyUTF8/1:8-4 142686336 8.410 ns/op BenchmarkIndexAnyUTF8/1:8-4 142691568 8.410 ns/op BenchmarkIndexAnyUTF8/1:8-4 142689309 8.409 ns/op BenchmarkIndexAnyUTF8/1:8-4 142672044 8.546 ns/op BenchmarkIndexAnyUTF8/1:8-4 140376498 8.410 ns/op BenchmarkIndexAnyUTF8/1:8-4 142677836 8.906 ns/op BenchmarkIndexAnyUTF8/1:8-4 142297159 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142688362 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142689993 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142680100 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142672842 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142681123 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142687437 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142690077 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142695170 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142695952 8.410 ns/op BenchmarkIndexAnyUTF8/1:16-4 142690411 8.410 ns/op BenchmarkIndexAnyUTF8/1:32-4 138205020 8.681 ns/op BenchmarkIndexAnyUTF8/1:32-4 138234904 8.682 ns/op BenchmarkIndexAnyUTF8/1:32-4 138229492 8.681 ns/op BenchmarkIndexAnyUTF8/1:32-4 138225712 8.682 ns/op BenchmarkIndexAnyUTF8/1:32-4 138244791 8.681 ns/op BenchmarkIndexAnyUTF8/1:32-4 138235483 8.682 ns/op BenchmarkIndexAnyUTF8/1:32-4 138230241 8.682 ns/op BenchmarkIndexAnyUTF8/1:32-4 138229716 8.681 ns/op BenchmarkIndexAnyUTF8/1:32-4 138234172 8.681 ns/op BenchmarkIndexAnyUTF8/1:32-4 138223858 8.682 ns/op BenchmarkIndexAnyUTF8/1:64-4 142684269 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142682416 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142685760 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142684807 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142691452 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142682677 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142671838 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142672018 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142694413 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142667841 8.410 ns/op BenchmarkIndexAnyUTF8/16:1-4 92871198 13.22 ns/op BenchmarkIndexAnyUTF8/16:1-4 89155476 13.21 ns/op BenchmarkIndexAnyUTF8/16:1-4 96057556 13.04 ns/op BenchmarkIndexAnyUTF8/16:1-4 91207234 13.17 ns/op BenchmarkIndexAnyUTF8/16:1-4 84810783 13.31 ns/op BenchmarkIndexAnyUTF8/16:1-4 82880970 13.17 ns/op BenchmarkIndexAnyUTF8/16:1-4 86402206 12.89 ns/op BenchmarkIndexAnyUTF8/16:1-4 86990239 13.13 ns/op BenchmarkIndexAnyUTF8/16:1-4 90667653 13.07 ns/op BenchmarkIndexAnyUTF8/16:1-4 96051190 13.41 ns/op BenchmarkIndexAnyUTF8/16:2-4 34343863 33.08 ns/op BenchmarkIndexAnyUTF8/16:2-4 33882549 33.67 ns/op BenchmarkIndexAnyUTF8/16:2-4 35542436 33.34 ns/op BenchmarkIndexAnyUTF8/16:2-4 35898870 33.52 ns/op BenchmarkIndexAnyUTF8/16:2-4 36173391 33.45 ns/op BenchmarkIndexAnyUTF8/16:2-4 36102456 34.39 ns/op BenchmarkIndexAnyUTF8/16:2-4 36676795 33.21 ns/op BenchmarkIndexAnyUTF8/16:2-4 36383883 33.28 ns/op BenchmarkIndexAnyUTF8/16:2-4 35942966 33.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 37160661 34.08 ns/op BenchmarkIndexAnyUTF8/16:4-4 37635531 31.82 ns/op BenchmarkIndexAnyUTF8/16:4-4 38143188 31.99 ns/op BenchmarkIndexAnyUTF8/16:4-4 37531029 31.99 ns/op BenchmarkIndexAnyUTF8/16:4-4 37639309 32.10 ns/op BenchmarkIndexAnyUTF8/16:4-4 36983658 32.23 ns/op BenchmarkIndexAnyUTF8/16:4-4 37751326 32.16 ns/op BenchmarkIndexAnyUTF8/16:4-4 38000042 31.93 ns/op BenchmarkIndexAnyUTF8/16:4-4 37529409 31.91 ns/op BenchmarkIndexAnyUTF8/16:4-4 37608037 32.22 ns/op BenchmarkIndexAnyUTF8/16:4-4 38339857 32.05 ns/op BenchmarkIndexAnyUTF8/16:8-4 13124401 95.75 ns/op BenchmarkIndexAnyUTF8/16:8-4 12387780 92.14 ns/op BenchmarkIndexAnyUTF8/16:8-4 12986937 91.42 ns/op BenchmarkIndexAnyUTF8/16:8-4 12519925 94.44 ns/op BenchmarkIndexAnyUTF8/16:8-4 12539677 93.17 ns/op BenchmarkIndexAnyUTF8/16:8-4 13124583 92.40 ns/op BenchmarkIndexAnyUTF8/16:8-4 13122500 91.62 ns/op BenchmarkIndexAnyUTF8/16:8-4 13123956 92.41 ns/op BenchmarkIndexAnyUTF8/16:8-4 13114112 93.92 ns/op BenchmarkIndexAnyUTF8/16:8-4 13011310 98.50 ns/op BenchmarkIndexAnyUTF8/16:16-4 13124182 91.64 ns/op BenchmarkIndexAnyUTF8/16:16-4 13119344 93.38 ns/op BenchmarkIndexAnyUTF8/16:16-4 13119950 91.43 ns/op BenchmarkIndexAnyUTF8/16:16-4 13125837 92.28 ns/op BenchmarkIndexAnyUTF8/16:16-4 12969253 92.39 ns/op BenchmarkIndexAnyUTF8/16:16-4 12681025 92.12 ns/op BenchmarkIndexAnyUTF8/16:16-4 13124596 93.12 ns/op BenchmarkIndexAnyUTF8/16:16-4 13031547 92.51 ns/op BenchmarkIndexAnyUTF8/16:16-4 13126917 91.69 ns/op BenchmarkIndexAnyUTF8/16:16-4 13124937 92.48 ns/op BenchmarkIndexAnyUTF8/16:32-4 12531458 95.77 ns/op BenchmarkIndexAnyUTF8/16:32-4 12527372 96.22 ns/op BenchmarkIndexAnyUTF8/16:32-4 12529653 96.57 ns/op BenchmarkIndexAnyUTF8/16:32-4 12531459 97.94 ns/op BenchmarkIndexAnyUTF8/16:32-4 12529243 96.29 ns/op BenchmarkIndexAnyUTF8/16:32-4 12506827 96.85 ns/op BenchmarkIndexAnyUTF8/16:32-4 12527060 96.53 ns/op BenchmarkIndexAnyUTF8/16:32-4 12523405 96.57 ns/op BenchmarkIndexAnyUTF8/16:32-4 12533762 97.24 ns/op BenchmarkIndexAnyUTF8/16:32-4 12390508 97.43 ns/op BenchmarkIndexAnyUTF8/16:64-4 11547354 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11221404 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11547283 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11549526 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11545587 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11548659 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11548891 104.7 ns/op BenchmarkIndexAnyUTF8/16:64-4 11548074 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11549884 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 10834586 103.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 8067272 151.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 8083645 149.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 7975034 150.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 8060353 149.2 ns/op BenchmarkIndexAnyUTF8/256:1-4 7960066 149.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 7913824 149.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 7685625 149.7 ns/op BenchmarkIndexAnyUTF8/256:1-4 7852959 148.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 8065622 149.3 ns/op BenchmarkIndexAnyUTF8/256:1-4 7991325 148.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 3922665 310.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 3940962 307.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 3922780 306.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 3936458 307.2 ns/op BenchmarkIndexAnyUTF8/256:2-4 3937238 309.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 3834308 310.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 3824920 305.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 3839725 308.7 ns/op BenchmarkIndexAnyUTF8/256:2-4 3890440 306.3 ns/op BenchmarkIndexAnyUTF8/256:2-4 3888516 309.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 7079254 167.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 7254061 168.3 ns/op BenchmarkIndexAnyUTF8/256:4-4 7255237 166.2 ns/op BenchmarkIndexAnyUTF8/256:4-4 7217554 209.1 ns/op BenchmarkIndexAnyUTF8/256:4-4 7273747 165.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 7268725 166.1 ns/op BenchmarkIndexAnyUTF8/256:4-4 7195202 167.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 7096305 166.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 7246626 166.0 ns/op BenchmarkIndexAnyUTF8/256:4-4 7109006 165.9 ns/op BenchmarkIndexAnyUTF8/256:8-4 3587890 336.1 ns/op BenchmarkIndexAnyUTF8/256:8-4 3577291 337.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 3563798 335.4 ns/op BenchmarkIndexAnyUTF8/256:8-4 3564367 336.3 ns/op BenchmarkIndexAnyUTF8/256:8-4 3579440 337.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 3517803 334.3 ns/op BenchmarkIndexAnyUTF8/256:8-4 3619591 337.2 ns/op BenchmarkIndexAnyUTF8/256:8-4 3598023 333.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 3584263 339.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 3583312 338.4 ns/op BenchmarkIndexAnyUTF8/256:16-4 11454172 104.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 11436111 104.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 11481380 105.2 ns/op BenchmarkIndexAnyUTF8/256:16-4 11457018 104.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 11479380 104.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 11480437 104.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 11476282 104.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11479056 104.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 11473237 104.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 11452381 104.5 ns/op BenchmarkIndexAnyUTF8/256:32-4 2349312 513.4 ns/op BenchmarkIndexAnyUTF8/256:32-4 2341356 512.7 ns/op BenchmarkIndexAnyUTF8/256:32-4 2346567 516.2 ns/op BenchmarkIndexAnyUTF8/256:32-4 2339056 512.0 ns/op BenchmarkIndexAnyUTF8/256:32-4 2340025 512.1 ns/op BenchmarkIndexAnyUTF8/256:32-4 2343748 513.2 ns/op BenchmarkIndexAnyUTF8/256:32-4 2315292 513.6 ns/op BenchmarkIndexAnyUTF8/256:32-4 2340344 514.8 ns/op BenchmarkIndexAnyUTF8/256:32-4 2342698 515.0 ns/op BenchmarkIndexAnyUTF8/256:32-4 2312304 512.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 1825957 589.4 ns/op BenchmarkIndexAnyUTF8/256:64-4 2032995 590.3 ns/op BenchmarkIndexAnyUTF8/256:64-4 2036164 590.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 2030325 589.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 2033217 590.4 ns/op BenchmarkIndexAnyUTF8/256:64-4 2034016 590.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 2026678 590.2 ns/op BenchmarkIndexAnyUTF8/256:64-4 2030096 590.9 ns/op BenchmarkIndexAnyUTF8/256:64-4 2034758 590.0 ns/op BenchmarkIndexAnyUTF8/256:64-4 2032958 590.4 ns/op BenchmarkLastIndexAnyASCII/1:1-4 175442662 6.681 ns/op BenchmarkLastIndexAnyASCII/1:1-4 177043226 6.507 ns/op BenchmarkLastIndexAnyASCII/1:1-4 182258247 6.507 ns/op BenchmarkLastIndexAnyASCII/1:1-4 173263034 6.565 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184553229 6.507 ns/op BenchmarkLastIndexAnyASCII/1:1-4 176788653 6.766 ns/op BenchmarkLastIndexAnyASCII/1:1-4 177143979 6.506 ns/op BenchmarkLastIndexAnyASCII/1:1-4 172363384 7.053 ns/op BenchmarkLastIndexAnyASCII/1:1-4 179790835 6.503 ns/op BenchmarkLastIndexAnyASCII/1:1-4 177591412 6.576 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184559913 6.651 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184541564 6.550 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184535482 6.610 ns/op BenchmarkLastIndexAnyASCII/1:2-4 177127689 6.546 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184506517 6.815 ns/op BenchmarkLastIndexAnyASCII/1:2-4 177119617 6.787 ns/op BenchmarkLastIndexAnyASCII/1:2-4 182115272 6.508 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184551121 6.677 ns/op BenchmarkLastIndexAnyASCII/1:2-4 180661567 6.555 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184500741 6.554 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184472875 6.619 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184520629 6.688 ns/op BenchmarkLastIndexAnyASCII/1:4-4 180547815 6.507 ns/op BenchmarkLastIndexAnyASCII/1:4-4 180261070 7.053 ns/op BenchmarkLastIndexAnyASCII/1:4-4 182950854 6.508 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184731043 6.782 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184434374 6.827 ns/op BenchmarkLastIndexAnyASCII/1:4-4 177005878 6.639 ns/op BenchmarkLastIndexAnyASCII/1:4-4 171403226 7.052 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184502845 6.745 ns/op BenchmarkLastIndexAnyASCII/1:8-4 177175653 6.687 ns/op BenchmarkLastIndexAnyASCII/1:8-4 172530216 6.540 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184540723 6.507 ns/op BenchmarkLastIndexAnyASCII/1:8-4 177070382 6.754 ns/op BenchmarkLastIndexAnyASCII/1:8-4 181148980 7.052 ns/op BenchmarkLastIndexAnyASCII/1:8-4 177334442 6.777 ns/op BenchmarkLastIndexAnyASCII/1:8-4 176452996 6.773 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184554426 6.689 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184429160 6.506 ns/op BenchmarkLastIndexAnyASCII/1:8-4 176956573 6.778 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184318813 6.712 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184311676 6.704 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184309482 6.512 ns/op BenchmarkLastIndexAnyASCII/1:16-4 177558500 6.781 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184318300 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 177080778 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184320007 6.665 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184320951 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184299762 6.511 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184272427 6.511 ns/op BenchmarkLastIndexAnyASCII/1:32-4 170290670 6.903 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176924444 6.782 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176956198 7.053 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176928138 7.054 ns/op BenchmarkLastIndexAnyASCII/1:32-4 170314399 7.053 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176936168 6.782 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176937981 6.782 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176944108 7.053 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176955014 6.782 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176942491 6.782 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163829970 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163829132 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163836537 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163848884 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163842699 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163805487 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163857523 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163846513 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163849647 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163857052 7.325 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66572425 17.98 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66718113 18.02 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66634126 18.00 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66741042 18.01 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66516154 18.01 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66501296 17.99 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66617953 17.99 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66776287 18.00 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66779854 18.03 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66409399 17.99 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65798088 18.25 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65762137 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65766825 18.25 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65739008 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65750610 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65765812 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65827828 18.25 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65759041 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65741569 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65687516 18.24 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58940670 20.35 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58971196 20.35 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59014934 20.36 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58853400 20.37 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58924202 20.35 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58837644 20.36 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58867056 20.34 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59098318 20.38 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58757179 20.34 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59025529 20.34 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46175694 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46162831 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46283637 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46214797 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46272572 25.93 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46207272 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46173346 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46278657 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46210792 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46194961 25.95 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30913040 38.83 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30885201 38.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30910810 38.83 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30893503 38.85 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30771093 38.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30874306 38.85 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30953245 38.84 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30935458 38.84 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30848647 38.81 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30918488 38.83 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18312315 65.54 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18310938 65.56 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18299478 65.50 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18270132 65.54 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18327144 65.55 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18294232 65.53 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18304923 65.54 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18293235 65.55 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18293617 65.55 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18303450 65.54 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9199348 130.7 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9214261 130.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9185974 130.5 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9210092 130.7 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9187172 130.5 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9189987 130.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9211300 130.7 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9209406 130.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9195408 130.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9195297 130.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8291468 143.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8428812 143.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8366362 142.8 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8358624 143.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8300066 143.7 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8347934 144.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8452464 143.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8401910 143.4 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8391550 143.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8381014 143.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8345782 144.7 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8308922 144.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8292949 144.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8330064 145.0 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8256206 145.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8267698 144.7 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8359192 145.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8320196 144.6 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8314983 144.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8302953 145.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8011821 148.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8042101 149.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8088033 148.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8087426 148.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8127985 149.3 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8103658 149.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8086692 148.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8056303 148.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8048646 148.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8079820 148.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7623950 156.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7676973 156.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7666262 156.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7683570 156.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7679433 156.6 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7654898 155.9 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7638787 156.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7680105 156.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7676030 156.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7708935 156.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7284388 164.8 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7287771 164.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7318786 164.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7315225 164.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7297905 164.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7224426 164.6 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7310823 164.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7304328 164.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7320228 164.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7273665 164.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6237028 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6248502 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6251103 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6249932 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6253628 192.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6259419 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6253046 192.1 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6244015 192.1 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6254284 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6255576 192.0 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4664680 255.6 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4678052 256.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4667808 255.7 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4689862 256.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4695217 256.0 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4679710 256.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4693371 255.4 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4689316 255.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4700322 255.7 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4679185 256.0 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 174423777 7.053 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 176650452 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 176249043 6.730 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 177130162 6.535 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184547673 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 173834205 6.652 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184512518 6.727 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184498255 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184455022 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 177160232 6.502 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184773933 6.522 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 173554864 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184524390 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 179698938 6.679 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 180603260 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184441035 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 170524310 6.708 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184485444 6.707 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184491363 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 177132768 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 184545882 6.635 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 184684957 6.893 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 171405688 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 182619688 6.655 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 179003190 7.054 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 182006160 6.618 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 170483079 7.053 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 178826973 7.053 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 184056478 6.751 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 184491087 6.756 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184310095 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 179068678 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 177044332 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184571271 6.543 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184036057 6.763 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 174135394 6.591 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184700899 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 172684897 7.053 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 177095282 6.666 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 178257588 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184317986 6.511 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 176961613 6.511 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 177080899 6.511 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 178171800 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184301076 6.732 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184322892 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184336033 6.511 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 183147022 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184327096 6.511 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184321442 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176957530 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176931469 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170280052 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176939340 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170260662 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176943411 6.909 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176945145 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176947716 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170273599 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170271436 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163840460 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163838791 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163838721 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163845925 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163833742 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163848021 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163825489 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163843932 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163812361 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163826889 7.324 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30074815 39.87 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30086125 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30084715 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30086473 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30072199 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30106408 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30087746 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30086577 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30305827 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30087482 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10884992 112.2 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10663431 110.9 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10673370 113.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10492017 114.7 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10144862 113.5 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10949274 110.8 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10443548 113.7 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10765371 113.6 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10858146 116.4 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10872711 113.2 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10676540 109.6 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10748481 110.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10858576 109.3 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10854336 110.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10950189 112.6 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10853402 112.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10532740 109.3 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10845483 109.6 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10949377 112.3 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10842326 111.4 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10837942 109.6 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10858636 112.7 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10872087 112.9 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10764082 111.7 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10607034 109.7 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10857038 114.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10949976 114.0 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10888063 109.3 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10705803 109.4 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 10861928 115.5 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 10950824 109.1 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11088564 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 10965255 108.8 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 10950172 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11087443 116.6 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11087650 109.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11083677 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11086662 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11085302 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11083821 109.2 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10145775 118.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10370242 116.7 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10139860 115.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10531567 114.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10532594 119.8 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10226670 114.4 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10116170 115.8 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10472106 114.2 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10189028 114.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10532634 116.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9893132 124.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9511435 123.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9848186 122.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9503950 124.9 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9798744 122.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9550323 121.3 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9637609 121.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9787399 121.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9722692 121.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9807582 123.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2124663 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2125752 564.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2126017 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2125592 564.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2124858 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2125744 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2125982 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2125555 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2125605 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2124546 564.5 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 714877 1677 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 715261 1677 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 714638 1677 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 715021 1711 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 714595 1677 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 715062 1733 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 714315 1677 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 715214 1735 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 714645 1677 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 713696 1737 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 714716 1677 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 715683 1696 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 714768 1677 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 714954 1745 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 714738 1677 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 715456 1677 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 715377 1677 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 714394 1677 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 715489 1677 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 714771 1677 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 715222 1736 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 714877 1677 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 713823 1677 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 715664 1677 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 715155 1734 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 713432 1677 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 715198 1677 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 714313 1709 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 714507 1694 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 714418 1741 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715484 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714140 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715002 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 713710 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715694 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 713919 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715500 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715050 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715122 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714637 1677 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686745 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686266 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686584 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 685996 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 687285 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686431 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686744 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 685944 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 687126 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686014 1747 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635881 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 636117 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635044 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635209 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635911 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635730 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635251 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635664 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635548 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635736 1886 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22468 53405 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22464 53401 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22470 53404 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22466 53402 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22466 60926 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22465 53408 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22466 53405 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22468 53406 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22466 54236 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22465 53405 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19268 62335 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19268 62362 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19267 62272 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19264 62275 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19225 62280 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19267 62278 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19267 62279 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19268 62279 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19268 62279 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19267 62275 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14773 81230 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14769 81236 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14770 81251 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14768 81240 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14770 81256 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14768 81248 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14769 81246 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14769 81271 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14769 81243 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14763 81256 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29527 40628 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29534 40618 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29530 40622 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29522 40628 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29527 40632 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29529 40633 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29538 40631 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29528 40636 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29523 40625 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29529 40629 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59569 20141 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59142 20280 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59150 20284 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59155 20283 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59041 20325 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59020 20322 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59138 20282 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59013 20322 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59115 20282 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59154 20289 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113266 10587 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113304 10596 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113310 10589 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113204 10604 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113202 10595 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113214 10590 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113274 10588 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113190 10595 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113278 10591 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113323 10611 ns/op BenchmarkIndexByte_Bytes/10-4 279728594 4.327 ns/op 2310.98 MB/s BenchmarkIndexByte_Bytes/10-4 294868628 4.236 ns/op 2360.68 MB/s BenchmarkIndexByte_Bytes/10-4 274860733 4.293 ns/op 2329.48 MB/s BenchmarkIndexByte_Bytes/10-4 260228416 4.218 ns/op 2370.94 MB/s BenchmarkIndexByte_Bytes/10-4 268432438 4.294 ns/op 2328.64 MB/s BenchmarkIndexByte_Bytes/10-4 294911312 4.083 ns/op 2449.21 MB/s BenchmarkIndexByte_Bytes/10-4 294872686 4.069 ns/op 2457.72 MB/s BenchmarkIndexByte_Bytes/10-4 294912805 4.339 ns/op 2304.71 MB/s BenchmarkIndexByte_Bytes/10-4 294929781 4.069 ns/op 2457.73 MB/s BenchmarkIndexByte_Bytes/10-4 265531886 4.069 ns/op 2457.82 MB/s BenchmarkIndexByte_Bytes/32-4 260242400 4.612 ns/op 6937.89 MB/s BenchmarkIndexByte_Bytes/32-4 260198278 4.611 ns/op 6939.85 MB/s BenchmarkIndexByte_Bytes/32-4 260211741 4.612 ns/op 6938.70 MB/s BenchmarkIndexByte_Bytes/32-4 260208519 4.612 ns/op 6939.15 MB/s BenchmarkIndexByte_Bytes/32-4 260256694 4.613 ns/op 6936.57 MB/s BenchmarkIndexByte_Bytes/32-4 260180330 4.612 ns/op 6939.17 MB/s BenchmarkIndexByte_Bytes/32-4 260119849 4.611 ns/op 6939.77 MB/s BenchmarkIndexByte_Bytes/32-4 260204082 4.613 ns/op 6937.34 MB/s BenchmarkIndexByte_Bytes/32-4 260191472 4.611 ns/op 6939.22 MB/s BenchmarkIndexByte_Bytes/32-4 260222025 4.612 ns/op 6937.91 MB/s BenchmarkIndexByte_Bytes/4K-4 23776062 50.51 ns/op 81098.75 MB/s BenchmarkIndexByte_Bytes/4K-4 23779728 50.54 ns/op 81047.45 MB/s BenchmarkIndexByte_Bytes/4K-4 23020003 50.52 ns/op 81074.77 MB/s BenchmarkIndexByte_Bytes/4K-4 23777857 50.51 ns/op 81085.80 MB/s BenchmarkIndexByte_Bytes/4K-4 23771526 50.51 ns/op 81093.74 MB/s BenchmarkIndexByte_Bytes/4K-4 22881354 50.53 ns/op 81054.75 MB/s BenchmarkIndexByte_Bytes/4K-4 22875866 50.53 ns/op 81056.37 MB/s BenchmarkIndexByte_Bytes/4K-4 23779086 50.54 ns/op 81040.52 MB/s BenchmarkIndexByte_Bytes/4K-4 23768426 50.53 ns/op 81065.77 MB/s BenchmarkIndexByte_Bytes/4K-4 23148818 50.51 ns/op 81096.75 MB/s BenchmarkIndexByte_Bytes/4M-4 24847 48338 ns/op 86770.55 MB/s BenchmarkIndexByte_Bytes/4M-4 24831 48285 ns/op 86865.00 MB/s BenchmarkIndexByte_Bytes/4M-4 24819 48338 ns/op 86771.22 MB/s BenchmarkIndexByte_Bytes/4M-4 24823 48314 ns/op 86814.31 MB/s BenchmarkIndexByte_Bytes/4M-4 24849 48298 ns/op 86841.88 MB/s BenchmarkIndexByte_Bytes/4M-4 24837 48321 ns/op 86800.66 MB/s BenchmarkIndexByte_Bytes/4M-4 24835 48328 ns/op 86788.08 MB/s BenchmarkIndexByte_Bytes/4M-4 24840 48335 ns/op 86776.25 MB/s BenchmarkIndexByte_Bytes/4M-4 24814 48302 ns/op 86835.43 MB/s BenchmarkIndexByte_Bytes/4M-4 24841 48290 ns/op 86857.27 MB/s BenchmarkIndexByte_Bytes/64M-4 745 1400616 ns/op 47913.82 MB/s BenchmarkIndexByte_Bytes/64M-4 837 1395019 ns/op 48106.07 MB/s BenchmarkIndexByte_Bytes/64M-4 835 1394506 ns/op 48123.75 MB/s BenchmarkIndexByte_Bytes/64M-4 829 1399927 ns/op 47937.41 MB/s BenchmarkIndexByte_Bytes/64M-4 836 1400209 ns/op 47927.74 MB/s BenchmarkIndexByte_Bytes/64M-4 834 1403551 ns/op 47813.64 MB/s BenchmarkIndexByte_Bytes/64M-4 831 1403746 ns/op 47807.00 MB/s BenchmarkIndexByte_Bytes/64M-4 832 1403653 ns/op 47810.15 MB/s BenchmarkIndexByte_Bytes/64M-4 834 1400738 ns/op 47909.65 MB/s BenchmarkIndexByte_Bytes/64M-4 832 1403342 ns/op 47820.75 MB/s BenchmarkIndexRune_Bytes/10-4 98060550 12.21 ns/op 819.19 MB/s BenchmarkIndexRune_Bytes/10-4 98199848 12.21 ns/op 819.04 MB/s BenchmarkIndexRune_Bytes/10-4 98198652 12.21 ns/op 819.16 MB/s BenchmarkIndexRune_Bytes/10-4 98236024 12.21 ns/op 819.22 MB/s BenchmarkIndexRune_Bytes/10-4 98277626 12.21 ns/op 819.22 MB/s BenchmarkIndexRune_Bytes/10-4 98286553 12.21 ns/op 819.20 MB/s BenchmarkIndexRune_Bytes/10-4 98207001 12.21 ns/op 819.18 MB/s BenchmarkIndexRune_Bytes/10-4 98237641 12.21 ns/op 819.22 MB/s BenchmarkIndexRune_Bytes/10-4 98111050 12.21 ns/op 819.09 MB/s BenchmarkIndexRune_Bytes/10-4 98220585 12.21 ns/op 819.13 MB/s BenchmarkIndexRune_Bytes/32-4 92053002 13.02 ns/op 2457.66 MB/s BenchmarkIndexRune_Bytes/32-4 92145458 13.02 ns/op 2457.45 MB/s BenchmarkIndexRune_Bytes/32-4 92037045 13.03 ns/op 2456.24 MB/s BenchmarkIndexRune_Bytes/32-4 92061130 13.02 ns/op 2457.40 MB/s BenchmarkIndexRune_Bytes/32-4 92100055 13.02 ns/op 2457.56 MB/s BenchmarkIndexRune_Bytes/32-4 92231934 13.02 ns/op 2457.29 MB/s BenchmarkIndexRune_Bytes/32-4 92086690 13.02 ns/op 2457.58 MB/s BenchmarkIndexRune_Bytes/32-4 92155854 13.02 ns/op 2457.63 MB/s BenchmarkIndexRune_Bytes/32-4 91998513 13.02 ns/op 2457.41 MB/s BenchmarkIndexRune_Bytes/32-4 91787967 13.02 ns/op 2457.71 MB/s BenchmarkIndexRune_Bytes/4K-4 14788399 81.11 ns/op 50496.56 MB/s BenchmarkIndexRune_Bytes/4K-4 14791180 81.12 ns/op 50495.51 MB/s BenchmarkIndexRune_Bytes/4K-4 14784924 81.12 ns/op 50490.21 MB/s BenchmarkIndexRune_Bytes/4K-4 14792838 81.12 ns/op 50496.17 MB/s BenchmarkIndexRune_Bytes/4K-4 14792156 81.11 ns/op 50498.26 MB/s BenchmarkIndexRune_Bytes/4K-4 14790216 81.12 ns/op 50494.29 MB/s BenchmarkIndexRune_Bytes/4K-4 14793786 81.11 ns/op 50498.25 MB/s BenchmarkIndexRune_Bytes/4K-4 14792458 81.11 ns/op 50496.72 MB/s BenchmarkIndexRune_Bytes/4K-4 14793766 81.12 ns/op 50494.53 MB/s BenchmarkIndexRune_Bytes/4K-4 14792751 81.11 ns/op 50498.47 MB/s BenchmarkIndexRune_Bytes/4M-4 16702 71883 ns/op 58349.11 MB/s BenchmarkIndexRune_Bytes/4M-4 16683 71841 ns/op 58383.09 MB/s BenchmarkIndexRune_Bytes/4M-4 16676 71909 ns/op 58328.05 MB/s BenchmarkIndexRune_Bytes/4M-4 16690 71815 ns/op 58404.37 MB/s BenchmarkIndexRune_Bytes/4M-4 16681 71848 ns/op 58377.75 MB/s BenchmarkIndexRune_Bytes/4M-4 16702 71913 ns/op 58324.64 MB/s BenchmarkIndexRune_Bytes/4M-4 16689 71918 ns/op 58320.28 MB/s BenchmarkIndexRune_Bytes/4M-4 16674 71923 ns/op 58316.45 MB/s BenchmarkIndexRune_Bytes/4M-4 16701 71840 ns/op 58384.02 MB/s BenchmarkIndexRune_Bytes/4M-4 16702 71891 ns/op 58342.23 MB/s BenchmarkIndexRune_Bytes/64M-4 763 1480783 ns/op 45319.86 MB/s BenchmarkIndexRune_Bytes/64M-4 793 1478801 ns/op 45380.59 MB/s BenchmarkIndexRune_Bytes/64M-4 794 1481713 ns/op 45291.40 MB/s BenchmarkIndexRune_Bytes/64M-4 792 1480117 ns/op 45340.25 MB/s BenchmarkIndexRune_Bytes/64M-4 793 1479567 ns/op 45357.10 MB/s BenchmarkIndexRune_Bytes/64M-4 795 1475272 ns/op 45489.13 MB/s BenchmarkIndexRune_Bytes/64M-4 793 1479584 ns/op 45356.58 MB/s BenchmarkIndexRune_Bytes/64M-4 795 1479323 ns/op 45364.59 MB/s BenchmarkIndexRune_Bytes/64M-4 796 1481771 ns/op 45289.64 MB/s BenchmarkIndexRune_Bytes/64M-4 793 1479992 ns/op 45344.07 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184313931 6.239 ns/op 1602.89 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184321819 6.239 ns/op 1602.76 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192329278 6.239 ns/op 1602.79 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192327422 6.239 ns/op 1602.73 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184332296 6.239 ns/op 1602.79 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192311817 6.239 ns/op 1602.90 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 177123039 6.239 ns/op 1602.71 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184320093 6.239 ns/op 1602.79 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192347350 6.239 ns/op 1602.76 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192357541 6.240 ns/op 1602.65 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176909376 6.783 ns/op 4717.49 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176857333 6.784 ns/op 4716.75 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176873150 6.782 ns/op 4718.03 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176892933 6.784 ns/op 4716.95 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176853072 6.784 ns/op 4717.27 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176857719 6.784 ns/op 4716.69 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176879652 6.783 ns/op 4717.39 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176894722 6.783 ns/op 4717.37 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176907420 6.784 ns/op 4716.73 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176893904 6.784 ns/op 4717.08 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22595674 53.06 ns/op 77197.98 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22611228 53.07 ns/op 77181.47 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22633490 53.07 ns/op 77183.16 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22617117 53.06 ns/op 77191.94 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22601756 53.07 ns/op 77183.27 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22617042 53.08 ns/op 77170.91 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22609438 53.06 ns/op 77196.13 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22648078 53.07 ns/op 77186.99 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22576425 53.07 ns/op 77181.62 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22614054 53.06 ns/op 77191.17 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24962 48056 ns/op 87279.04 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24969 48063 ns/op 87265.93 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24948 48052 ns/op 87286.68 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24966 48070 ns/op 87254.74 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24967 51357 ns/op 81669.87 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24958 48077 ns/op 87240.98 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24954 48071 ns/op 87252.71 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24961 48050 ns/op 87289.97 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24967 48065 ns/op 87263.21 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24961 48069 ns/op 87255.29 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 793 1417118 ns/op 47355.89 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 826 1420131 ns/op 47255.40 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 825 1418620 ns/op 47305.74 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 822 1417919 ns/op 47329.11 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 828 1409910 ns/op 47597.98 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 825 1410890 ns/op 47564.90 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 824 1410580 ns/op 47575.38 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 823 1405379 ns/op 47751.45 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 830 1411789 ns/op 47534.61 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 829 1410430 ns/op 47580.41 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341269123 3.252 ns/op 3075.46 MB/s BenchmarkIndexNonASCII_Bytes/10-4 370208232 3.251 ns/op 3075.89 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340309248 3.526 ns/op 2835.68 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341513665 3.526 ns/op 2835.79 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341702607 3.250 ns/op 3076.79 MB/s BenchmarkIndexNonASCII_Bytes/10-4 370130097 3.252 ns/op 3074.77 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340296927 3.253 ns/op 3074.24 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341300468 3.252 ns/op 3075.28 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341817626 3.252 ns/op 3074.67 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340215094 3.252 ns/op 3075.34 MB/s BenchmarkIndexNonASCII_Bytes/32-4 334510754 3.526 ns/op 9074.24 MB/s BenchmarkIndexNonASCII_Bytes/32-4 315910550 3.798 ns/op 8425.71 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340270441 3.530 ns/op 9066.14 MB/s BenchmarkIndexNonASCII_Bytes/32-4 335365471 3.527 ns/op 9073.86 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340062368 3.527 ns/op 9073.02 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340304937 3.531 ns/op 9063.44 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340029588 3.527 ns/op 9073.38 MB/s BenchmarkIndexNonASCII_Bytes/32-4 339964708 3.530 ns/op 9065.83 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340004760 3.529 ns/op 9066.87 MB/s BenchmarkIndexNonASCII_Bytes/32-4 322304050 3.798 ns/op 8425.24 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 23622730 49.64 ns/op 82511.39 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22304264 49.65 ns/op 82501.48 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24159577 49.64 ns/op 82505.91 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24164960 49.65 ns/op 82504.71 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22160132 49.64 ns/op 82509.12 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22386870 55.19 ns/op 74215.72 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24167394 49.70 ns/op 82422.09 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24157546 55.27 ns/op 74103.68 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22497292 49.65 ns/op 82498.55 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24163221 49.69 ns/op 82422.83 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24934 48125 ns/op 87155.21 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24943 48122 ns/op 87160.54 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24950 48090 ns/op 87217.56 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24936 48105 ns/op 87191.12 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24934 48097 ns/op 87205.57 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24939 48099 ns/op 87201.05 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24945 48134 ns/op 87138.70 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24955 48087 ns/op 87222.53 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24933 48133 ns/op 87140.73 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24916 48185 ns/op 87046.18 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 780 1423386 ns/op 47147.34 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 823 1409841 ns/op 47600.31 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 824 1415899 ns/op 47396.63 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 831 1408921 ns/op 47631.38 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 826 1414235 ns/op 47452.40 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 825 1406652 ns/op 47708.22 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 824 1412341 ns/op 47516.04 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 824 1412876 ns/op 47498.04 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 829 1407145 ns/op 47691.52 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 831 1408047 ns/op 47660.94 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2105.917s strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/strcase.10.1706938813.2b8edcd9.txt 0000664 0000000 0000000 00000276671 14720254634 0027325 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 BenchmarkIndexRune-4 96088524 12.48 ns/op BenchmarkIndexRune-4 94061452 12.48 ns/op BenchmarkIndexRune-4 96101282 12.48 ns/op BenchmarkIndexRune-4 95986669 12.48 ns/op BenchmarkIndexRune-4 95974777 12.48 ns/op BenchmarkIndexRune-4 96120519 12.48 ns/op BenchmarkIndexRune-4 94093543 12.48 ns/op BenchmarkIndexRune-4 95933797 12.48 ns/op BenchmarkIndexRune-4 94118259 12.75 ns/op BenchmarkIndexRune-4 94121433 12.48 ns/op BenchmarkIndexRuneLongString-4 92172156 13.02 ns/op BenchmarkIndexRuneLongString-4 92003958 13.02 ns/op BenchmarkIndexRuneLongString-4 91924317 13.02 ns/op BenchmarkIndexRuneLongString-4 92104233 13.02 ns/op BenchmarkIndexRuneLongString-4 92116677 13.02 ns/op BenchmarkIndexRuneLongString-4 92016170 13.02 ns/op BenchmarkIndexRuneLongString-4 92040654 13.02 ns/op BenchmarkIndexRuneLongString-4 91879280 13.02 ns/op BenchmarkIndexRuneLongString-4 92199492 13.02 ns/op BenchmarkIndexRuneLongString-4 92173635 13.02 ns/op BenchmarkIndexRuneFastPath-4 201341301 5.698 ns/op BenchmarkIndexRuneFastPath-4 201050005 5.697 ns/op BenchmarkIndexRuneFastPath-4 210619857 5.698 ns/op BenchmarkIndexRuneFastPath-4 201618885 5.698 ns/op BenchmarkIndexRuneFastPath-4 201361860 5.698 ns/op BenchmarkIndexRuneFastPath-4 210580854 5.698 ns/op BenchmarkIndexRuneFastPath-4 201240176 5.697 ns/op BenchmarkIndexRuneFastPath-4 201320920 5.697 ns/op BenchmarkIndexRuneFastPath-4 201193216 5.697 ns/op BenchmarkIndexRuneFastPath-4 201040636 5.968 ns/op BenchmarkIndex-4 201044223 5.970 ns/op BenchmarkIndex-4 192309433 5.969 ns/op BenchmarkIndex-4 192301635 5.969 ns/op BenchmarkIndex-4 192268929 5.969 ns/op BenchmarkIndex-4 201055496 6.240 ns/op BenchmarkIndex-4 201050863 6.240 ns/op BenchmarkIndex-4 192295717 5.968 ns/op BenchmarkIndex-4 201013857 6.240 ns/op BenchmarkIndex-4 201030088 5.969 ns/op BenchmarkIndex-4 192315276 6.240 ns/op BenchmarkLastIndex-4 192258526 5.968 ns/op BenchmarkLastIndex-4 192317724 6.003 ns/op BenchmarkLastIndex-4 201047239 5.969 ns/op BenchmarkLastIndex-4 201042004 5.968 ns/op BenchmarkLastIndex-4 201058280 5.968 ns/op BenchmarkLastIndex-4 199116919 5.968 ns/op BenchmarkLastIndex-4 201060888 5.969 ns/op BenchmarkLastIndex-4 200718202 5.968 ns/op BenchmarkLastIndex-4 200884400 5.968 ns/op BenchmarkLastIndex-4 192299529 5.969 ns/op BenchmarkIndexByte-4 276433692 4.340 ns/op BenchmarkIndexByte-4 276463339 4.341 ns/op BenchmarkIndexByte-4 276422322 4.341 ns/op BenchmarkIndexByte-4 276446407 4.341 ns/op BenchmarkIndexByte-4 276422978 4.341 ns/op BenchmarkIndexByte-4 276436886 4.341 ns/op BenchmarkIndexByte-4 276435000 4.341 ns/op BenchmarkIndexByte-4 276457386 4.341 ns/op BenchmarkIndexByte-4 276427531 4.341 ns/op BenchmarkIndexByte-4 276440407 4.341 ns/op BenchmarkEqualFold/ASCII-4 142651701 8.519 ns/op BenchmarkEqualFold/ASCII-4 141476660 8.468 ns/op BenchmarkEqualFold/ASCII-4 141570470 8.430 ns/op BenchmarkEqualFold/ASCII-4 141762130 8.421 ns/op BenchmarkEqualFold/ASCII-4 132713509 8.396 ns/op BenchmarkEqualFold/ASCII-4 133494217 8.392 ns/op BenchmarkEqualFold/ASCII-4 145792119 8.480 ns/op BenchmarkEqualFold/ASCII-4 142200944 8.507 ns/op BenchmarkEqualFold/ASCII-4 142425534 8.482 ns/op BenchmarkEqualFold/ASCII-4 142620531 9.020 ns/op BenchmarkEqualFold/UnicodePrefix-4 35238642 34.07 ns/op BenchmarkEqualFold/UnicodePrefix-4 35394926 34.13 ns/op BenchmarkEqualFold/UnicodePrefix-4 35346820 34.06 ns/op BenchmarkEqualFold/UnicodePrefix-4 35369427 34.08 ns/op BenchmarkEqualFold/UnicodePrefix-4 35372118 34.13 ns/op BenchmarkEqualFold/UnicodePrefix-4 35382006 34.12 ns/op BenchmarkEqualFold/UnicodePrefix-4 35379638 34.11 ns/op BenchmarkEqualFold/UnicodePrefix-4 34944592 34.07 ns/op BenchmarkEqualFold/UnicodePrefix-4 35348996 34.00 ns/op BenchmarkEqualFold/UnicodePrefix-4 35335684 34.10 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45239138 26.49 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45113469 26.51 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45218937 26.50 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45239980 26.53 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45250729 26.51 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45269232 26.54 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45155322 26.52 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45214564 26.50 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45342459 26.46 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45266056 26.51 ns/op BenchmarkIndexHard1-4 14706 81595 ns/op BenchmarkIndexHard1-4 14704 81596 ns/op BenchmarkIndexHard1-4 14704 81592 ns/op BenchmarkIndexHard1-4 14704 81589 ns/op BenchmarkIndexHard1-4 14703 81608 ns/op BenchmarkIndexHard1-4 14704 81602 ns/op BenchmarkIndexHard1-4 14703 81600 ns/op BenchmarkIndexHard1-4 14707 81599 ns/op BenchmarkIndexHard1-4 14704 81588 ns/op BenchmarkIndexHard1-4 14706 81586 ns/op BenchmarkIndexHard2-4 480 2464863 ns/op BenchmarkIndexHard2-4 480 2469414 ns/op BenchmarkIndexHard2-4 474 2469183 ns/op BenchmarkIndexHard2-4 477 2516294 ns/op BenchmarkIndexHard2-4 481 2466479 ns/op BenchmarkIndexHard2-4 481 2467493 ns/op BenchmarkIndexHard2-4 481 2492801 ns/op BenchmarkIndexHard2-4 482 2467155 ns/op BenchmarkIndexHard2-4 475 2469053 ns/op BenchmarkIndexHard2-4 482 2481725 ns/op BenchmarkIndexHard3-4 534 2238068 ns/op BenchmarkIndexHard3-4 531 2234019 ns/op BenchmarkIndexHard3-4 530 2237162 ns/op BenchmarkIndexHard3-4 532 2268041 ns/op BenchmarkIndexHard3-4 535 2236258 ns/op BenchmarkIndexHard3-4 530 2235046 ns/op BenchmarkIndexHard3-4 535 2235789 ns/op BenchmarkIndexHard3-4 536 2237965 ns/op BenchmarkIndexHard3-4 531 2234862 ns/op BenchmarkIndexHard3-4 531 2238110 ns/op BenchmarkIndexHard4-4 784 1510243 ns/op BenchmarkIndexHard4-4 784 1510328 ns/op BenchmarkIndexHard4-4 784 1510229 ns/op BenchmarkIndexHard4-4 784 1510114 ns/op BenchmarkIndexHard4-4 784 1510298 ns/op BenchmarkIndexHard4-4 784 1510374 ns/op BenchmarkIndexHard4-4 783 1510139 ns/op BenchmarkIndexHard4-4 784 1510348 ns/op BenchmarkIndexHard4-4 784 1510294 ns/op BenchmarkIndexHard4-4 784 1510197 ns/op BenchmarkLastIndexHard1-4 688 1713569 ns/op BenchmarkLastIndexHard1-4 688 1713588 ns/op BenchmarkLastIndexHard1-4 688 1713348 ns/op BenchmarkLastIndexHard1-4 688 1713416 ns/op BenchmarkLastIndexHard1-4 688 1713700 ns/op BenchmarkLastIndexHard1-4 688 1713649 ns/op BenchmarkLastIndexHard1-4 688 1713892 ns/op BenchmarkLastIndexHard1-4 688 1713721 ns/op BenchmarkLastIndexHard1-4 688 1713648 ns/op BenchmarkLastIndexHard1-4 688 1713612 ns/op BenchmarkLastIndexHard2-4 688 1713582 ns/op BenchmarkLastIndexHard2-4 688 1713466 ns/op BenchmarkLastIndexHard2-4 688 1713621 ns/op BenchmarkLastIndexHard2-4 688 1713801 ns/op BenchmarkLastIndexHard2-4 688 1713703 ns/op BenchmarkLastIndexHard2-4 688 1713802 ns/op BenchmarkLastIndexHard2-4 688 1713581 ns/op BenchmarkLastIndexHard2-4 688 1713484 ns/op BenchmarkLastIndexHard2-4 688 1713695 ns/op BenchmarkLastIndexHard2-4 688 1713794 ns/op BenchmarkLastIndexHard3-4 688 1713871 ns/op BenchmarkLastIndexHard3-4 688 1714016 ns/op BenchmarkLastIndexHard3-4 688 1714158 ns/op BenchmarkLastIndexHard3-4 688 1713885 ns/op BenchmarkLastIndexHard3-4 688 1714029 ns/op BenchmarkLastIndexHard3-4 688 1713752 ns/op BenchmarkLastIndexHard3-4 688 1713720 ns/op BenchmarkLastIndexHard3-4 688 1713713 ns/op BenchmarkLastIndexHard3-4 688 1714065 ns/op BenchmarkLastIndexHard3-4 688 1713700 ns/op BenchmarkCountHard1-4 14702 81616 ns/op BenchmarkCountHard1-4 14701 81613 ns/op BenchmarkCountHard1-4 14703 81603 ns/op BenchmarkCountHard1-4 14702 81629 ns/op BenchmarkCountHard1-4 14700 81607 ns/op BenchmarkCountHard1-4 14701 81613 ns/op BenchmarkCountHard1-4 14703 81603 ns/op BenchmarkCountHard1-4 14702 81615 ns/op BenchmarkCountHard1-4 14702 81619 ns/op BenchmarkCountHard1-4 14701 81600 ns/op BenchmarkCountHard2-4 476 2495866 ns/op BenchmarkCountHard2-4 475 2494817 ns/op BenchmarkCountHard2-4 477 2492412 ns/op BenchmarkCountHard2-4 477 2491300 ns/op BenchmarkCountHard2-4 476 2491623 ns/op BenchmarkCountHard2-4 478 2496917 ns/op BenchmarkCountHard2-4 476 2493215 ns/op BenchmarkCountHard2-4 476 2493919 ns/op BenchmarkCountHard2-4 470 2496252 ns/op BenchmarkCountHard2-4 475 2500267 ns/op BenchmarkCountHard3-4 529 2281550 ns/op BenchmarkCountHard3-4 520 2281687 ns/op BenchmarkCountHard3-4 524 2281862 ns/op BenchmarkCountHard3-4 524 2283172 ns/op BenchmarkCountHard3-4 519 2236045 ns/op BenchmarkCountHard3-4 529 2282896 ns/op BenchmarkCountHard3-4 520 2283092 ns/op BenchmarkCountHard3-4 519 2278815 ns/op BenchmarkCountHard3-4 520 2279749 ns/op BenchmarkCountHard3-4 525 2283199 ns/op BenchmarkIndexTorture-4 61531 19505 ns/op BenchmarkIndexTorture-4 61519 19507 ns/op BenchmarkIndexTorture-4 61575 19503 ns/op BenchmarkIndexTorture-4 61508 19508 ns/op BenchmarkIndexTorture-4 61504 19504 ns/op BenchmarkIndexTorture-4 61526 19505 ns/op BenchmarkIndexTorture-4 61516 19509 ns/op BenchmarkIndexTorture-4 61515 19503 ns/op BenchmarkIndexTorture-4 61522 19507 ns/op BenchmarkIndexTorture-4 61544 19510 ns/op BenchmarkCountTorture-4 56630 21185 ns/op BenchmarkCountTorture-4 56660 21184 ns/op BenchmarkCountTorture-4 56631 21185 ns/op BenchmarkCountTorture-4 56642 21184 ns/op BenchmarkCountTorture-4 56684 21186 ns/op BenchmarkCountTorture-4 56672 21184 ns/op BenchmarkCountTorture-4 56626 21180 ns/op BenchmarkCountTorture-4 56629 21183 ns/op BenchmarkCountTorture-4 56701 21180 ns/op BenchmarkCountTorture-4 56684 21182 ns/op BenchmarkCountTortureOverlapping-4 306 3884665 ns/op BenchmarkCountTortureOverlapping-4 306 3885332 ns/op BenchmarkCountTortureOverlapping-4 306 3883936 ns/op BenchmarkCountTortureOverlapping-4 306 3884606 ns/op BenchmarkCountTortureOverlapping-4 306 4023229 ns/op BenchmarkCountTortureOverlapping-4 306 3884700 ns/op BenchmarkCountTortureOverlapping-4 306 3885597 ns/op BenchmarkCountTortureOverlapping-4 306 3884725 ns/op BenchmarkCountTortureOverlapping-4 306 4033132 ns/op BenchmarkCountTortureOverlapping-4 306 4200236 ns/op BenchmarkCountByte/10-4 268047240 4.477 ns/op 2233.59 MB/s BenchmarkCountByte/10-4 268016875 4.477 ns/op 2233.79 MB/s BenchmarkCountByte/10-4 267995979 4.477 ns/op 2233.56 MB/s BenchmarkCountByte/10-4 268065042 4.477 ns/op 2233.69 MB/s BenchmarkCountByte/10-4 268047402 4.476 ns/op 2233.89 MB/s BenchmarkCountByte/10-4 268050348 4.476 ns/op 2233.90 MB/s BenchmarkCountByte/10-4 268062634 4.477 ns/op 2233.83 MB/s BenchmarkCountByte/10-4 267993549 4.477 ns/op 2233.60 MB/s BenchmarkCountByte/10-4 268023000 4.477 ns/op 2233.88 MB/s BenchmarkCountByte/10-4 268014199 4.477 ns/op 2233.85 MB/s BenchmarkCountByte/32-4 221118766 5.426 ns/op 5897.53 MB/s BenchmarkCountByte/32-4 221144503 5.426 ns/op 5897.16 MB/s BenchmarkCountByte/32-4 221147336 5.427 ns/op 5896.64 MB/s BenchmarkCountByte/32-4 221163339 5.426 ns/op 5897.36 MB/s BenchmarkCountByte/32-4 221140141 5.426 ns/op 5897.24 MB/s BenchmarkCountByte/32-4 221112282 5.426 ns/op 5897.33 MB/s BenchmarkCountByte/32-4 221150985 5.426 ns/op 5897.14 MB/s BenchmarkCountByte/32-4 221144122 5.426 ns/op 5897.40 MB/s BenchmarkCountByte/32-4 221140128 5.426 ns/op 5897.28 MB/s BenchmarkCountByte/32-4 221149167 5.426 ns/op 5897.36 MB/s BenchmarkCountByte/4K-4 16718077 71.75 ns/op 57089.04 MB/s BenchmarkCountByte/4K-4 16729299 71.73 ns/op 57102.38 MB/s BenchmarkCountByte/4K-4 16733077 71.75 ns/op 57087.00 MB/s BenchmarkCountByte/4K-4 16731998 71.72 ns/op 57107.44 MB/s BenchmarkCountByte/4K-4 16716810 71.71 ns/op 57117.59 MB/s BenchmarkCountByte/4K-4 16735767 71.73 ns/op 57102.92 MB/s BenchmarkCountByte/4K-4 16705254 71.72 ns/op 57108.78 MB/s BenchmarkCountByte/4K-4 16723171 71.74 ns/op 57097.12 MB/s BenchmarkCountByte/4K-4 16726946 71.75 ns/op 57086.97 MB/s BenchmarkCountByte/4K-4 16730160 71.72 ns/op 57110.51 MB/s BenchmarkCountByte/4M-4 17155 69943 ns/op 59967.41 MB/s BenchmarkCountByte/4M-4 17164 69930 ns/op 59978.63 MB/s BenchmarkCountByte/4M-4 17161 69957 ns/op 59955.48 MB/s BenchmarkCountByte/4M-4 17161 69917 ns/op 59989.58 MB/s BenchmarkCountByte/4M-4 17157 69980 ns/op 59936.00 MB/s BenchmarkCountByte/4M-4 17152 69969 ns/op 59945.03 MB/s BenchmarkCountByte/4M-4 17155 69912 ns/op 59994.15 MB/s BenchmarkCountByte/4M-4 17158 69973 ns/op 59942.01 MB/s BenchmarkCountByte/4M-4 17155 70006 ns/op 59913.16 MB/s BenchmarkCountByte/4M-4 17163 69981 ns/op 59934.89 MB/s BenchmarkCountByte/64M-4 798 1472819 ns/op 45564.92 MB/s BenchmarkCountByte/64M-4 793 1508535 ns/op 44486.12 MB/s BenchmarkCountByte/64M-4 798 1473320 ns/op 45549.42 MB/s BenchmarkCountByte/64M-4 793 1475073 ns/op 45495.30 MB/s BenchmarkCountByte/64M-4 798 1504114 ns/op 44616.88 MB/s BenchmarkCountByte/64M-4 801 1472014 ns/op 45589.84 MB/s BenchmarkCountByte/64M-4 783 1477100 ns/op 45432.84 MB/s BenchmarkCountByte/64M-4 783 1504019 ns/op 44619.70 MB/s BenchmarkCountByte/64M-4 787 1485409 ns/op 45178.72 MB/s BenchmarkCountByte/64M-4 796 1472612 ns/op 45571.32 MB/s BenchmarkIndexAnyASCII/1:1-4 166607506 7.192 ns/op BenchmarkIndexAnyASCII/1:1-4 166163844 7.236 ns/op BenchmarkIndexAnyASCII/1:1-4 158100045 7.597 ns/op BenchmarkIndexAnyASCII/1:1-4 166114297 7.246 ns/op BenchmarkIndexAnyASCII/1:1-4 170659893 7.146 ns/op BenchmarkIndexAnyASCII/1:1-4 177109917 7.261 ns/op BenchmarkIndexAnyASCII/1:1-4 170940394 7.307 ns/op BenchmarkIndexAnyASCII/1:1-4 165396705 7.005 ns/op BenchmarkIndexAnyASCII/1:1-4 170102126 7.034 ns/op BenchmarkIndexAnyASCII/1:1-4 175534838 7.044 ns/op BenchmarkIndexAnyASCII/1:2-4 149518468 7.940 ns/op BenchmarkIndexAnyASCII/1:2-4 152458336 8.269 ns/op BenchmarkIndexAnyASCII/1:2-4 152475937 8.140 ns/op BenchmarkIndexAnyASCII/1:2-4 147426988 7.870 ns/op BenchmarkIndexAnyASCII/1:2-4 146791245 7.887 ns/op BenchmarkIndexAnyASCII/1:2-4 152471211 7.869 ns/op BenchmarkIndexAnyASCII/1:2-4 152488219 7.869 ns/op BenchmarkIndexAnyASCII/1:2-4 152503336 7.898 ns/op BenchmarkIndexAnyASCII/1:2-4 143511990 7.870 ns/op BenchmarkIndexAnyASCII/1:2-4 152445082 7.996 ns/op BenchmarkIndexAnyASCII/1:4-4 147780409 8.254 ns/op BenchmarkIndexAnyASCII/1:4-4 152494762 8.057 ns/op BenchmarkIndexAnyASCII/1:4-4 147716720 8.140 ns/op BenchmarkIndexAnyASCII/1:4-4 147884502 7.872 ns/op BenchmarkIndexAnyASCII/1:4-4 149411010 7.869 ns/op BenchmarkIndexAnyASCII/1:4-4 151225917 8.465 ns/op BenchmarkIndexAnyASCII/1:4-4 147561667 7.881 ns/op BenchmarkIndexAnyASCII/1:4-4 147907327 8.084 ns/op BenchmarkIndexAnyASCII/1:4-4 148239210 8.139 ns/op BenchmarkIndexAnyASCII/1:4-4 152482513 8.049 ns/op BenchmarkIndexAnyASCII/1:8-4 150164944 8.247 ns/op BenchmarkIndexAnyASCII/1:8-4 152484420 7.869 ns/op BenchmarkIndexAnyASCII/1:8-4 146624709 8.412 ns/op BenchmarkIndexAnyASCII/1:8-4 146452320 8.008 ns/op BenchmarkIndexAnyASCII/1:8-4 152501984 7.870 ns/op BenchmarkIndexAnyASCII/1:8-4 148682462 7.869 ns/op BenchmarkIndexAnyASCII/1:8-4 150103746 7.869 ns/op BenchmarkIndexAnyASCII/1:8-4 146980707 7.870 ns/op BenchmarkIndexAnyASCII/1:8-4 148061955 7.869 ns/op BenchmarkIndexAnyASCII/1:8-4 152495146 7.869 ns/op BenchmarkIndexAnyASCII/1:16-4 152495193 7.871 ns/op BenchmarkIndexAnyASCII/1:16-4 151676638 8.361 ns/op BenchmarkIndexAnyASCII/1:16-4 148750864 7.871 ns/op BenchmarkIndexAnyASCII/1:16-4 152502028 7.869 ns/op BenchmarkIndexAnyASCII/1:16-4 152476328 7.992 ns/op BenchmarkIndexAnyASCII/1:16-4 148794966 7.870 ns/op BenchmarkIndexAnyASCII/1:16-4 152508896 7.869 ns/op BenchmarkIndexAnyASCII/1:16-4 152489959 7.868 ns/op BenchmarkIndexAnyASCII/1:16-4 149601333 7.963 ns/op BenchmarkIndexAnyASCII/1:16-4 152499546 7.870 ns/op BenchmarkIndexAnyASCII/1:32-4 141839280 8.141 ns/op BenchmarkIndexAnyASCII/1:32-4 147440157 8.410 ns/op BenchmarkIndexAnyASCII/1:32-4 142678626 8.142 ns/op BenchmarkIndexAnyASCII/1:32-4 141168360 8.682 ns/op BenchmarkIndexAnyASCII/1:32-4 147421824 8.139 ns/op BenchmarkIndexAnyASCII/1:32-4 145190980 8.140 ns/op BenchmarkIndexAnyASCII/1:32-4 147397887 8.771 ns/op BenchmarkIndexAnyASCII/1:32-4 144004860 8.142 ns/op BenchmarkIndexAnyASCII/1:32-4 147389305 8.141 ns/op BenchmarkIndexAnyASCII/1:32-4 147413928 8.537 ns/op BenchmarkIndexAnyASCII/1:64-4 142678584 8.411 ns/op BenchmarkIndexAnyASCII/1:64-4 142669466 8.410 ns/op BenchmarkIndexAnyASCII/1:64-4 142681348 8.412 ns/op BenchmarkIndexAnyASCII/1:64-4 142676710 8.411 ns/op BenchmarkIndexAnyASCII/1:64-4 142665744 8.411 ns/op BenchmarkIndexAnyASCII/1:64-4 142671589 8.411 ns/op BenchmarkIndexAnyASCII/1:64-4 142672015 8.411 ns/op BenchmarkIndexAnyASCII/1:64-4 142670402 8.412 ns/op BenchmarkIndexAnyASCII/1:64-4 142679035 8.411 ns/op BenchmarkIndexAnyASCII/1:64-4 142687606 8.412 ns/op BenchmarkIndexAnyASCII/16:1-4 163005499 7.183 ns/op BenchmarkIndexAnyASCII/16:1-4 159403215 7.024 ns/op BenchmarkIndexAnyASCII/16:1-4 160282994 7.867 ns/op BenchmarkIndexAnyASCII/16:1-4 168828948 7.161 ns/op BenchmarkIndexAnyASCII/16:1-4 164460022 7.023 ns/op BenchmarkIndexAnyASCII/16:1-4 164375064 7.596 ns/op BenchmarkIndexAnyASCII/16:1-4 165913344 7.019 ns/op BenchmarkIndexAnyASCII/16:1-4 172708010 7.087 ns/op BenchmarkIndexAnyASCII/16:1-4 164651978 7.325 ns/op BenchmarkIndexAnyASCII/16:1-4 164537006 6.971 ns/op BenchmarkIndexAnyASCII/16:2-4 68814626 17.52 ns/op BenchmarkIndexAnyASCII/16:2-4 68797741 17.48 ns/op BenchmarkIndexAnyASCII/16:2-4 68558013 17.48 ns/op BenchmarkIndexAnyASCII/16:2-4 68589010 17.48 ns/op BenchmarkIndexAnyASCII/16:2-4 68341472 17.45 ns/op BenchmarkIndexAnyASCII/16:2-4 68849090 17.46 ns/op BenchmarkIndexAnyASCII/16:2-4 68083352 17.45 ns/op BenchmarkIndexAnyASCII/16:2-4 68641096 17.49 ns/op BenchmarkIndexAnyASCII/16:2-4 68877211 17.48 ns/op BenchmarkIndexAnyASCII/16:2-4 68864325 17.46 ns/op BenchmarkIndexAnyASCII/16:4-4 61204432 19.57 ns/op BenchmarkIndexAnyASCII/16:4-4 61289490 19.58 ns/op BenchmarkIndexAnyASCII/16:4-4 61168738 19.57 ns/op BenchmarkIndexAnyASCII/16:4-4 61307899 19.57 ns/op BenchmarkIndexAnyASCII/16:4-4 61370234 19.58 ns/op BenchmarkIndexAnyASCII/16:4-4 61325604 19.58 ns/op BenchmarkIndexAnyASCII/16:4-4 61408922 19.58 ns/op BenchmarkIndexAnyASCII/16:4-4 61405748 19.59 ns/op BenchmarkIndexAnyASCII/16:4-4 61241380 19.58 ns/op BenchmarkIndexAnyASCII/16:4-4 61261640 19.57 ns/op BenchmarkIndexAnyASCII/16:8-4 47056634 25.48 ns/op BenchmarkIndexAnyASCII/16:8-4 47087304 25.48 ns/op BenchmarkIndexAnyASCII/16:8-4 47016826 25.48 ns/op BenchmarkIndexAnyASCII/16:8-4 47080485 25.48 ns/op BenchmarkIndexAnyASCII/16:8-4 47109616 25.47 ns/op BenchmarkIndexAnyASCII/16:8-4 47115200 25.49 ns/op BenchmarkIndexAnyASCII/16:8-4 47030445 25.48 ns/op BenchmarkIndexAnyASCII/16:8-4 47066226 25.48 ns/op BenchmarkIndexAnyASCII/16:8-4 46994396 25.49 ns/op BenchmarkIndexAnyASCII/16:8-4 47089960 25.48 ns/op BenchmarkIndexAnyASCII/16:16-4 31461765 38.11 ns/op BenchmarkIndexAnyASCII/16:16-4 31553775 38.10 ns/op BenchmarkIndexAnyASCII/16:16-4 31474069 38.12 ns/op BenchmarkIndexAnyASCII/16:16-4 31548435 38.10 ns/op BenchmarkIndexAnyASCII/16:16-4 31528021 38.12 ns/op BenchmarkIndexAnyASCII/16:16-4 31547018 38.11 ns/op BenchmarkIndexAnyASCII/16:16-4 31427836 38.08 ns/op BenchmarkIndexAnyASCII/16:16-4 31532925 38.10 ns/op BenchmarkIndexAnyASCII/16:16-4 31411975 38.11 ns/op BenchmarkIndexAnyASCII/16:16-4 31509319 38.10 ns/op BenchmarkIndexAnyASCII/16:32-4 18557876 64.63 ns/op BenchmarkIndexAnyASCII/16:32-4 18558320 64.61 ns/op BenchmarkIndexAnyASCII/16:32-4 18568687 64.63 ns/op BenchmarkIndexAnyASCII/16:32-4 18541206 64.61 ns/op BenchmarkIndexAnyASCII/16:32-4 18561352 64.66 ns/op BenchmarkIndexAnyASCII/16:32-4 18568610 64.62 ns/op BenchmarkIndexAnyASCII/16:32-4 18554833 64.63 ns/op BenchmarkIndexAnyASCII/16:32-4 18565716 64.62 ns/op BenchmarkIndexAnyASCII/16:32-4 18568212 64.61 ns/op BenchmarkIndexAnyASCII/16:32-4 18548973 64.62 ns/op BenchmarkIndexAnyASCII/16:64-4 9212437 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9196035 130.6 ns/op BenchmarkIndexAnyASCII/16:64-4 9208748 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9198145 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9203631 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9193543 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9210604 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9197336 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9219879 130.5 ns/op BenchmarkIndexAnyASCII/16:64-4 9193545 130.5 ns/op BenchmarkIndexAnyASCII/256:1-4 134021296 8.954 ns/op BenchmarkIndexAnyASCII/256:1-4 134020012 8.954 ns/op BenchmarkIndexAnyASCII/256:1-4 134018402 9.226 ns/op BenchmarkIndexAnyASCII/256:1-4 134024382 8.953 ns/op BenchmarkIndexAnyASCII/256:1-4 134017513 8.954 ns/op BenchmarkIndexAnyASCII/256:1-4 133998382 8.954 ns/op BenchmarkIndexAnyASCII/256:1-4 134030577 8.954 ns/op BenchmarkIndexAnyASCII/256:1-4 134028814 8.954 ns/op BenchmarkIndexAnyASCII/256:1-4 132215156 8.953 ns/op BenchmarkIndexAnyASCII/256:1-4 134030097 8.954 ns/op BenchmarkIndexAnyASCII/256:2-4 7788870 153.2 ns/op BenchmarkIndexAnyASCII/256:2-4 7834129 153.1 ns/op BenchmarkIndexAnyASCII/256:2-4 7843226 152.8 ns/op BenchmarkIndexAnyASCII/256:2-4 7846944 153.7 ns/op BenchmarkIndexAnyASCII/256:2-4 7802144 153.0 ns/op BenchmarkIndexAnyASCII/256:2-4 7802898 152.7 ns/op BenchmarkIndexAnyASCII/256:2-4 7844680 152.6 ns/op BenchmarkIndexAnyASCII/256:2-4 7819396 152.1 ns/op BenchmarkIndexAnyASCII/256:2-4 7814512 153.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7846063 152.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7669177 156.8 ns/op BenchmarkIndexAnyASCII/256:4-4 7742540 156.5 ns/op BenchmarkIndexAnyASCII/256:4-4 7648098 155.8 ns/op BenchmarkIndexAnyASCII/256:4-4 7558795 156.9 ns/op BenchmarkIndexAnyASCII/256:4-4 7649622 156.0 ns/op BenchmarkIndexAnyASCII/256:4-4 7677718 156.8 ns/op BenchmarkIndexAnyASCII/256:4-4 7734870 155.9 ns/op BenchmarkIndexAnyASCII/256:4-4 7640354 157.0 ns/op BenchmarkIndexAnyASCII/256:4-4 7631060 156.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7740540 156.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7387243 163.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7363125 162.4 ns/op BenchmarkIndexAnyASCII/256:8-4 7437444 163.6 ns/op BenchmarkIndexAnyASCII/256:8-4 7387035 163.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7390966 163.6 ns/op BenchmarkIndexAnyASCII/256:8-4 7380576 164.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7401780 161.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7392090 164.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7399668 161.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7336035 162.2 ns/op BenchmarkIndexAnyASCII/256:16-4 6960660 173.0 ns/op BenchmarkIndexAnyASCII/256:16-4 7007644 171.2 ns/op BenchmarkIndexAnyASCII/256:16-4 7018456 173.1 ns/op BenchmarkIndexAnyASCII/256:16-4 6962058 171.3 ns/op BenchmarkIndexAnyASCII/256:16-4 6798645 174.0 ns/op BenchmarkIndexAnyASCII/256:16-4 6849499 170.7 ns/op BenchmarkIndexAnyASCII/256:16-4 6976519 171.2 ns/op BenchmarkIndexAnyASCII/256:16-4 6916310 170.9 ns/op BenchmarkIndexAnyASCII/256:16-4 6960872 175.1 ns/op BenchmarkIndexAnyASCII/256:16-4 6957162 173.7 ns/op BenchmarkIndexAnyASCII/256:32-4 6048176 198.4 ns/op BenchmarkIndexAnyASCII/256:32-4 6042330 198.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6063328 198.4 ns/op BenchmarkIndexAnyASCII/256:32-4 6047094 198.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6045668 198.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6059820 198.2 ns/op BenchmarkIndexAnyASCII/256:32-4 6054091 198.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6051157 198.4 ns/op BenchmarkIndexAnyASCII/256:32-4 6056000 198.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6058429 198.3 ns/op BenchmarkIndexAnyASCII/256:64-4 4640196 259.5 ns/op BenchmarkIndexAnyASCII/256:64-4 4613316 259.4 ns/op BenchmarkIndexAnyASCII/256:64-4 4638946 259.2 ns/op BenchmarkIndexAnyASCII/256:64-4 4630772 258.9 ns/op BenchmarkIndexAnyASCII/256:64-4 4628391 259.4 ns/op BenchmarkIndexAnyASCII/256:64-4 4628961 259.4 ns/op BenchmarkIndexAnyASCII/256:64-4 4632063 259.6 ns/op BenchmarkIndexAnyASCII/256:64-4 4620180 258.9 ns/op BenchmarkIndexAnyASCII/256:64-4 4632873 259.0 ns/op BenchmarkIndexAnyASCII/256:64-4 4628374 259.2 ns/op BenchmarkIndexAnyUTF8/1:1-4 295568444 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 296568657 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 295883936 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 315945324 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 315865702 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 294868938 3.799 ns/op BenchmarkIndexAnyUTF8/1:1-4 296456698 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 295502763 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 295383624 3.798 ns/op BenchmarkIndexAnyUTF8/1:1-4 295428362 4.069 ns/op BenchmarkIndexAnyUTF8/1:2-4 152477431 8.139 ns/op BenchmarkIndexAnyUTF8/1:2-4 152502670 8.128 ns/op BenchmarkIndexAnyUTF8/1:2-4 152502646 8.086 ns/op BenchmarkIndexAnyUTF8/1:2-4 152486065 7.870 ns/op BenchmarkIndexAnyUTF8/1:2-4 152480828 8.881 ns/op BenchmarkIndexAnyUTF8/1:2-4 152453056 7.869 ns/op BenchmarkIndexAnyUTF8/1:2-4 149935976 7.869 ns/op BenchmarkIndexAnyUTF8/1:2-4 147426210 7.869 ns/op BenchmarkIndexAnyUTF8/1:2-4 152461506 7.918 ns/op BenchmarkIndexAnyUTF8/1:2-4 152454880 8.281 ns/op BenchmarkIndexAnyUTF8/1:4-4 152449635 7.959 ns/op BenchmarkIndexAnyUTF8/1:4-4 152483198 7.869 ns/op BenchmarkIndexAnyUTF8/1:4-4 147975807 8.410 ns/op BenchmarkIndexAnyUTF8/1:4-4 152461393 7.869 ns/op BenchmarkIndexAnyUTF8/1:4-4 148599471 7.869 ns/op BenchmarkIndexAnyUTF8/1:4-4 152496051 7.868 ns/op BenchmarkIndexAnyUTF8/1:4-4 148330448 7.869 ns/op BenchmarkIndexAnyUTF8/1:4-4 148736004 7.983 ns/op BenchmarkIndexAnyUTF8/1:4-4 152448724 7.996 ns/op BenchmarkIndexAnyUTF8/1:4-4 150524766 7.962 ns/op BenchmarkIndexAnyUTF8/1:8-4 152492103 8.144 ns/op BenchmarkIndexAnyUTF8/1:8-4 152500508 8.140 ns/op BenchmarkIndexAnyUTF8/1:8-4 148130434 8.411 ns/op BenchmarkIndexAnyUTF8/1:8-4 150429517 7.869 ns/op BenchmarkIndexAnyUTF8/1:8-4 152501109 7.869 ns/op BenchmarkIndexAnyUTF8/1:8-4 152453364 7.870 ns/op BenchmarkIndexAnyUTF8/1:8-4 152456605 7.869 ns/op BenchmarkIndexAnyUTF8/1:8-4 140242801 8.681 ns/op BenchmarkIndexAnyUTF8/1:8-4 152450934 7.870 ns/op BenchmarkIndexAnyUTF8/1:8-4 151123875 8.674 ns/op BenchmarkIndexAnyUTF8/1:16-4 149627320 7.870 ns/op BenchmarkIndexAnyUTF8/1:16-4 150654244 7.871 ns/op BenchmarkIndexAnyUTF8/1:16-4 142982428 8.683 ns/op BenchmarkIndexAnyUTF8/1:16-4 147048354 7.870 ns/op BenchmarkIndexAnyUTF8/1:16-4 152482575 8.380 ns/op BenchmarkIndexAnyUTF8/1:16-4 152279478 7.969 ns/op BenchmarkIndexAnyUTF8/1:16-4 152479772 8.272 ns/op BenchmarkIndexAnyUTF8/1:16-4 152491795 8.634 ns/op BenchmarkIndexAnyUTF8/1:16-4 152504563 7.869 ns/op BenchmarkIndexAnyUTF8/1:16-4 152496808 7.872 ns/op BenchmarkIndexAnyUTF8/1:32-4 147399434 8.142 ns/op BenchmarkIndexAnyUTF8/1:32-4 147399141 8.142 ns/op BenchmarkIndexAnyUTF8/1:32-4 147430916 8.140 ns/op BenchmarkIndexAnyUTF8/1:32-4 147425955 8.141 ns/op BenchmarkIndexAnyUTF8/1:32-4 147402427 8.141 ns/op BenchmarkIndexAnyUTF8/1:32-4 147380185 8.195 ns/op BenchmarkIndexAnyUTF8/1:32-4 147394603 8.140 ns/op BenchmarkIndexAnyUTF8/1:32-4 147385794 8.140 ns/op BenchmarkIndexAnyUTF8/1:32-4 147413816 8.141 ns/op BenchmarkIndexAnyUTF8/1:32-4 147389302 8.140 ns/op BenchmarkIndexAnyUTF8/1:64-4 142663756 8.412 ns/op BenchmarkIndexAnyUTF8/1:64-4 142677400 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142664554 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142677032 8.411 ns/op BenchmarkIndexAnyUTF8/1:64-4 142682191 8.411 ns/op BenchmarkIndexAnyUTF8/1:64-4 142679467 8.411 ns/op BenchmarkIndexAnyUTF8/1:64-4 142662426 8.411 ns/op BenchmarkIndexAnyUTF8/1:64-4 142675579 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142660174 8.410 ns/op BenchmarkIndexAnyUTF8/1:64-4 142684114 8.410 ns/op BenchmarkIndexAnyUTF8/16:1-4 74887382 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74926338 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74910715 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74956286 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74905754 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74972535 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74928910 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74868693 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74864023 16.01 ns/op BenchmarkIndexAnyUTF8/16:1-4 74926567 16.01 ns/op BenchmarkIndexAnyUTF8/16:2-4 30292724 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30257719 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30287509 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30295944 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30263494 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30288198 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30287096 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30275895 39.61 ns/op BenchmarkIndexAnyUTF8/16:2-4 30251982 39.62 ns/op BenchmarkIndexAnyUTF8/16:2-4 30252463 39.61 ns/op BenchmarkIndexAnyUTF8/16:4-4 32226871 37.20 ns/op BenchmarkIndexAnyUTF8/16:4-4 32218393 37.21 ns/op BenchmarkIndexAnyUTF8/16:4-4 32243455 37.24 ns/op BenchmarkIndexAnyUTF8/16:4-4 32277346 37.20 ns/op BenchmarkIndexAnyUTF8/16:4-4 32175553 37.20 ns/op BenchmarkIndexAnyUTF8/16:4-4 32239758 37.21 ns/op BenchmarkIndexAnyUTF8/16:4-4 32217625 37.21 ns/op BenchmarkIndexAnyUTF8/16:4-4 32217876 37.20 ns/op BenchmarkIndexAnyUTF8/16:4-4 32190850 37.22 ns/op BenchmarkIndexAnyUTF8/16:4-4 32236527 37.20 ns/op BenchmarkIndexAnyUTF8/16:8-4 12586474 96.00 ns/op BenchmarkIndexAnyUTF8/16:8-4 12165537 96.21 ns/op BenchmarkIndexAnyUTF8/16:8-4 12585214 96.32 ns/op BenchmarkIndexAnyUTF8/16:8-4 12530430 96.00 ns/op BenchmarkIndexAnyUTF8/16:8-4 12588574 97.99 ns/op BenchmarkIndexAnyUTF8/16:8-4 11458032 95.99 ns/op BenchmarkIndexAnyUTF8/16:8-4 12654609 95.99 ns/op BenchmarkIndexAnyUTF8/16:8-4 12608811 97.20 ns/op BenchmarkIndexAnyUTF8/16:8-4 12600362 98.96 ns/op BenchmarkIndexAnyUTF8/16:8-4 11456557 96.00 ns/op BenchmarkIndexAnyUTF8/16:16-4 12598538 96.04 ns/op BenchmarkIndexAnyUTF8/16:16-4 12562819 100.3 ns/op BenchmarkIndexAnyUTF8/16:16-4 11952650 98.14 ns/op BenchmarkIndexAnyUTF8/16:16-4 12555100 99.19 ns/op BenchmarkIndexAnyUTF8/16:16-4 12594999 99.48 ns/op BenchmarkIndexAnyUTF8/16:16-4 12090586 98.27 ns/op BenchmarkIndexAnyUTF8/16:16-4 12555610 95.98 ns/op BenchmarkIndexAnyUTF8/16:16-4 12608785 98.44 ns/op BenchmarkIndexAnyUTF8/16:16-4 12492735 96.20 ns/op BenchmarkIndexAnyUTF8/16:16-4 12567054 96.05 ns/op BenchmarkIndexAnyUTF8/16:32-4 12059570 100.4 ns/op BenchmarkIndexAnyUTF8/16:32-4 12050440 106.3 ns/op BenchmarkIndexAnyUTF8/16:32-4 12079695 100.2 ns/op BenchmarkIndexAnyUTF8/16:32-4 12039814 100.3 ns/op BenchmarkIndexAnyUTF8/16:32-4 12059074 100.6 ns/op BenchmarkIndexAnyUTF8/16:32-4 12277682 103.4 ns/op BenchmarkIndexAnyUTF8/16:32-4 11426457 108.9 ns/op BenchmarkIndexAnyUTF8/16:32-4 12038442 100.3 ns/op BenchmarkIndexAnyUTF8/16:32-4 11986300 102.7 ns/op BenchmarkIndexAnyUTF8/16:32-4 11528056 104.7 ns/op BenchmarkIndexAnyUTF8/16:64-4 11544028 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11548290 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11546506 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11543888 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11544152 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11545184 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11540378 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11542507 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11549305 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11541700 103.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 5544850 216.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 5543830 216.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 5544844 216.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 5545995 216.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 5542059 216.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 5540946 216.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 5540899 216.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 5543179 216.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 5542956 216.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 5545116 216.4 ns/op BenchmarkIndexAnyUTF8/256:2-4 2724031 441.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 2722461 440.7 ns/op BenchmarkIndexAnyUTF8/256:2-4 2722628 440.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 2720948 440.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 2721786 440.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 2722578 440.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 2721322 440.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 2722059 441.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 2721357 440.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 2722998 441.0 ns/op BenchmarkIndexAnyUTF8/256:4-4 5117916 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5118115 234.4 ns/op BenchmarkIndexAnyUTF8/256:4-4 5117150 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5118504 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5118464 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5116350 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5118516 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5115913 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5118746 234.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 5117016 234.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 2558341 469.1 ns/op BenchmarkIndexAnyUTF8/256:8-4 2558510 468.9 ns/op BenchmarkIndexAnyUTF8/256:8-4 2558137 469.0 ns/op BenchmarkIndexAnyUTF8/256:8-4 2559433 469.1 ns/op BenchmarkIndexAnyUTF8/256:8-4 2557317 469.1 ns/op BenchmarkIndexAnyUTF8/256:8-4 2558847 469.0 ns/op BenchmarkIndexAnyUTF8/256:8-4 2559099 469.2 ns/op BenchmarkIndexAnyUTF8/256:8-4 2558142 468.9 ns/op BenchmarkIndexAnyUTF8/256:8-4 2558517 469.1 ns/op BenchmarkIndexAnyUTF8/256:8-4 2559186 469.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 11694564 102.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11694342 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11699403 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11682030 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11697331 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11695614 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11667751 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11691297 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11697352 102.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 11694360 102.6 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847599 649.4 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847541 649.5 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847991 649.4 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847116 649.4 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847353 649.5 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847180 649.5 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847992 649.7 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847983 649.2 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847452 649.4 ns/op BenchmarkIndexAnyUTF8/256:32-4 1847665 649.4 ns/op BenchmarkIndexAnyUTF8/256:64-4 1818700 659.5 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819512 659.4 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819342 659.5 ns/op BenchmarkIndexAnyUTF8/256:64-4 1818374 659.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819414 659.5 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819412 659.4 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819410 659.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819369 659.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819402 659.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 1819081 659.6 ns/op BenchmarkLastIndexAnyASCII/1:1-4 171649033 7.325 ns/op BenchmarkLastIndexAnyASCII/1:1-4 170875957 6.783 ns/op BenchmarkLastIndexAnyASCII/1:1-4 164461180 6.782 ns/op BenchmarkLastIndexAnyASCII/1:1-4 176928865 6.910 ns/op BenchmarkLastIndexAnyASCII/1:1-4 171389647 7.324 ns/op BenchmarkLastIndexAnyASCII/1:1-4 176921701 6.810 ns/op BenchmarkLastIndexAnyASCII/1:1-4 176891587 7.051 ns/op BenchmarkLastIndexAnyASCII/1:1-4 171400869 6.984 ns/op BenchmarkLastIndexAnyASCII/1:1-4 172570089 7.325 ns/op BenchmarkLastIndexAnyASCII/1:1-4 171683619 6.998 ns/op BenchmarkLastIndexAnyASCII/1:2-4 166808901 6.782 ns/op BenchmarkLastIndexAnyASCII/1:2-4 164624610 6.948 ns/op BenchmarkLastIndexAnyASCII/1:2-4 176939593 7.046 ns/op BenchmarkLastIndexAnyASCII/1:2-4 176912743 7.325 ns/op BenchmarkLastIndexAnyASCII/1:2-4 170273170 7.325 ns/op BenchmarkLastIndexAnyASCII/1:2-4 172185032 7.004 ns/op BenchmarkLastIndexAnyASCII/1:2-4 170112846 7.054 ns/op BenchmarkLastIndexAnyASCII/1:2-4 166458590 6.901 ns/op BenchmarkLastIndexAnyASCII/1:2-4 170268919 6.832 ns/op BenchmarkLastIndexAnyASCII/1:2-4 164996596 6.967 ns/op BenchmarkLastIndexAnyASCII/1:4-4 172655564 7.031 ns/op BenchmarkLastIndexAnyASCII/1:4-4 173643049 7.325 ns/op BenchmarkLastIndexAnyASCII/1:4-4 174412468 6.971 ns/op BenchmarkLastIndexAnyASCII/1:4-4 171035518 6.955 ns/op BenchmarkLastIndexAnyASCII/1:4-4 164262230 7.031 ns/op BenchmarkLastIndexAnyASCII/1:4-4 173457789 6.930 ns/op BenchmarkLastIndexAnyASCII/1:4-4 166942383 7.325 ns/op BenchmarkLastIndexAnyASCII/1:4-4 171280978 6.787 ns/op BenchmarkLastIndexAnyASCII/1:4-4 175451390 7.041 ns/op BenchmarkLastIndexAnyASCII/1:4-4 171973863 7.324 ns/op BenchmarkLastIndexAnyASCII/1:8-4 174211953 6.782 ns/op BenchmarkLastIndexAnyASCII/1:8-4 176902987 6.973 ns/op BenchmarkLastIndexAnyASCII/1:8-4 172032266 6.985 ns/op BenchmarkLastIndexAnyASCII/1:8-4 170089768 7.325 ns/op BenchmarkLastIndexAnyASCII/1:8-4 164695386 7.053 ns/op BenchmarkLastIndexAnyASCII/1:8-4 172072087 6.924 ns/op BenchmarkLastIndexAnyASCII/1:8-4 165369860 6.924 ns/op BenchmarkLastIndexAnyASCII/1:8-4 175049748 6.783 ns/op BenchmarkLastIndexAnyASCII/1:8-4 164491306 7.050 ns/op BenchmarkLastIndexAnyASCII/1:8-4 170257932 6.837 ns/op BenchmarkLastIndexAnyASCII/1:16-4 170640183 7.050 ns/op BenchmarkLastIndexAnyASCII/1:16-4 170660983 7.026 ns/op BenchmarkLastIndexAnyASCII/1:16-4 174213255 7.045 ns/op BenchmarkLastIndexAnyASCII/1:16-4 164616318 7.049 ns/op BenchmarkLastIndexAnyASCII/1:16-4 163837156 6.957 ns/op BenchmarkLastIndexAnyASCII/1:16-4 171052944 6.918 ns/op BenchmarkLastIndexAnyASCII/1:16-4 171261190 6.975 ns/op BenchmarkLastIndexAnyASCII/1:16-4 163826072 6.977 ns/op BenchmarkLastIndexAnyASCII/1:16-4 176907949 7.272 ns/op BenchmarkLastIndexAnyASCII/1:16-4 171234798 7.031 ns/op BenchmarkLastIndexAnyASCII/1:32-4 162086674 7.159 ns/op BenchmarkLastIndexAnyASCII/1:32-4 163817455 7.596 ns/op BenchmarkLastIndexAnyASCII/1:32-4 163931427 7.283 ns/op BenchmarkLastIndexAnyASCII/1:32-4 158091188 7.317 ns/op BenchmarkLastIndexAnyASCII/1:32-4 160469656 7.263 ns/op BenchmarkLastIndexAnyASCII/1:32-4 158392478 7.219 ns/op BenchmarkLastIndexAnyASCII/1:32-4 164416261 7.320 ns/op BenchmarkLastIndexAnyASCII/1:32-4 162935788 7.283 ns/op BenchmarkLastIndexAnyASCII/1:32-4 160313896 7.181 ns/op BenchmarkLastIndexAnyASCII/1:32-4 170132630 7.500 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163820120 7.326 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163830766 7.326 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163834665 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163830462 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163816333 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163825165 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163828144 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163813950 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163814496 7.325 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163830560 7.325 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68612854 17.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68472850 17.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68614443 17.50 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68536537 17.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68565237 17.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68459740 17.50 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68603809 17.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68394271 17.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68589304 17.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 68544288 17.49 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68694296 17.47 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68743762 17.43 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68794164 17.44 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68794360 17.53 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68759278 17.43 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68888713 17.53 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68803515 17.49 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68774257 17.45 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68545423 17.46 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68643526 17.51 ns/op BenchmarkLastIndexAnyASCII/16:4-4 61181998 19.66 ns/op BenchmarkLastIndexAnyASCII/16:4-4 60717830 19.69 ns/op BenchmarkLastIndexAnyASCII/16:4-4 61305903 19.70 ns/op BenchmarkLastIndexAnyASCII/16:4-4 61147972 19.65 ns/op BenchmarkLastIndexAnyASCII/16:4-4 60793857 19.71 ns/op BenchmarkLastIndexAnyASCII/16:4-4 60928377 19.72 ns/op BenchmarkLastIndexAnyASCII/16:4-4 61210105 19.67 ns/op BenchmarkLastIndexAnyASCII/16:4-4 60982004 19.71 ns/op BenchmarkLastIndexAnyASCII/16:4-4 61019588 19.65 ns/op BenchmarkLastIndexAnyASCII/16:4-4 60992781 19.65 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46478854 25.75 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46549027 25.77 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46478928 25.77 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46506956 25.77 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46658437 25.76 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46595714 25.77 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46545253 25.76 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46598428 25.77 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46514005 25.81 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46596709 25.81 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31249506 38.51 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31293480 38.41 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31236526 38.37 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31274414 38.40 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31200450 38.41 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31259480 38.38 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31308945 38.39 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31312107 38.48 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31273965 38.41 ns/op BenchmarkLastIndexAnyASCII/16:16-4 31347352 38.45 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18444880 65.11 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18438098 65.18 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18421843 65.11 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18383994 65.19 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18405369 65.13 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18389804 65.07 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18410386 65.19 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18370528 65.13 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18405199 65.26 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18431569 65.13 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9167787 131.2 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9157011 130.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9148726 131.2 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9159100 131.1 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9120975 131.2 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9190729 130.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9207432 131.0 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9178173 130.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9158725 130.8 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9168254 130.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7969842 149.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8025697 151.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7964534 150.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8024820 150.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7953360 150.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7987447 150.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7909077 150.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8007439 150.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8012683 149.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8038794 150.0 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7943787 151.7 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7894094 152.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7916380 151.7 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7875801 151.6 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7983896 150.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7980351 150.5 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7943629 150.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7973847 151.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7974296 151.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7995540 151.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7760826 153.1 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7720365 154.1 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7877042 152.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7774399 153.7 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7761136 154.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7860693 153.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7808708 153.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7786874 154.5 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7784672 153.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7699663 154.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7321498 162.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7402238 163.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7436797 163.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7417201 162.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7458506 162.6 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7305082 163.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7409668 163.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7404928 164.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7295208 161.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7355724 163.6 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6999710 171.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6996906 174.0 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6855745 173.8 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6738438 172.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6924808 172.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6997485 173.1 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6924303 170.8 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7007593 173.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7005084 169.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6949095 171.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6058777 198.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6066853 198.4 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6056353 198.1 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6048284 198.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6076898 198.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6045663 198.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6058819 198.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6055681 198.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6054594 198.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6056059 198.0 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4620466 259.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4631439 259.6 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4630881 259.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4621726 259.6 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4624863 259.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4619604 259.8 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4617520 259.7 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4623716 259.2 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4630430 259.4 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4626656 259.4 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 168964424 6.988 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 176727789 6.892 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 170113737 6.998 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 171852902 6.850 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 170116300 7.044 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 170618014 7.045 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 173838991 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 170654164 7.046 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 168560478 7.041 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 171275929 6.914 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 173042023 6.975 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 176261144 6.940 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 170278734 7.035 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 170199916 7.027 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 171881570 6.989 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 171469797 7.326 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 170704174 7.046 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 173623274 7.326 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 171648958 7.014 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 175652678 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 171492984 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 171411640 6.834 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 170104785 7.001 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 170123584 7.016 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 163831280 6.903 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 174226557 6.929 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 173831775 6.998 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 163821975 6.995 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 172612600 6.962 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 176931903 6.992 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 171982224 6.783 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 176909024 7.054 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 170129385 6.988 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 170826264 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 176550337 7.028 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 174845966 7.054 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 170109021 6.947 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 170129053 7.299 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 165670825 6.913 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 165856609 7.031 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 163821864 7.017 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 175081275 7.027 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 166569494 6.783 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 170650303 7.031 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 176911903 7.036 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 173476138 6.995 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 171460862 7.326 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 170124175 7.053 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 164993119 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 171646225 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 165910784 7.322 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 165006631 7.120 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 166753614 7.288 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 158244186 7.278 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 159777007 7.596 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170128964 7.257 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 158830203 7.307 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 168948573 7.303 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 157970448 7.322 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170124997 7.230 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163821727 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163818195 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163826742 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163817755 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163825075 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163815706 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163834929 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163816952 7.325 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163838352 7.326 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163820696 7.325 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34275592 34.72 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34553808 34.88 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34557738 34.72 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34521729 34.72 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34181601 34.84 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34273048 34.89 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34279686 34.89 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34288628 35.22 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34535670 35.16 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34260531 34.73 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9870187 124.5 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9873238 124.4 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9949002 123.9 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9890623 121.5 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9892076 124.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9532820 122.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9853156 121.7 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9948645 124.1 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9857041 122.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 9875434 124.5 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9888361 121.8 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9830086 121.6 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10010412 128.8 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9858979 121.1 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10098612 124.4 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9957664 121.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9924307 121.2 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9854828 121.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9510050 125.9 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 9883978 121.6 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9876086 124.5 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9532654 122.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9851211 124.9 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9886500 125.3 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9672027 121.5 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9830480 121.8 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9832045 121.8 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9877042 125.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9911096 121.6 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 9948452 125.9 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 9736381 121.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 10239717 121.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 10215319 127.7 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 9685221 122.5 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 10203699 121.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 9886066 122.1 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 9889345 125.0 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 10011067 121.5 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 9542920 124.6 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 9905876 123.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9872451 132.9 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9312043 126.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9302407 130.4 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9532392 133.6 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9237146 127.7 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 8880226 131.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9055334 133.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9279804 134.6 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9719334 126.2 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 9445825 129.1 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9539214 125.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9528086 125.1 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9508806 122.2 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9504930 122.6 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9602347 121.6 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9882301 121.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9873366 121.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9492697 124.3 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9768213 125.1 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9520076 122.0 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2423626 495.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2423671 495.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2421196 495.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2422758 495.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2423678 495.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2423306 495.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2423298 495.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2422938 495.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2423520 495.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2423211 495.1 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 656982 1931 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 660638 1882 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 636757 1940 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 660885 1897 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 661183 1881 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 660686 1930 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 660334 1921 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 660284 1911 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 656745 1882 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 651855 1903 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 660498 1881 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 659992 1937 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 660279 1875 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 660352 1879 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 660904 1879 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 636322 1883 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 661222 1928 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 656998 1900 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 660692 1878 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 660968 1923 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 660536 1932 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 659656 1881 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 657421 1880 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 660188 1883 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 636430 1933 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 660493 1904 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 660690 1903 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 660004 1941 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 660114 1906 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 613374 1884 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 660537 1899 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 660313 1988 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 660114 2007 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 651625 1880 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 635947 1881 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 660414 1882 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 660056 1881 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 660010 1884 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 636627 1890 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 660745 1880 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 635252 2057 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 635912 1986 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 631482 1998 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 629827 2012 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 635592 1951 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 634318 1955 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 635710 1952 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 613430 1952 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 636314 1974 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 636333 1952 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 636306 1907 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635161 1890 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635713 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 636306 1905 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 636044 1921 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635630 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 636409 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 629545 1947 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635559 1885 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635422 1886 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22466 53413 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22467 53407 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22467 53411 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22465 53400 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22466 53412 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22460 53424 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22459 53421 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22460 53415 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22464 53407 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22461 53421 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20418 58566 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20436 58622 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20413 58677 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20458 58677 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20380 58756 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20491 58521 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20446 58786 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20571 58577 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20403 58560 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 20445 58813 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14512 82682 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14512 82669 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14526 82584 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14516 82680 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14511 82667 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14512 82668 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14541 82666 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14515 82664 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14511 82670 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14512 82680 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 28996 41353 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29002 41352 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29012 41360 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29008 41363 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29013 41356 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29030 41307 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 28998 41317 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29007 41363 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29038 41319 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29052 41314 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 57990 20701 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 58011 20676 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 57968 20701 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 58023 20676 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 57957 20673 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 57975 20680 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 57978 20694 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 58042 20678 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 58020 20677 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 57970 20698 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 112160 10693 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111937 10722 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111854 10718 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111860 10720 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111878 10729 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111998 10713 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111991 10709 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111794 10724 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111976 10708 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 111922 10712 ns/op BenchmarkIndexByte_Bytes/10-4 314460522 3.935 ns/op 2541.61 MB/s BenchmarkIndexByte_Bytes/10-4 314399026 3.821 ns/op 2617.21 MB/s BenchmarkIndexByte_Bytes/10-4 304543804 4.070 ns/op 2457.23 MB/s BenchmarkIndexByte_Bytes/10-4 314534877 3.819 ns/op 2618.63 MB/s BenchmarkIndexByte_Bytes/10-4 314162023 3.936 ns/op 2540.39 MB/s BenchmarkIndexByte_Bytes/10-4 314113815 3.941 ns/op 2537.33 MB/s BenchmarkIndexByte_Bytes/10-4 294885310 4.064 ns/op 2460.91 MB/s BenchmarkIndexByte_Bytes/10-4 314282307 4.027 ns/op 2483.01 MB/s BenchmarkIndexByte_Bytes/10-4 314296830 3.817 ns/op 2620.12 MB/s BenchmarkIndexByte_Bytes/10-4 314340676 3.816 ns/op 2620.29 MB/s BenchmarkIndexByte_Bytes/32-4 276225354 4.457 ns/op 7179.66 MB/s BenchmarkIndexByte_Bytes/32-4 260178069 4.343 ns/op 7368.15 MB/s BenchmarkIndexByte_Bytes/32-4 276017940 4.345 ns/op 7364.81 MB/s BenchmarkIndexByte_Bytes/32-4 276095646 4.344 ns/op 7365.77 MB/s BenchmarkIndexByte_Bytes/32-4 276176505 4.344 ns/op 7366.10 MB/s BenchmarkIndexByte_Bytes/32-4 276170632 4.345 ns/op 7364.78 MB/s BenchmarkIndexByte_Bytes/32-4 276226575 4.344 ns/op 7367.18 MB/s BenchmarkIndexByte_Bytes/32-4 276286630 4.344 ns/op 7366.17 MB/s BenchmarkIndexByte_Bytes/32-4 276162496 4.344 ns/op 7366.96 MB/s BenchmarkIndexByte_Bytes/32-4 276234651 4.345 ns/op 7365.63 MB/s BenchmarkIndexByte_Bytes/4K-4 23652553 50.81 ns/op 80618.61 MB/s BenchmarkIndexByte_Bytes/4K-4 22962232 50.73 ns/op 80736.32 MB/s BenchmarkIndexByte_Bytes/4K-4 23640405 50.80 ns/op 80635.32 MB/s BenchmarkIndexByte_Bytes/4K-4 23651065 50.78 ns/op 80657.94 MB/s BenchmarkIndexByte_Bytes/4K-4 22944740 50.79 ns/op 80652.77 MB/s BenchmarkIndexByte_Bytes/4K-4 23636419 50.79 ns/op 80646.71 MB/s BenchmarkIndexByte_Bytes/4K-4 23653896 50.72 ns/op 80758.86 MB/s BenchmarkIndexByte_Bytes/4K-4 23660480 50.72 ns/op 80758.10 MB/s BenchmarkIndexByte_Bytes/4K-4 22710016 50.82 ns/op 80598.79 MB/s BenchmarkIndexByte_Bytes/4K-4 23657617 50.78 ns/op 80663.97 MB/s BenchmarkIndexByte_Bytes/4M-4 24884 48280 ns/op 86874.32 MB/s BenchmarkIndexByte_Bytes/4M-4 24874 48219 ns/op 86984.25 MB/s BenchmarkIndexByte_Bytes/4M-4 24898 48259 ns/op 86911.54 MB/s BenchmarkIndexByte_Bytes/4M-4 24880 48220 ns/op 86983.42 MB/s BenchmarkIndexByte_Bytes/4M-4 24871 48252 ns/op 86925.34 MB/s BenchmarkIndexByte_Bytes/4M-4 24859 48311 ns/op 86818.85 MB/s BenchmarkIndexByte_Bytes/4M-4 24888 48208 ns/op 87003.47 MB/s BenchmarkIndexByte_Bytes/4M-4 24909 48236 ns/op 86953.07 MB/s BenchmarkIndexByte_Bytes/4M-4 24871 48276 ns/op 86881.47 MB/s BenchmarkIndexByte_Bytes/4M-4 24847 48307 ns/op 86825.61 MB/s BenchmarkIndexByte_Bytes/64M-4 724 1456618 ns/op 46071.70 MB/s BenchmarkIndexByte_Bytes/64M-4 798 1443171 ns/op 46500.99 MB/s BenchmarkIndexByte_Bytes/64M-4 798 1436646 ns/op 46712.19 MB/s BenchmarkIndexByte_Bytes/64M-4 811 1439918 ns/op 46606.03 MB/s BenchmarkIndexByte_Bytes/64M-4 807 1440830 ns/op 46576.53 MB/s BenchmarkIndexByte_Bytes/64M-4 810 1438049 ns/op 46666.61 MB/s BenchmarkIndexByte_Bytes/64M-4 810 1443304 ns/op 46496.70 MB/s BenchmarkIndexByte_Bytes/64M-4 806 1436769 ns/op 46708.17 MB/s BenchmarkIndexByte_Bytes/64M-4 808 1467786 ns/op 45721.14 MB/s BenchmarkIndexByte_Bytes/64M-4 763 1445287 ns/op 46432.91 MB/s BenchmarkIndexRune_Bytes/10-4 95839266 12.48 ns/op 801.30 MB/s BenchmarkIndexRune_Bytes/10-4 96165758 12.48 ns/op 801.24 MB/s BenchmarkIndexRune_Bytes/10-4 96216031 12.48 ns/op 801.33 MB/s BenchmarkIndexRune_Bytes/10-4 96096064 12.48 ns/op 801.20 MB/s BenchmarkIndexRune_Bytes/10-4 95962428 12.48 ns/op 801.23 MB/s BenchmarkIndexRune_Bytes/10-4 96092756 12.48 ns/op 801.30 MB/s BenchmarkIndexRune_Bytes/10-4 96171847 12.48 ns/op 801.20 MB/s BenchmarkIndexRune_Bytes/10-4 96136251 12.48 ns/op 801.25 MB/s BenchmarkIndexRune_Bytes/10-4 95969649 12.48 ns/op 801.22 MB/s BenchmarkIndexRune_Bytes/10-4 96084915 12.48 ns/op 801.24 MB/s BenchmarkIndexRune_Bytes/32-4 90216297 13.29 ns/op 2407.12 MB/s BenchmarkIndexRune_Bytes/32-4 90261484 13.29 ns/op 2407.00 MB/s BenchmarkIndexRune_Bytes/32-4 90308226 13.30 ns/op 2406.84 MB/s BenchmarkIndexRune_Bytes/32-4 89968604 13.30 ns/op 2406.34 MB/s BenchmarkIndexRune_Bytes/32-4 90311148 13.30 ns/op 2406.31 MB/s BenchmarkIndexRune_Bytes/32-4 90183488 13.29 ns/op 2406.95 MB/s BenchmarkIndexRune_Bytes/32-4 90271126 13.29 ns/op 2407.20 MB/s BenchmarkIndexRune_Bytes/32-4 90202809 13.29 ns/op 2407.29 MB/s BenchmarkIndexRune_Bytes/32-4 90231092 13.30 ns/op 2406.53 MB/s BenchmarkIndexRune_Bytes/32-4 90236928 13.30 ns/op 2406.54 MB/s BenchmarkIndexRune_Bytes/4K-4 20845918 57.55 ns/op 71177.55 MB/s BenchmarkIndexRune_Bytes/4K-4 20650183 58.11 ns/op 70488.52 MB/s BenchmarkIndexRune_Bytes/4K-4 20819596 57.55 ns/op 71169.14 MB/s BenchmarkIndexRune_Bytes/4K-4 20836352 57.53 ns/op 71200.95 MB/s BenchmarkIndexRune_Bytes/4K-4 20851845 57.55 ns/op 71173.16 MB/s BenchmarkIndexRune_Bytes/4K-4 20853056 58.12 ns/op 70473.72 MB/s BenchmarkIndexRune_Bytes/4K-4 20835260 57.55 ns/op 71175.09 MB/s BenchmarkIndexRune_Bytes/4K-4 20840246 57.56 ns/op 71157.69 MB/s BenchmarkIndexRune_Bytes/4K-4 20837926 57.59 ns/op 71121.58 MB/s BenchmarkIndexRune_Bytes/4K-4 20862649 57.55 ns/op 71170.03 MB/s BenchmarkIndexRune_Bytes/4M-4 22138 54211 ns/op 77369.66 MB/s BenchmarkIndexRune_Bytes/4M-4 22159 54188 ns/op 77403.48 MB/s BenchmarkIndexRune_Bytes/4M-4 22158 54134 ns/op 77480.60 MB/s BenchmarkIndexRune_Bytes/4M-4 22164 54143 ns/op 77466.66 MB/s BenchmarkIndexRune_Bytes/4M-4 22167 54127 ns/op 77490.06 MB/s BenchmarkIndexRune_Bytes/4M-4 22143 54137 ns/op 77475.37 MB/s BenchmarkIndexRune_Bytes/4M-4 22140 54200 ns/op 77385.50 MB/s BenchmarkIndexRune_Bytes/4M-4 22155 54183 ns/op 77410.64 MB/s BenchmarkIndexRune_Bytes/4M-4 22146 54168 ns/op 77431.54 MB/s BenchmarkIndexRune_Bytes/4M-4 22143 54153 ns/op 77453.44 MB/s BenchmarkIndexRune_Bytes/64M-4 739 1525027 ns/op 44005.04 MB/s BenchmarkIndexRune_Bytes/64M-4 774 1516630 ns/op 44248.66 MB/s BenchmarkIndexRune_Bytes/64M-4 762 1520230 ns/op 44143.89 MB/s BenchmarkIndexRune_Bytes/64M-4 772 1517382 ns/op 44226.73 MB/s BenchmarkIndexRune_Bytes/64M-4 772 1521221 ns/op 44115.13 MB/s BenchmarkIndexRune_Bytes/64M-4 770 1516196 ns/op 44261.35 MB/s BenchmarkIndexRune_Bytes/64M-4 771 1540166 ns/op 43572.49 MB/s BenchmarkIndexRune_Bytes/64M-4 766 1532765 ns/op 43782.88 MB/s BenchmarkIndexRune_Bytes/64M-4 764 1523070 ns/op 44061.59 MB/s BenchmarkIndexRune_Bytes/64M-4 769 1526562 ns/op 43960.78 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 186263475 6.241 ns/op 1602.40 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192280251 6.240 ns/op 1602.65 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184290986 6.239 ns/op 1602.75 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192321326 6.240 ns/op 1602.44 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192317818 6.241 ns/op 1602.43 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192314493 6.240 ns/op 1602.69 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192304893 6.240 ns/op 1602.45 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192328508 6.240 ns/op 1602.63 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 185212975 6.474 ns/op 1544.74 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184330693 6.239 ns/op 1602.70 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176840217 6.786 ns/op 4715.41 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176804926 6.786 ns/op 4715.48 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176836142 6.788 ns/op 4714.46 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176799447 6.787 ns/op 4715.18 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176834083 6.787 ns/op 4714.89 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176737435 6.788 ns/op 4714.52 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176807882 6.786 ns/op 4715.82 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176823048 6.787 ns/op 4714.73 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176837175 6.787 ns/op 4715.09 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176825703 6.787 ns/op 4714.74 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22612179 53.06 ns/op 77192.95 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22598786 53.06 ns/op 77194.90 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22631638 53.06 ns/op 77200.04 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22614364 53.06 ns/op 77198.92 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22604469 53.06 ns/op 77197.88 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22604605 53.06 ns/op 77192.08 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22603801 53.07 ns/op 77184.74 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22611697 53.06 ns/op 77193.37 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22606981 53.07 ns/op 77184.90 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22605265 53.06 ns/op 77192.80 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24837 48337 ns/op 86772.66 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24822 48339 ns/op 86769.29 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24842 48330 ns/op 86784.51 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24852 48335 ns/op 86776.15 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24834 48307 ns/op 86825.20 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24828 48346 ns/op 86755.75 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24836 48341 ns/op 86765.63 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24842 48289 ns/op 86857.74 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24820 48357 ns/op 86736.40 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24822 48300 ns/op 86839.36 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 756 1453073 ns/op 46184.09 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 796 1451295 ns/op 46240.67 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 802 1445225 ns/op 46434.88 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 805 1449252 ns/op 46305.88 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 800 1444934 ns/op 46444.23 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 804 1451489 ns/op 46234.51 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 801 1447278 ns/op 46369.03 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 806 1445098 ns/op 46438.98 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 810 1460165 ns/op 45959.79 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 805 1458351 ns/op 46016.94 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368611952 3.255 ns/op 3071.99 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368615133 3.255 ns/op 3072.13 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368625508 3.256 ns/op 3071.67 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368646459 3.255 ns/op 3072.10 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368578453 3.255 ns/op 3072.02 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368665904 3.256 ns/op 3071.66 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368602046 3.255 ns/op 3072.20 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368632574 3.255 ns/op 3071.82 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368647375 3.256 ns/op 3071.46 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368647953 3.255 ns/op 3072.16 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340303792 3.526 ns/op 9074.42 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340253626 3.526 ns/op 9074.60 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340257470 3.526 ns/op 9074.47 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340239008 3.526 ns/op 9074.29 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340178737 3.527 ns/op 9073.63 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340265185 3.527 ns/op 9071.74 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340169934 3.527 ns/op 9074.04 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340274293 3.527 ns/op 9073.54 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340271262 3.527 ns/op 9073.68 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340260786 3.527 ns/op 9073.35 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24148266 49.64 ns/op 82506.80 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22438740 54.58 ns/op 75043.17 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22454271 55.30 ns/op 74064.44 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 21716874 51.01 ns/op 80303.51 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24176580 49.64 ns/op 82510.79 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22363964 49.65 ns/op 82503.04 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24168001 49.64 ns/op 82506.49 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22515499 49.65 ns/op 82505.01 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 21707358 55.27 ns/op 74107.50 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22555335 55.25 ns/op 74130.84 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24844 48233 ns/op 86959.28 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24868 48316 ns/op 86809.48 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24826 48231 ns/op 86963.03 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24868 48245 ns/op 86937.10 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24873 48330 ns/op 86784.04 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24834 48301 ns/op 86836.97 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24834 48229 ns/op 86967.04 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24830 48236 ns/op 86952.99 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24866 48246 ns/op 86936.52 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24861 48302 ns/op 86834.36 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 760 1438009 ns/op 46667.91 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 798 1441265 ns/op 46562.47 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 800 1438763 ns/op 46643.45 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 802 1450679 ns/op 46260.31 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 805 1449835 ns/op 46287.25 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 807 1445291 ns/op 46432.76 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 807 1446441 ns/op 46395.85 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 807 1441643 ns/op 46550.26 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 810 1444787 ns/op 46448.95 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 810 1446783 ns/op 46384.88 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2125.140s strcase-0.0.5/internal/benchtest/results/AMD-EPYC-9R14/strcase.10.1707000584.3ecb49c8.txt 0000664 0000000 0000000 00000276704 14720254634 0027224 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: AMD EPYC 9R14 BenchmarkIndexRune-4 98187218 12.21 ns/op BenchmarkIndexRune-4 98202806 12.21 ns/op BenchmarkIndexRune-4 98200074 12.21 ns/op BenchmarkIndexRune-4 98213094 12.21 ns/op BenchmarkIndexRune-4 98261508 12.21 ns/op BenchmarkIndexRune-4 98249367 12.21 ns/op BenchmarkIndexRune-4 98219452 12.21 ns/op BenchmarkIndexRune-4 98111677 12.21 ns/op BenchmarkIndexRune-4 98272532 12.21 ns/op BenchmarkIndexRune-4 98219211 12.21 ns/op BenchmarkIndexRuneLongString-4 93937132 12.75 ns/op BenchmarkIndexRuneLongString-4 94079424 12.75 ns/op BenchmarkIndexRuneLongString-4 93901040 12.75 ns/op BenchmarkIndexRuneLongString-4 94079269 12.75 ns/op BenchmarkIndexRuneLongString-4 93855579 12.75 ns/op BenchmarkIndexRuneLongString-4 94029141 12.75 ns/op BenchmarkIndexRuneLongString-4 93894061 12.75 ns/op BenchmarkIndexRuneLongString-4 94121182 12.75 ns/op BenchmarkIndexRuneLongString-4 93570380 12.75 ns/op BenchmarkIndexRuneLongString-4 94150573 12.75 ns/op BenchmarkIndexRuneFastPath-4 210677566 5.696 ns/op BenchmarkIndexRuneFastPath-4 210663819 5.696 ns/op BenchmarkIndexRuneFastPath-4 205456039 5.696 ns/op BenchmarkIndexRuneFastPath-4 210646110 5.696 ns/op BenchmarkIndexRuneFastPath-4 210656874 5.696 ns/op BenchmarkIndexRuneFastPath-4 210682567 5.696 ns/op BenchmarkIndexRuneFastPath-4 210655990 5.696 ns/op BenchmarkIndexRuneFastPath-4 210667999 5.696 ns/op BenchmarkIndexRuneFastPath-4 210685242 5.697 ns/op BenchmarkIndexRuneFastPath-4 210681627 5.696 ns/op BenchmarkIndex-4 201065637 5.967 ns/op BenchmarkIndex-4 194919511 5.967 ns/op BenchmarkIndex-4 196363528 5.967 ns/op BenchmarkIndex-4 201102736 6.207 ns/op BenchmarkIndex-4 201091855 5.967 ns/op BenchmarkIndex-4 196917211 5.967 ns/op BenchmarkIndex-4 192364064 5.968 ns/op BenchmarkIndex-4 201102735 6.153 ns/op BenchmarkIndex-4 201098750 5.967 ns/op BenchmarkIndex-4 201084838 5.968 ns/op BenchmarkLastIndex-4 233696372 4.882 ns/op BenchmarkLastIndex-4 234285648 4.882 ns/op BenchmarkLastIndex-4 233347504 4.883 ns/op BenchmarkLastIndex-4 233154856 4.882 ns/op BenchmarkLastIndex-4 245811676 4.882 ns/op BenchmarkLastIndex-4 233298096 4.882 ns/op BenchmarkLastIndex-4 233148129 4.882 ns/op BenchmarkLastIndex-4 233299568 4.882 ns/op BenchmarkLastIndex-4 232869110 4.882 ns/op BenchmarkLastIndex-4 233800219 4.883 ns/op BenchmarkIndexByte-4 260963390 4.340 ns/op BenchmarkIndexByte-4 260967379 4.492 ns/op BenchmarkIndexByte-4 276476454 4.340 ns/op BenchmarkIndexByte-4 276486558 4.611 ns/op BenchmarkIndexByte-4 276500089 4.340 ns/op BenchmarkIndexByte-4 260746420 4.340 ns/op BenchmarkIndexByte-4 260597361 4.340 ns/op BenchmarkIndexByte-4 276456163 4.340 ns/op BenchmarkIndexByte-4 276432460 4.600 ns/op BenchmarkIndexByte-4 276521518 4.340 ns/op BenchmarkEqualFold/ASCII-4 144055653 8.269 ns/op BenchmarkEqualFold/ASCII-4 144152922 8.754 ns/op BenchmarkEqualFold/ASCII-4 142544214 8.357 ns/op BenchmarkEqualFold/ASCII-4 143535818 8.328 ns/op BenchmarkEqualFold/ASCII-4 144679429 8.318 ns/op BenchmarkEqualFold/ASCII-4 143640555 8.316 ns/op BenchmarkEqualFold/ASCII-4 142850223 8.358 ns/op BenchmarkEqualFold/ASCII-4 146556676 8.306 ns/op BenchmarkEqualFold/ASCII-4 145212074 8.364 ns/op BenchmarkEqualFold/ASCII-4 143343212 8.428 ns/op BenchmarkEqualFold/UnicodePrefix-4 35357845 34.16 ns/op BenchmarkEqualFold/UnicodePrefix-4 35377245 34.09 ns/op BenchmarkEqualFold/UnicodePrefix-4 35384730 34.11 ns/op BenchmarkEqualFold/UnicodePrefix-4 34724588 34.07 ns/op BenchmarkEqualFold/UnicodePrefix-4 35273862 34.17 ns/op BenchmarkEqualFold/UnicodePrefix-4 35386801 34.11 ns/op BenchmarkEqualFold/UnicodePrefix-4 35387583 34.04 ns/op BenchmarkEqualFold/UnicodePrefix-4 35394619 34.08 ns/op BenchmarkEqualFold/UnicodePrefix-4 35365202 34.16 ns/op BenchmarkEqualFold/UnicodePrefix-4 35377276 34.08 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45400135 26.43 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45370302 26.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45378745 26.49 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45376426 26.42 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45380905 26.47 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45377235 26.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45367814 26.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45430284 26.45 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45392626 26.46 ns/op BenchmarkEqualFold/UnicodeSuffix-4 45367677 26.44 ns/op BenchmarkIndexHard1-4 14715 81532 ns/op BenchmarkIndexHard1-4 14715 81542 ns/op BenchmarkIndexHard1-4 14715 81537 ns/op BenchmarkIndexHard1-4 14716 81539 ns/op BenchmarkIndexHard1-4 14716 81539 ns/op BenchmarkIndexHard1-4 14716 81540 ns/op BenchmarkIndexHard1-4 14715 81539 ns/op BenchmarkIndexHard1-4 14716 81541 ns/op BenchmarkIndexHard1-4 14716 81535 ns/op BenchmarkIndexHard1-4 14716 81535 ns/op BenchmarkIndexHard2-4 471 2526810 ns/op BenchmarkIndexHard2-4 468 2538313 ns/op BenchmarkIndexHard2-4 470 2536612 ns/op BenchmarkIndexHard2-4 469 2531425 ns/op BenchmarkIndexHard2-4 471 2534078 ns/op BenchmarkIndexHard2-4 471 2532145 ns/op BenchmarkIndexHard2-4 471 2537664 ns/op BenchmarkIndexHard2-4 471 2522291 ns/op BenchmarkIndexHard2-4 470 2522397 ns/op BenchmarkIndexHard2-4 471 2537866 ns/op BenchmarkIndexHard3-4 579 2047985 ns/op BenchmarkIndexHard3-4 579 2059030 ns/op BenchmarkIndexHard3-4 578 2047152 ns/op BenchmarkIndexHard3-4 568 2047934 ns/op BenchmarkIndexHard3-4 565 2048988 ns/op BenchmarkIndexHard3-4 566 2069036 ns/op BenchmarkIndexHard3-4 578 2074905 ns/op BenchmarkIndexHard3-4 578 2086342 ns/op BenchmarkIndexHard3-4 578 2080724 ns/op BenchmarkIndexHard3-4 577 2049837 ns/op BenchmarkIndexHard4-4 699 1691970 ns/op BenchmarkIndexHard4-4 700 1691872 ns/op BenchmarkIndexHard4-4 700 1692068 ns/op BenchmarkIndexHard4-4 700 1691946 ns/op BenchmarkIndexHard4-4 700 1691887 ns/op BenchmarkIndexHard4-4 700 1691953 ns/op BenchmarkIndexHard4-4 700 1691907 ns/op BenchmarkIndexHard4-4 700 1692201 ns/op BenchmarkIndexHard4-4 700 1691962 ns/op BenchmarkIndexHard4-4 700 1691767 ns/op BenchmarkLastIndexHard1-4 709 1663130 ns/op BenchmarkLastIndexHard1-4 709 1663077 ns/op BenchmarkLastIndexHard1-4 709 1663219 ns/op BenchmarkLastIndexHard1-4 709 1663090 ns/op BenchmarkLastIndexHard1-4 709 1663033 ns/op BenchmarkLastIndexHard1-4 709 1663072 ns/op BenchmarkLastIndexHard1-4 709 1663123 ns/op BenchmarkLastIndexHard1-4 709 1662934 ns/op BenchmarkLastIndexHard1-4 709 1663131 ns/op BenchmarkLastIndexHard1-4 709 1663496 ns/op BenchmarkLastIndexHard2-4 709 1663394 ns/op BenchmarkLastIndexHard2-4 709 1663305 ns/op BenchmarkLastIndexHard2-4 709 1663219 ns/op BenchmarkLastIndexHard2-4 709 1663107 ns/op BenchmarkLastIndexHard2-4 709 1663365 ns/op BenchmarkLastIndexHard2-4 709 1663214 ns/op BenchmarkLastIndexHard2-4 709 1663155 ns/op BenchmarkLastIndexHard2-4 709 1663099 ns/op BenchmarkLastIndexHard2-4 709 1663268 ns/op BenchmarkLastIndexHard2-4 709 1663097 ns/op BenchmarkLastIndexHard3-4 709 1663817 ns/op BenchmarkLastIndexHard3-4 709 1663701 ns/op BenchmarkLastIndexHard3-4 709 1663881 ns/op BenchmarkLastIndexHard3-4 709 1663585 ns/op BenchmarkLastIndexHard3-4 709 1663642 ns/op BenchmarkLastIndexHard3-4 709 1663638 ns/op BenchmarkLastIndexHard3-4 709 1663763 ns/op BenchmarkLastIndexHard3-4 709 1663701 ns/op BenchmarkLastIndexHard3-4 709 1663658 ns/op BenchmarkLastIndexHard3-4 709 1663803 ns/op BenchmarkCountHard1-4 14713 81551 ns/op BenchmarkCountHard1-4 14713 81553 ns/op BenchmarkCountHard1-4 14712 81567 ns/op BenchmarkCountHard1-4 14712 81555 ns/op BenchmarkCountHard1-4 14710 81556 ns/op BenchmarkCountHard1-4 14712 81557 ns/op BenchmarkCountHard1-4 14713 81552 ns/op BenchmarkCountHard1-4 14712 81555 ns/op BenchmarkCountHard1-4 14712 81552 ns/op BenchmarkCountHard1-4 14713 81557 ns/op BenchmarkCountHard2-4 469 2530817 ns/op BenchmarkCountHard2-4 471 2532434 ns/op BenchmarkCountHard2-4 469 2531850 ns/op BenchmarkCountHard2-4 469 2534645 ns/op BenchmarkCountHard2-4 469 2533345 ns/op BenchmarkCountHard2-4 469 2530531 ns/op BenchmarkCountHard2-4 470 2532478 ns/op BenchmarkCountHard2-4 469 2531691 ns/op BenchmarkCountHard2-4 470 2532336 ns/op BenchmarkCountHard2-4 470 2532945 ns/op BenchmarkCountHard3-4 571 2091328 ns/op BenchmarkCountHard3-4 572 2091544 ns/op BenchmarkCountHard3-4 568 2090636 ns/op BenchmarkCountHard3-4 571 2082950 ns/op BenchmarkCountHard3-4 568 2083241 ns/op BenchmarkCountHard3-4 576 2090993 ns/op BenchmarkCountHard3-4 567 2086852 ns/op BenchmarkCountHard3-4 577 2091602 ns/op BenchmarkCountHard3-4 578 2087903 ns/op BenchmarkCountHard3-4 573 2091559 ns/op BenchmarkIndexTorture-4 67276 17844 ns/op BenchmarkIndexTorture-4 67233 17839 ns/op BenchmarkIndexTorture-4 67294 17835 ns/op BenchmarkIndexTorture-4 67299 17837 ns/op BenchmarkIndexTorture-4 67261 17838 ns/op BenchmarkIndexTorture-4 67335 17841 ns/op BenchmarkIndexTorture-4 67286 17838 ns/op BenchmarkIndexTorture-4 67312 17840 ns/op BenchmarkIndexTorture-4 67214 17839 ns/op BenchmarkIndexTorture-4 67260 17836 ns/op BenchmarkCountTorture-4 61569 19515 ns/op BenchmarkCountTorture-4 61490 19511 ns/op BenchmarkCountTorture-4 61509 19509 ns/op BenchmarkCountTorture-4 61467 19512 ns/op BenchmarkCountTorture-4 61549 19517 ns/op BenchmarkCountTorture-4 61490 19514 ns/op BenchmarkCountTorture-4 61545 19516 ns/op BenchmarkCountTorture-4 61554 19511 ns/op BenchmarkCountTorture-4 61503 19515 ns/op BenchmarkCountTorture-4 61472 19515 ns/op BenchmarkCountTortureOverlapping-4 249 4746786 ns/op BenchmarkCountTortureOverlapping-4 250 4742813 ns/op BenchmarkCountTortureOverlapping-4 250 4746908 ns/op BenchmarkCountTortureOverlapping-4 250 4743934 ns/op BenchmarkCountTortureOverlapping-4 250 4973243 ns/op BenchmarkCountTortureOverlapping-4 250 4746324 ns/op BenchmarkCountTortureOverlapping-4 250 4746094 ns/op BenchmarkCountTortureOverlapping-4 250 4743505 ns/op BenchmarkCountTortureOverlapping-4 250 4748426 ns/op BenchmarkCountTortureOverlapping-4 250 4745055 ns/op BenchmarkCountByte/10-4 268113990 4.476 ns/op 2234.18 MB/s BenchmarkCountByte/10-4 268116092 4.475 ns/op 2234.45 MB/s BenchmarkCountByte/10-4 268100092 4.476 ns/op 2234.24 MB/s BenchmarkCountByte/10-4 268087280 4.475 ns/op 2234.46 MB/s BenchmarkCountByte/10-4 268112054 4.476 ns/op 2234.33 MB/s BenchmarkCountByte/10-4 268097265 4.475 ns/op 2234.52 MB/s BenchmarkCountByte/10-4 268128894 4.476 ns/op 2234.21 MB/s BenchmarkCountByte/10-4 268127235 4.476 ns/op 2234.38 MB/s BenchmarkCountByte/10-4 268037143 4.476 ns/op 2234.28 MB/s BenchmarkCountByte/10-4 268099339 4.476 ns/op 2233.99 MB/s BenchmarkCountByte/32-4 228935461 5.255 ns/op 6089.69 MB/s BenchmarkCountByte/32-4 228878150 5.263 ns/op 6080.75 MB/s BenchmarkCountByte/32-4 229258338 5.248 ns/op 6098.08 MB/s BenchmarkCountByte/32-4 228469833 5.244 ns/op 6101.75 MB/s BenchmarkCountByte/32-4 228429490 5.241 ns/op 6105.60 MB/s BenchmarkCountByte/32-4 227996746 5.247 ns/op 6098.74 MB/s BenchmarkCountByte/32-4 229421148 5.271 ns/op 6071.48 MB/s BenchmarkCountByte/32-4 229838814 5.257 ns/op 6086.72 MB/s BenchmarkCountByte/32-4 229146897 5.239 ns/op 6107.66 MB/s BenchmarkCountByte/32-4 228498216 5.274 ns/op 6067.65 MB/s BenchmarkCountByte/4K-4 16743433 71.68 ns/op 57140.19 MB/s BenchmarkCountByte/4K-4 16732938 71.65 ns/op 57166.88 MB/s BenchmarkCountByte/4K-4 16717278 71.68 ns/op 57140.99 MB/s BenchmarkCountByte/4K-4 16721946 71.72 ns/op 57110.92 MB/s BenchmarkCountByte/4K-4 16712996 71.68 ns/op 57142.32 MB/s BenchmarkCountByte/4K-4 16724642 71.58 ns/op 57225.57 MB/s BenchmarkCountByte/4K-4 16716240 71.66 ns/op 57161.32 MB/s BenchmarkCountByte/4K-4 16731165 71.72 ns/op 57111.63 MB/s BenchmarkCountByte/4K-4 16728621 71.66 ns/op 57160.23 MB/s BenchmarkCountByte/4K-4 16752393 71.70 ns/op 57123.92 MB/s BenchmarkCountByte/4M-4 17143 70027 ns/op 59895.24 MB/s BenchmarkCountByte/4M-4 17140 70051 ns/op 59874.77 MB/s BenchmarkCountByte/4M-4 17136 70001 ns/op 59917.52 MB/s BenchmarkCountByte/4M-4 17137 70010 ns/op 59909.89 MB/s BenchmarkCountByte/4M-4 17143 70024 ns/op 59898.50 MB/s BenchmarkCountByte/4M-4 17139 70040 ns/op 59884.64 MB/s BenchmarkCountByte/4M-4 17132 70016 ns/op 59904.55 MB/s BenchmarkCountByte/4M-4 17136 70057 ns/op 59870.01 MB/s BenchmarkCountByte/4M-4 17136 70033 ns/op 59890.01 MB/s BenchmarkCountByte/4M-4 17142 70027 ns/op 59895.53 MB/s BenchmarkCountByte/64M-4 788 1480068 ns/op 45341.74 MB/s BenchmarkCountByte/64M-4 788 1476020 ns/op 45466.08 MB/s BenchmarkCountByte/64M-4 783 1492131 ns/op 44975.19 MB/s BenchmarkCountByte/64M-4 790 1489739 ns/op 45047.39 MB/s BenchmarkCountByte/64M-4 796 1497443 ns/op 44815.64 MB/s BenchmarkCountByte/64M-4 796 1480666 ns/op 45323.43 MB/s BenchmarkCountByte/64M-4 794 1498008 ns/op 44798.73 MB/s BenchmarkCountByte/64M-4 772 1506393 ns/op 44549.38 MB/s BenchmarkCountByte/64M-4 770 1527723 ns/op 43927.38 MB/s BenchmarkCountByte/64M-4 747 1549532 ns/op 43309.11 MB/s BenchmarkIndexAnyASCII/1:1-4 184298457 6.237 ns/op BenchmarkIndexAnyASCII/1:1-4 192385904 6.510 ns/op BenchmarkIndexAnyASCII/1:1-4 192347058 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 184369610 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 192346254 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 192376354 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 184348872 6.239 ns/op BenchmarkIndexAnyASCII/1:1-4 184354806 6.238 ns/op BenchmarkIndexAnyASCII/1:1-4 184348383 6.345 ns/op BenchmarkIndexAnyASCII/1:1-4 192329318 6.239 ns/op BenchmarkIndexAnyASCII/1:2-4 142689492 8.409 ns/op BenchmarkIndexAnyASCII/1:2-4 142697276 8.409 ns/op BenchmarkIndexAnyASCII/1:2-4 141206323 8.410 ns/op BenchmarkIndexAnyASCII/1:2-4 142708867 8.408 ns/op BenchmarkIndexAnyASCII/1:2-4 142713152 8.409 ns/op BenchmarkIndexAnyASCII/1:2-4 142714015 8.409 ns/op BenchmarkIndexAnyASCII/1:2-4 142723189 8.409 ns/op BenchmarkIndexAnyASCII/1:2-4 142717822 8.461 ns/op BenchmarkIndexAnyASCII/1:2-4 142695199 8.408 ns/op BenchmarkIndexAnyASCII/1:2-4 142698796 8.409 ns/op BenchmarkIndexAnyASCII/1:4-4 142699920 8.410 ns/op BenchmarkIndexAnyASCII/1:4-4 142701087 8.408 ns/op BenchmarkIndexAnyASCII/1:4-4 142724193 8.409 ns/op BenchmarkIndexAnyASCII/1:4-4 142708788 8.411 ns/op BenchmarkIndexAnyASCII/1:4-4 142702213 8.408 ns/op BenchmarkIndexAnyASCII/1:4-4 142702002 8.606 ns/op BenchmarkIndexAnyASCII/1:4-4 142716528 8.408 ns/op BenchmarkIndexAnyASCII/1:4-4 140679286 8.409 ns/op BenchmarkIndexAnyASCII/1:4-4 142695622 8.408 ns/op BenchmarkIndexAnyASCII/1:4-4 142712792 8.409 ns/op BenchmarkIndexAnyASCII/1:8-4 142711786 8.409 ns/op BenchmarkIndexAnyASCII/1:8-4 142714977 8.457 ns/op BenchmarkIndexAnyASCII/1:8-4 142716922 8.637 ns/op BenchmarkIndexAnyASCII/1:8-4 142711786 8.408 ns/op BenchmarkIndexAnyASCII/1:8-4 142712258 8.409 ns/op BenchmarkIndexAnyASCII/1:8-4 142709341 8.410 ns/op BenchmarkIndexAnyASCII/1:8-4 142707247 8.408 ns/op BenchmarkIndexAnyASCII/1:8-4 142702716 8.408 ns/op BenchmarkIndexAnyASCII/1:8-4 142696060 8.409 ns/op BenchmarkIndexAnyASCII/1:8-4 142693588 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142685289 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142722344 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142711459 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142713320 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142708362 8.408 ns/op BenchmarkIndexAnyASCII/1:16-4 142715566 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142706527 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142691115 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142711770 8.409 ns/op BenchmarkIndexAnyASCII/1:16-4 142717550 8.409 ns/op BenchmarkIndexAnyASCII/1:32-4 138248913 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138253983 8.681 ns/op BenchmarkIndexAnyASCII/1:32-4 138255442 8.681 ns/op BenchmarkIndexAnyASCII/1:32-4 138260761 8.680 ns/op BenchmarkIndexAnyASCII/1:32-4 138244045 8.680 ns/op BenchmarkIndexAnyASCII/1:32-4 138259586 8.680 ns/op BenchmarkIndexAnyASCII/1:32-4 138233601 8.679 ns/op BenchmarkIndexAnyASCII/1:32-4 138242821 8.681 ns/op BenchmarkIndexAnyASCII/1:32-4 138254713 8.681 ns/op BenchmarkIndexAnyASCII/1:32-4 138257554 8.681 ns/op BenchmarkIndexAnyASCII/1:64-4 142700376 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142714854 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142695170 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142724436 8.408 ns/op BenchmarkIndexAnyASCII/1:64-4 142710970 8.497 ns/op BenchmarkIndexAnyASCII/1:64-4 141821647 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142713819 8.410 ns/op BenchmarkIndexAnyASCII/1:64-4 142705994 8.409 ns/op BenchmarkIndexAnyASCII/1:64-4 142708558 8.553 ns/op BenchmarkIndexAnyASCII/1:64-4 142693399 8.409 ns/op BenchmarkIndexAnyASCII/16:1-4 192340371 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192347547 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192356304 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192351456 6.238 ns/op BenchmarkIndexAnyASCII/16:1-4 192329768 6.239 ns/op BenchmarkIndexAnyASCII/16:1-4 192363708 6.238 ns/op BenchmarkIndexAnyASCII/16:1-4 191293047 6.238 ns/op BenchmarkIndexAnyASCII/16:1-4 185057426 6.509 ns/op BenchmarkIndexAnyASCII/16:1-4 192299838 6.238 ns/op BenchmarkIndexAnyASCII/16:1-4 192360054 6.509 ns/op BenchmarkIndexAnyASCII/16:2-4 65315545 18.36 ns/op BenchmarkIndexAnyASCII/16:2-4 65143188 18.38 ns/op BenchmarkIndexAnyASCII/16:2-4 65296779 18.37 ns/op BenchmarkIndexAnyASCII/16:2-4 65477421 18.46 ns/op BenchmarkIndexAnyASCII/16:2-4 65497899 18.36 ns/op BenchmarkIndexAnyASCII/16:2-4 65473455 18.37 ns/op BenchmarkIndexAnyASCII/16:2-4 65549202 18.34 ns/op BenchmarkIndexAnyASCII/16:2-4 65340974 18.40 ns/op BenchmarkIndexAnyASCII/16:2-4 65451632 18.48 ns/op BenchmarkIndexAnyASCII/16:2-4 65277562 18.42 ns/op BenchmarkIndexAnyASCII/16:4-4 58079305 20.69 ns/op BenchmarkIndexAnyASCII/16:4-4 58073486 20.69 ns/op BenchmarkIndexAnyASCII/16:4-4 57982064 20.68 ns/op BenchmarkIndexAnyASCII/16:4-4 58068007 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 58047836 20.68 ns/op BenchmarkIndexAnyASCII/16:4-4 58025244 20.69 ns/op BenchmarkIndexAnyASCII/16:4-4 57937471 20.69 ns/op BenchmarkIndexAnyASCII/16:4-4 57969154 20.70 ns/op BenchmarkIndexAnyASCII/16:4-4 57987022 20.69 ns/op BenchmarkIndexAnyASCII/16:4-4 58032901 20.70 ns/op BenchmarkIndexAnyASCII/16:8-4 46074422 26.05 ns/op BenchmarkIndexAnyASCII/16:8-4 46017582 26.05 ns/op BenchmarkIndexAnyASCII/16:8-4 46055024 26.06 ns/op BenchmarkIndexAnyASCII/16:8-4 46069453 26.05 ns/op BenchmarkIndexAnyASCII/16:8-4 46026566 26.05 ns/op BenchmarkIndexAnyASCII/16:8-4 45950764 26.06 ns/op BenchmarkIndexAnyASCII/16:8-4 45956059 26.06 ns/op BenchmarkIndexAnyASCII/16:8-4 46023530 26.05 ns/op BenchmarkIndexAnyASCII/16:8-4 46021500 26.07 ns/op BenchmarkIndexAnyASCII/16:8-4 46043254 26.06 ns/op BenchmarkIndexAnyASCII/16:16-4 30372345 39.43 ns/op BenchmarkIndexAnyASCII/16:16-4 30480219 39.38 ns/op BenchmarkIndexAnyASCII/16:16-4 30344120 39.40 ns/op BenchmarkIndexAnyASCII/16:16-4 30468240 39.38 ns/op BenchmarkIndexAnyASCII/16:16-4 30471535 39.38 ns/op BenchmarkIndexAnyASCII/16:16-4 30460072 39.39 ns/op BenchmarkIndexAnyASCII/16:16-4 30393538 39.40 ns/op BenchmarkIndexAnyASCII/16:16-4 30456300 39.42 ns/op BenchmarkIndexAnyASCII/16:16-4 30355627 39.42 ns/op BenchmarkIndexAnyASCII/16:16-4 30453210 39.40 ns/op BenchmarkIndexAnyASCII/16:32-4 18440221 65.03 ns/op BenchmarkIndexAnyASCII/16:32-4 18411433 65.05 ns/op BenchmarkIndexAnyASCII/16:32-4 18399604 65.06 ns/op BenchmarkIndexAnyASCII/16:32-4 18457969 65.07 ns/op BenchmarkIndexAnyASCII/16:32-4 18466532 65.03 ns/op BenchmarkIndexAnyASCII/16:32-4 18454974 65.04 ns/op BenchmarkIndexAnyASCII/16:32-4 18431101 65.04 ns/op BenchmarkIndexAnyASCII/16:32-4 18441232 65.06 ns/op BenchmarkIndexAnyASCII/16:32-4 18448048 65.05 ns/op BenchmarkIndexAnyASCII/16:32-4 18423812 65.05 ns/op BenchmarkIndexAnyASCII/16:64-4 9180684 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9162213 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9160466 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9154498 130.8 ns/op BenchmarkIndexAnyASCII/16:64-4 9181122 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9147336 130.8 ns/op BenchmarkIndexAnyASCII/16:64-4 9176452 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9150769 131.0 ns/op BenchmarkIndexAnyASCII/16:64-4 9166310 130.9 ns/op BenchmarkIndexAnyASCII/16:64-4 9164120 130.9 ns/op BenchmarkIndexAnyASCII/256:1-4 134065364 8.951 ns/op BenchmarkIndexAnyASCII/256:1-4 134069925 8.951 ns/op BenchmarkIndexAnyASCII/256:1-4 134066270 8.951 ns/op BenchmarkIndexAnyASCII/256:1-4 134070168 8.952 ns/op BenchmarkIndexAnyASCII/256:1-4 134065197 8.951 ns/op BenchmarkIndexAnyASCII/256:1-4 134077230 8.950 ns/op BenchmarkIndexAnyASCII/256:1-4 134059321 8.951 ns/op BenchmarkIndexAnyASCII/256:1-4 134058820 8.951 ns/op BenchmarkIndexAnyASCII/256:1-4 134062852 8.951 ns/op BenchmarkIndexAnyASCII/256:1-4 134061744 8.951 ns/op BenchmarkIndexAnyASCII/256:2-4 7983823 150.1 ns/op BenchmarkIndexAnyASCII/256:2-4 7854543 150.6 ns/op BenchmarkIndexAnyASCII/256:2-4 7920607 151.1 ns/op BenchmarkIndexAnyASCII/256:2-4 7978376 150.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7966291 150.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7981884 151.2 ns/op BenchmarkIndexAnyASCII/256:2-4 7982462 150.8 ns/op BenchmarkIndexAnyASCII/256:2-4 7960634 151.3 ns/op BenchmarkIndexAnyASCII/256:2-4 7996268 151.9 ns/op BenchmarkIndexAnyASCII/256:2-4 7913250 151.0 ns/op BenchmarkIndexAnyASCII/256:4-4 7769834 155.0 ns/op BenchmarkIndexAnyASCII/256:4-4 7766476 154.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7820882 154.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7779546 154.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7701770 153.5 ns/op BenchmarkIndexAnyASCII/256:4-4 7778374 155.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7752170 154.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7693576 154.3 ns/op BenchmarkIndexAnyASCII/256:4-4 7689178 154.5 ns/op BenchmarkIndexAnyASCII/256:4-4 7807245 154.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7386918 163.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7227181 163.7 ns/op BenchmarkIndexAnyASCII/256:8-4 7350414 163.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7324550 163.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7267215 163.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7286679 163.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7393989 163.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7335698 162.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7368764 164.0 ns/op BenchmarkIndexAnyASCII/256:8-4 7259302 164.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7029529 170.5 ns/op BenchmarkIndexAnyASCII/256:16-4 7027272 170.5 ns/op BenchmarkIndexAnyASCII/256:16-4 7043509 170.6 ns/op BenchmarkIndexAnyASCII/256:16-4 7022889 170.5 ns/op BenchmarkIndexAnyASCII/256:16-4 7040700 170.5 ns/op BenchmarkIndexAnyASCII/256:16-4 7054317 170.5 ns/op BenchmarkIndexAnyASCII/256:16-4 7029676 170.4 ns/op BenchmarkIndexAnyASCII/256:16-4 7037361 170.5 ns/op BenchmarkIndexAnyASCII/256:16-4 7046930 170.4 ns/op BenchmarkIndexAnyASCII/256:16-4 7033606 170.5 ns/op BenchmarkIndexAnyASCII/256:32-4 6046728 197.5 ns/op BenchmarkIndexAnyASCII/256:32-4 6074136 197.6 ns/op BenchmarkIndexAnyASCII/256:32-4 6055566 198.0 ns/op BenchmarkIndexAnyASCII/256:32-4 6070866 197.4 ns/op BenchmarkIndexAnyASCII/256:32-4 6084574 198.1 ns/op BenchmarkIndexAnyASCII/256:32-4 6055981 198.1 ns/op BenchmarkIndexAnyASCII/256:32-4 6067480 198.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6055674 197.5 ns/op BenchmarkIndexAnyASCII/256:32-4 6074026 198.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6072944 198.2 ns/op BenchmarkIndexAnyASCII/256:64-4 4608028 260.1 ns/op BenchmarkIndexAnyASCII/256:64-4 4612455 260.3 ns/op BenchmarkIndexAnyASCII/256:64-4 4624378 260.0 ns/op BenchmarkIndexAnyASCII/256:64-4 4617128 260.1 ns/op BenchmarkIndexAnyASCII/256:64-4 4619224 259.9 ns/op BenchmarkIndexAnyASCII/256:64-4 4613746 259.8 ns/op BenchmarkIndexAnyASCII/256:64-4 4612116 260.2 ns/op BenchmarkIndexAnyASCII/256:64-4 4612262 260.1 ns/op BenchmarkIndexAnyASCII/256:64-4 4599744 260.0 ns/op BenchmarkIndexAnyASCII/256:64-4 4609593 260.1 ns/op BenchmarkIndexAnyUTF8/1:1-4 315931970 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 316042036 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 340313754 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 316016761 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 315968756 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 340302192 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 315903037 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 316020181 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 315949449 3.526 ns/op BenchmarkIndexAnyUTF8/1:1-4 340347916 3.526 ns/op BenchmarkIndexAnyUTF8/1:2-4 139147954 8.410 ns/op BenchmarkIndexAnyUTF8/1:2-4 134981956 8.410 ns/op BenchmarkIndexAnyUTF8/1:2-4 142719660 8.409 ns/op BenchmarkIndexAnyUTF8/1:2-4 142710429 8.408 ns/op BenchmarkIndexAnyUTF8/1:2-4 140266489 8.409 ns/op BenchmarkIndexAnyUTF8/1:2-4 140461952 8.413 ns/op BenchmarkIndexAnyUTF8/1:2-4 142711179 8.409 ns/op BenchmarkIndexAnyUTF8/1:2-4 142712485 8.487 ns/op BenchmarkIndexAnyUTF8/1:2-4 142710015 8.409 ns/op BenchmarkIndexAnyUTF8/1:2-4 142704175 8.408 ns/op BenchmarkIndexAnyUTF8/1:4-4 142713972 8.409 ns/op BenchmarkIndexAnyUTF8/1:4-4 142710163 8.409 ns/op BenchmarkIndexAnyUTF8/1:4-4 142708819 8.409 ns/op BenchmarkIndexAnyUTF8/1:4-4 142713478 8.596 ns/op BenchmarkIndexAnyUTF8/1:4-4 142692490 8.408 ns/op BenchmarkIndexAnyUTF8/1:4-4 142691247 8.409 ns/op BenchmarkIndexAnyUTF8/1:4-4 142688636 8.409 ns/op BenchmarkIndexAnyUTF8/1:4-4 141050286 8.409 ns/op BenchmarkIndexAnyUTF8/1:4-4 142717521 8.658 ns/op BenchmarkIndexAnyUTF8/1:4-4 142720058 8.409 ns/op BenchmarkIndexAnyUTF8/1:8-4 142706967 8.409 ns/op BenchmarkIndexAnyUTF8/1:8-4 142710460 8.409 ns/op BenchmarkIndexAnyUTF8/1:8-4 142705802 8.410 ns/op BenchmarkIndexAnyUTF8/1:8-4 142019578 8.409 ns/op BenchmarkIndexAnyUTF8/1:8-4 142702218 8.679 ns/op BenchmarkIndexAnyUTF8/1:8-4 142278634 8.410 ns/op BenchmarkIndexAnyUTF8/1:8-4 142706149 8.409 ns/op BenchmarkIndexAnyUTF8/1:8-4 142707478 8.408 ns/op BenchmarkIndexAnyUTF8/1:8-4 142699717 8.421 ns/op BenchmarkIndexAnyUTF8/1:8-4 142707648 8.408 ns/op BenchmarkIndexAnyUTF8/1:16-4 142701649 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142716038 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142692906 8.408 ns/op BenchmarkIndexAnyUTF8/1:16-4 142700446 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142701402 8.408 ns/op BenchmarkIndexAnyUTF8/1:16-4 142712763 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142684203 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142683609 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142678065 8.409 ns/op BenchmarkIndexAnyUTF8/1:16-4 142714178 8.408 ns/op BenchmarkIndexAnyUTF8/1:32-4 138246331 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 138251772 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 138244879 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 138242593 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 134070211 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 138238323 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 138241364 8.679 ns/op BenchmarkIndexAnyUTF8/1:32-4 138231543 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 138256671 8.680 ns/op BenchmarkIndexAnyUTF8/1:32-4 138249346 8.680 ns/op BenchmarkIndexAnyUTF8/1:64-4 142708664 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142710626 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142695919 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142703955 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142678598 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142709192 8.411 ns/op BenchmarkIndexAnyUTF8/1:64-4 142700439 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142705162 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142715217 8.409 ns/op BenchmarkIndexAnyUTF8/1:64-4 142702464 8.408 ns/op BenchmarkIndexAnyUTF8/16:1-4 93314991 13.22 ns/op BenchmarkIndexAnyUTF8/16:1-4 94396912 13.29 ns/op BenchmarkIndexAnyUTF8/16:1-4 94125914 13.19 ns/op BenchmarkIndexAnyUTF8/16:1-4 87524146 13.28 ns/op BenchmarkIndexAnyUTF8/16:1-4 90900572 13.28 ns/op BenchmarkIndexAnyUTF8/16:1-4 95316133 13.24 ns/op BenchmarkIndexAnyUTF8/16:1-4 92743400 13.16 ns/op BenchmarkIndexAnyUTF8/16:1-4 94553817 13.49 ns/op BenchmarkIndexAnyUTF8/16:1-4 88871522 13.78 ns/op BenchmarkIndexAnyUTF8/16:1-4 85513627 13.35 ns/op BenchmarkIndexAnyUTF8/16:2-4 35105748 35.68 ns/op BenchmarkIndexAnyUTF8/16:2-4 35069778 35.58 ns/op BenchmarkIndexAnyUTF8/16:2-4 34560122 35.23 ns/op BenchmarkIndexAnyUTF8/16:2-4 35219072 35.42 ns/op BenchmarkIndexAnyUTF8/16:2-4 34611667 35.32 ns/op BenchmarkIndexAnyUTF8/16:2-4 34771483 35.83 ns/op BenchmarkIndexAnyUTF8/16:2-4 35025975 35.48 ns/op BenchmarkIndexAnyUTF8/16:2-4 35211172 35.43 ns/op BenchmarkIndexAnyUTF8/16:2-4 35001838 35.30 ns/op BenchmarkIndexAnyUTF8/16:2-4 34803074 35.42 ns/op BenchmarkIndexAnyUTF8/16:4-4 36668498 33.44 ns/op BenchmarkIndexAnyUTF8/16:4-4 37364640 32.91 ns/op BenchmarkIndexAnyUTF8/16:4-4 37174069 33.02 ns/op BenchmarkIndexAnyUTF8/16:4-4 37102004 32.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 37147935 32.99 ns/op BenchmarkIndexAnyUTF8/16:4-4 36395445 32.97 ns/op BenchmarkIndexAnyUTF8/16:4-4 37340677 32.95 ns/op BenchmarkIndexAnyUTF8/16:4-4 37027292 33.00 ns/op BenchmarkIndexAnyUTF8/16:4-4 36448557 33.00 ns/op BenchmarkIndexAnyUTF8/16:4-4 35546498 33.14 ns/op BenchmarkIndexAnyUTF8/16:8-4 12964305 92.27 ns/op BenchmarkIndexAnyUTF8/16:8-4 13130066 91.45 ns/op BenchmarkIndexAnyUTF8/16:8-4 13124600 91.64 ns/op BenchmarkIndexAnyUTF8/16:8-4 12971827 96.36 ns/op BenchmarkIndexAnyUTF8/16:8-4 12694522 91.41 ns/op BenchmarkIndexAnyUTF8/16:8-4 13128580 91.88 ns/op BenchmarkIndexAnyUTF8/16:8-4 13125606 91.97 ns/op BenchmarkIndexAnyUTF8/16:8-4 13128573 92.29 ns/op BenchmarkIndexAnyUTF8/16:8-4 13124146 91.68 ns/op BenchmarkIndexAnyUTF8/16:8-4 13126688 92.58 ns/op BenchmarkIndexAnyUTF8/16:16-4 13120251 94.85 ns/op BenchmarkIndexAnyUTF8/16:16-4 13124191 92.26 ns/op BenchmarkIndexAnyUTF8/16:16-4 13124155 92.00 ns/op BenchmarkIndexAnyUTF8/16:16-4 13122546 92.41 ns/op BenchmarkIndexAnyUTF8/16:16-4 13128013 91.41 ns/op BenchmarkIndexAnyUTF8/16:16-4 13124809 92.49 ns/op BenchmarkIndexAnyUTF8/16:16-4 12466959 91.41 ns/op BenchmarkIndexAnyUTF8/16:16-4 13127532 92.36 ns/op BenchmarkIndexAnyUTF8/16:16-4 13125668 91.57 ns/op BenchmarkIndexAnyUTF8/16:16-4 13126378 92.44 ns/op BenchmarkIndexAnyUTF8/16:32-4 12521586 96.70 ns/op BenchmarkIndexAnyUTF8/16:32-4 12532228 96.10 ns/op BenchmarkIndexAnyUTF8/16:32-4 12530131 96.72 ns/op BenchmarkIndexAnyUTF8/16:32-4 12508564 96.20 ns/op BenchmarkIndexAnyUTF8/16:32-4 12528817 95.75 ns/op BenchmarkIndexAnyUTF8/16:32-4 12528367 96.49 ns/op BenchmarkIndexAnyUTF8/16:32-4 12425782 96.83 ns/op BenchmarkIndexAnyUTF8/16:32-4 12530478 95.75 ns/op BenchmarkIndexAnyUTF8/16:32-4 12533200 96.65 ns/op BenchmarkIndexAnyUTF8/16:32-4 12393636 95.74 ns/op BenchmarkIndexAnyUTF8/16:64-4 11540778 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11550476 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11377094 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11551448 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 10827877 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11550332 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11504565 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11550433 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11551843 103.9 ns/op BenchmarkIndexAnyUTF8/16:64-4 11549533 104.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 8000289 151.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 8061554 150.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 7887790 151.2 ns/op BenchmarkIndexAnyUTF8/256:1-4 8072512 151.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 8019998 150.3 ns/op BenchmarkIndexAnyUTF8/256:1-4 7856383 150.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 8027594 150.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 7900922 151.6 ns/op BenchmarkIndexAnyUTF8/256:1-4 7822700 151.8 ns/op BenchmarkIndexAnyUTF8/256:1-4 7976728 151.4 ns/op BenchmarkIndexAnyUTF8/256:2-4 3840901 311.4 ns/op BenchmarkIndexAnyUTF8/256:2-4 3867699 310.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 3894746 313.1 ns/op BenchmarkIndexAnyUTF8/256:2-4 3874489 309.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 3899379 310.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 3832402 309.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 3878628 310.1 ns/op BenchmarkIndexAnyUTF8/256:2-4 3869113 310.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 3872192 310.1 ns/op BenchmarkIndexAnyUTF8/256:2-4 3873374 312.1 ns/op BenchmarkIndexAnyUTF8/256:4-4 7166546 166.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 7303118 166.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 7194931 168.1 ns/op BenchmarkIndexAnyUTF8/256:4-4 7222044 166.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 7297837 166.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 7273123 167.2 ns/op BenchmarkIndexAnyUTF8/256:4-4 7232426 166.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 7264573 167.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 7261174 166.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 7312141 167.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 3606380 334.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 3457428 336.2 ns/op BenchmarkIndexAnyUTF8/256:8-4 3595658 333.4 ns/op BenchmarkIndexAnyUTF8/256:8-4 3617454 336.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 3558262 338.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 3564548 336.0 ns/op BenchmarkIndexAnyUTF8/256:8-4 3528544 335.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 3558674 335.0 ns/op BenchmarkIndexAnyUTF8/256:8-4 3596382 338.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 3505626 335.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11919316 100.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11915313 100.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11912758 100.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 11910402 100.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11911352 100.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11903810 100.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11785260 100.9 ns/op BenchmarkIndexAnyUTF8/256:16-4 11897584 100.8 ns/op BenchmarkIndexAnyUTF8/256:16-4 11912595 100.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 11920728 100.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 2306568 519.5 ns/op BenchmarkIndexAnyUTF8/256:32-4 2306548 518.1 ns/op BenchmarkIndexAnyUTF8/256:32-4 2305660 518.7 ns/op BenchmarkIndexAnyUTF8/256:32-4 2316267 518.5 ns/op BenchmarkIndexAnyUTF8/256:32-4 2313346 518.4 ns/op BenchmarkIndexAnyUTF8/256:32-4 2310261 522.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 2312406 518.6 ns/op BenchmarkIndexAnyUTF8/256:32-4 2309989 519.6 ns/op BenchmarkIndexAnyUTF8/256:32-4 2322698 517.4 ns/op BenchmarkIndexAnyUTF8/256:32-4 2300102 518.2 ns/op BenchmarkIndexAnyUTF8/256:64-4 2029834 589.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 2031973 590.4 ns/op BenchmarkIndexAnyUTF8/256:64-4 2016949 590.2 ns/op BenchmarkIndexAnyUTF8/256:64-4 2035569 591.0 ns/op BenchmarkIndexAnyUTF8/256:64-4 2031544 590.2 ns/op BenchmarkIndexAnyUTF8/256:64-4 2033504 590.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 2034849 600.5 ns/op BenchmarkIndexAnyUTF8/256:64-4 2029441 589.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 2033734 590.3 ns/op BenchmarkIndexAnyUTF8/256:64-4 2032446 590.7 ns/op BenchmarkLastIndexAnyASCII/1:1-4 177141838 6.506 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184512192 6.505 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184485459 6.506 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184583812 6.506 ns/op BenchmarkLastIndexAnyASCII/1:1-4 177157028 6.506 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184462806 6.505 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184474894 6.507 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184538367 6.502 ns/op BenchmarkLastIndexAnyASCII/1:1-4 177135420 6.507 ns/op BenchmarkLastIndexAnyASCII/1:1-4 184550722 6.508 ns/op BenchmarkLastIndexAnyASCII/1:2-4 177114711 6.507 ns/op BenchmarkLastIndexAnyASCII/1:2-4 177093126 6.507 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184501699 6.505 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184457076 6.782 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184569601 6.507 ns/op BenchmarkLastIndexAnyASCII/1:2-4 177129165 6.507 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184477507 6.507 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184560273 6.975 ns/op BenchmarkLastIndexAnyASCII/1:2-4 184796866 6.685 ns/op BenchmarkLastIndexAnyASCII/1:2-4 177102487 6.508 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184451677 6.836 ns/op BenchmarkLastIndexAnyASCII/1:4-4 177141081 6.507 ns/op BenchmarkLastIndexAnyASCII/1:4-4 177121683 6.507 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184445505 6.506 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184539133 6.506 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184790001 6.508 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184494505 6.506 ns/op BenchmarkLastIndexAnyASCII/1:4-4 184208056 6.778 ns/op BenchmarkLastIndexAnyASCII/1:4-4 179612157 6.506 ns/op BenchmarkLastIndexAnyASCII/1:4-4 177169518 6.506 ns/op BenchmarkLastIndexAnyASCII/1:8-4 182895487 6.507 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184562006 6.507 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184498516 6.505 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184473117 6.506 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184552105 6.507 ns/op BenchmarkLastIndexAnyASCII/1:8-4 181093174 6.506 ns/op BenchmarkLastIndexAnyASCII/1:8-4 177097029 6.781 ns/op BenchmarkLastIndexAnyASCII/1:8-4 184471207 6.506 ns/op BenchmarkLastIndexAnyASCII/1:8-4 177140887 6.545 ns/op BenchmarkLastIndexAnyASCII/1:8-4 177167816 6.505 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184298094 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 179625825 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184342820 6.509 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184317139 6.511 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184324449 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184340397 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184332417 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 177145371 6.510 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184331732 6.512 ns/op BenchmarkLastIndexAnyASCII/1:16-4 184324197 6.510 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176954440 6.781 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176959514 6.781 ns/op BenchmarkLastIndexAnyASCII/1:32-4 170309580 7.052 ns/op BenchmarkLastIndexAnyASCII/1:32-4 170337148 7.047 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176961212 6.781 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176947941 6.781 ns/op BenchmarkLastIndexAnyASCII/1:32-4 163956643 6.781 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176970704 6.780 ns/op BenchmarkLastIndexAnyASCII/1:32-4 176961447 6.781 ns/op BenchmarkLastIndexAnyASCII/1:32-4 170288280 6.781 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163850640 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163864332 7.323 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163856296 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163847758 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163844461 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163843974 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163853421 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163850707 7.323 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163855399 7.323 ns/op BenchmarkLastIndexAnyASCII/1:64-4 163843256 7.322 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66556327 17.98 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66533074 17.99 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66598990 18.02 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66728014 17.99 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66646483 18.01 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66843943 18.02 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66537616 18.02 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66691634 17.98 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66835455 18.01 ns/op BenchmarkLastIndexAnyASCII/16:1-4 66675844 17.99 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65752335 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65796536 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65692000 18.25 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65740153 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65785419 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65658393 18.25 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65809912 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65801287 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65799992 18.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 65580417 18.24 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59012574 20.37 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58961078 20.38 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59039517 20.36 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59068027 20.34 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59011585 20.34 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58979448 20.34 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59013294 20.34 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58901828 20.34 ns/op BenchmarkLastIndexAnyASCII/16:4-4 58962055 20.36 ns/op BenchmarkLastIndexAnyASCII/16:4-4 59041981 20.35 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46193560 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46218025 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46199714 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46230631 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46240678 25.95 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46255543 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46220265 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46226962 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46223545 25.94 ns/op BenchmarkLastIndexAnyASCII/16:8-4 46283763 25.95 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30844274 38.79 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30850262 38.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30886875 38.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30879801 38.86 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30911253 38.80 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30930582 38.82 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30898335 38.81 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30923394 38.84 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30809841 38.84 ns/op BenchmarkLastIndexAnyASCII/16:16-4 30788419 38.84 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18321312 65.56 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18304021 65.52 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18343984 65.54 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18311598 65.53 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18314846 65.53 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18320401 65.53 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18301114 65.55 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18298285 65.52 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18329388 65.50 ns/op BenchmarkLastIndexAnyASCII/16:32-4 18298315 65.57 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9218689 130.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9204693 130.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9179492 130.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9162808 130.5 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9211272 130.8 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9189398 130.7 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9203407 130.7 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9201674 130.5 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9174340 130.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 9206282 130.4 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8398243 144.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8342878 144.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8469996 144.0 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8402119 143.7 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8381246 144.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8479263 144.4 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8459802 144.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8398410 144.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8379163 144.3 ns/op BenchmarkLastIndexAnyASCII/256:1-4 8431678 143.1 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8317641 145.3 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8209986 144.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8222511 145.3 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8304672 145.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8290556 145.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8313771 145.3 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8314071 145.0 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8309527 145.1 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8273637 145.3 ns/op BenchmarkLastIndexAnyASCII/256:2-4 8237433 145.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8003166 149.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8037285 149.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8056575 149.9 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8091973 149.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8065264 149.5 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7889104 149.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8036162 149.5 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8048582 149.5 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8047868 149.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 8078460 149.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7661326 157.6 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7624927 157.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7640869 156.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7656728 156.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7648920 156.5 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7573994 157.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7601052 157.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7659075 157.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7652301 157.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7623027 157.1 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7298018 164.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7269289 164.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7279791 164.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7324387 164.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7310588 164.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7295276 164.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7304322 164.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7303485 164.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7328010 164.3 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7284166 164.6 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6253989 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6241401 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6245070 191.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6255698 192.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6227919 192.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6257114 192.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6261086 192.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6254792 192.1 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6254558 192.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6257397 192.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4677180 255.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4689004 255.5 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4685512 255.4 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4697492 255.7 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4681406 257.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4696900 256.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4710679 255.2 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4675776 256.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4682643 256.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 4678665 255.5 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 177980930 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184510765 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 177093403 6.502 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 177158864 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184503732 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184500722 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184517944 6.505 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184733685 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184548615 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 184501987 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184740984 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 177151179 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 177130192 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184552587 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184510365 6.505 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 177287113 6.524 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184508205 6.503 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184485037 6.968 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184491682 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 184480022 6.501 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 184456027 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 177153226 6.579 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 177217471 6.508 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 177186612 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 184548295 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 177119025 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 177089124 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 184713686 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 170294518 6.500 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 178588113 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184476844 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184554920 6.691 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184465460 6.698 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 177107415 6.502 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 177087139 6.976 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184544827 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184486131 6.505 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184476910 6.507 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 177137800 6.506 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 184519354 6.865 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 170307747 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184335256 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184329102 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184305122 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184293650 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184301864 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184312054 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184303888 6.624 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184326355 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 184338030 6.510 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176931192 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176967700 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170283691 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170274055 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176960090 7.028 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176950918 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176954922 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176949102 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 176962478 6.782 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 170292685 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163843581 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163853538 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163854692 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163854735 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163844890 7.323 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163862529 7.323 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163845504 7.323 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163823431 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163862149 7.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 163835784 7.323 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 33758888 35.26 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 33761167 39.09 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34021990 39.61 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 33775820 35.27 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34032180 37.12 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 34015047 35.26 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 33751956 35.26 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 33769489 39.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 30098941 35.26 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 33748244 35.26 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10858616 106.0 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 10603116 106.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11399986 105.1 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11289118 109.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11317928 105.5 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11202638 109.1 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11200362 105.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11401063 106.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11199883 107.3 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 11315556 105.3 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11401292 108.5 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11311630 105.1 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11172649 113.1 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11205027 105.9 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10895506 105.5 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11289660 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11282535 105.1 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11112050 109.0 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10923117 108.3 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 10950975 109.5 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11285324 105.2 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11283216 105.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11085397 105.4 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11122825 107.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11238429 105.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11198629 105.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11400038 105.5 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11321961 105.3 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11291914 111.0 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11279476 106.3 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11086388 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11061214 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11086814 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11084379 111.6 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11084888 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11086377 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11087893 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11088381 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11087426 108.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11084749 110.9 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10227584 114.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10554764 112.7 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10250794 113.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10276912 114.6 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10538917 113.8 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10234182 112.7 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10660534 114.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10534426 113.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10532884 115.2 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 10451259 113.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9638976 122.6 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9618685 122.0 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9502074 124.9 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9896967 127.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9895524 121.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9895915 122.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9893163 122.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9767635 121.3 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9894914 123.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 9640573 121.9 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2420949 525.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2420596 495.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2421283 495.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2421766 498.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2421624 495.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2421423 495.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2420864 495.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2126018 495.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2421564 495.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2421182 495.5 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 744213 1634 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 744364 1608 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 745328 1662 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 745146 1608 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 745630 1608 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 745849 1608 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 744584 1608 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 745071 1608 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 746002 1608 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 745042 1608 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745552 1608 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745636 1608 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 744891 1608 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745300 1705 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745570 1621 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745158 1608 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745903 1608 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745491 1654 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745952 1648 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 745160 1608 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745196 1608 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745216 1618 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745827 1636 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745413 1654 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745681 1672 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745694 1608 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745059 1650 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 746269 1675 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 745942 1608 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 746047 1673 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714855 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714445 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714234 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714613 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715668 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714814 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714861 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715096 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 714615 1677 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 715324 1677 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686877 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686565 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 685986 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686013 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686266 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 685918 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686034 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 685957 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 685789 1747 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 686144 1747 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 636354 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635043 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635212 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635449 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635924 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635502 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635898 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 634993 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635698 1886 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 635575 1886 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22470 53405 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22471 53414 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22467 53410 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22466 53406 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22476 53387 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22465 53398 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22461 53386 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22473 53385 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22473 53387 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 22476 55960 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19264 62267 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19267 62273 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19267 62275 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19246 62270 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19267 62273 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19269 62270 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19269 62270 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19269 62270 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19268 62271 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 19268 62272 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14776 81143 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14776 81269 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14757 81310 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14770 81208 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14778 81205 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14776 81305 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14782 81184 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14780 81222 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14749 81176 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 14770 81205 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29484 40684 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29559 40595 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29535 40585 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29547 40587 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29551 40597 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29564 40596 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29553 40580 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29554 40599 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29563 40598 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 29557 40594 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 58924 20355 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59071 20305 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59092 20310 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 58998 20331 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59031 20338 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59080 20308 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59072 20308 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59078 20298 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59032 20325 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 59095 20303 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113398 10578 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113379 10577 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113419 10580 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113212 10592 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113410 10583 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113407 10580 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113266 10576 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113404 10577 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113265 10591 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 113408 10577 ns/op BenchmarkIndexByte_Bytes/10-4 294943680 4.308 ns/op 2321.16 MB/s BenchmarkIndexByte_Bytes/10-4 260234455 4.069 ns/op 2457.68 MB/s BenchmarkIndexByte_Bytes/10-4 294703584 4.180 ns/op 2392.20 MB/s BenchmarkIndexByte_Bytes/10-4 286412406 4.068 ns/op 2457.94 MB/s BenchmarkIndexByte_Bytes/10-4 262473562 4.228 ns/op 2365.27 MB/s BenchmarkIndexByte_Bytes/10-4 263944294 4.286 ns/op 2333.44 MB/s BenchmarkIndexByte_Bytes/10-4 287678658 4.068 ns/op 2457.98 MB/s BenchmarkIndexByte_Bytes/10-4 277137154 4.302 ns/op 2324.26 MB/s BenchmarkIndexByte_Bytes/10-4 294950982 4.326 ns/op 2311.71 MB/s BenchmarkIndexByte_Bytes/10-4 281923288 4.340 ns/op 2304.40 MB/s BenchmarkIndexByte_Bytes/32-4 260217892 4.611 ns/op 6939.83 MB/s BenchmarkIndexByte_Bytes/32-4 260229134 4.611 ns/op 6940.00 MB/s BenchmarkIndexByte_Bytes/32-4 260226267 4.611 ns/op 6940.03 MB/s BenchmarkIndexByte_Bytes/32-4 260245986 4.612 ns/op 6939.11 MB/s BenchmarkIndexByte_Bytes/32-4 260244146 4.611 ns/op 6939.20 MB/s BenchmarkIndexByte_Bytes/32-4 260240202 4.611 ns/op 6939.28 MB/s BenchmarkIndexByte_Bytes/32-4 260247808 4.611 ns/op 6939.96 MB/s BenchmarkIndexByte_Bytes/32-4 260256298 4.611 ns/op 6939.97 MB/s BenchmarkIndexByte_Bytes/32-4 260094746 4.611 ns/op 6939.78 MB/s BenchmarkIndexByte_Bytes/32-4 260257122 4.611 ns/op 6939.84 MB/s BenchmarkIndexByte_Bytes/4K-4 23765541 50.52 ns/op 81072.50 MB/s BenchmarkIndexByte_Bytes/4K-4 23164964 50.50 ns/op 81101.98 MB/s BenchmarkIndexByte_Bytes/4K-4 23311772 50.45 ns/op 81187.29 MB/s BenchmarkIndexByte_Bytes/4K-4 23762962 50.50 ns/op 81108.23 MB/s BenchmarkIndexByte_Bytes/4K-4 22876027 50.53 ns/op 81054.21 MB/s BenchmarkIndexByte_Bytes/4K-4 22881951 50.53 ns/op 81064.61 MB/s BenchmarkIndexByte_Bytes/4K-4 22878604 50.45 ns/op 81182.34 MB/s BenchmarkIndexByte_Bytes/4K-4 23253859 50.50 ns/op 81108.70 MB/s BenchmarkIndexByte_Bytes/4K-4 23110731 50.51 ns/op 81086.64 MB/s BenchmarkIndexByte_Bytes/4K-4 23132196 50.51 ns/op 81092.35 MB/s BenchmarkIndexByte_Bytes/4M-4 24954 48056 ns/op 87279.67 MB/s BenchmarkIndexByte_Bytes/4M-4 24952 48079 ns/op 87237.78 MB/s BenchmarkIndexByte_Bytes/4M-4 24939 48055 ns/op 87281.87 MB/s BenchmarkIndexByte_Bytes/4M-4 24966 48092 ns/op 87213.50 MB/s BenchmarkIndexByte_Bytes/4M-4 24967 48093 ns/op 87211.99 MB/s BenchmarkIndexByte_Bytes/4M-4 24963 48063 ns/op 87266.72 MB/s BenchmarkIndexByte_Bytes/4M-4 24954 48081 ns/op 87233.61 MB/s BenchmarkIndexByte_Bytes/4M-4 24950 48050 ns/op 87289.97 MB/s BenchmarkIndexByte_Bytes/4M-4 24968 48087 ns/op 87223.55 MB/s BenchmarkIndexByte_Bytes/4M-4 24968 48066 ns/op 87262.12 MB/s BenchmarkIndexByte_Bytes/64M-4 729 1435628 ns/op 46745.32 MB/s BenchmarkIndexByte_Bytes/64M-4 811 1435101 ns/op 46762.47 MB/s BenchmarkIndexByte_Bytes/64M-4 805 1439504 ns/op 46619.44 MB/s BenchmarkIndexByte_Bytes/64M-4 806 1434442 ns/op 46783.96 MB/s BenchmarkIndexByte_Bytes/64M-4 814 1434518 ns/op 46781.48 MB/s BenchmarkIndexByte_Bytes/64M-4 810 1436919 ns/op 46703.31 MB/s BenchmarkIndexByte_Bytes/64M-4 813 1435463 ns/op 46750.68 MB/s BenchmarkIndexByte_Bytes/64M-4 812 1429751 ns/op 46937.46 MB/s BenchmarkIndexByte_Bytes/64M-4 814 1428248 ns/op 46986.86 MB/s BenchmarkIndexByte_Bytes/64M-4 816 1432080 ns/op 46861.11 MB/s BenchmarkIndexRune_Bytes/10-4 97952690 12.21 ns/op 819.23 MB/s BenchmarkIndexRune_Bytes/10-4 98241219 12.21 ns/op 819.23 MB/s BenchmarkIndexRune_Bytes/10-4 98323566 12.21 ns/op 819.15 MB/s BenchmarkIndexRune_Bytes/10-4 98238726 12.21 ns/op 819.21 MB/s BenchmarkIndexRune_Bytes/10-4 98156923 12.21 ns/op 819.11 MB/s BenchmarkIndexRune_Bytes/10-4 98112390 12.21 ns/op 819.21 MB/s BenchmarkIndexRune_Bytes/10-4 98196369 12.21 ns/op 819.19 MB/s BenchmarkIndexRune_Bytes/10-4 98284356 12.21 ns/op 819.15 MB/s BenchmarkIndexRune_Bytes/10-4 98116401 12.21 ns/op 819.22 MB/s BenchmarkIndexRune_Bytes/10-4 98256583 12.21 ns/op 819.19 MB/s BenchmarkIndexRune_Bytes/32-4 91986213 13.02 ns/op 2457.64 MB/s BenchmarkIndexRune_Bytes/32-4 92191297 13.02 ns/op 2457.59 MB/s BenchmarkIndexRune_Bytes/32-4 91975504 13.02 ns/op 2457.65 MB/s BenchmarkIndexRune_Bytes/32-4 92184144 13.02 ns/op 2457.67 MB/s BenchmarkIndexRune_Bytes/32-4 92084259 13.02 ns/op 2457.69 MB/s BenchmarkIndexRune_Bytes/32-4 92079879 13.02 ns/op 2457.67 MB/s BenchmarkIndexRune_Bytes/32-4 92124484 13.02 ns/op 2457.62 MB/s BenchmarkIndexRune_Bytes/32-4 92168276 13.02 ns/op 2457.58 MB/s BenchmarkIndexRune_Bytes/32-4 91980573 13.02 ns/op 2457.28 MB/s BenchmarkIndexRune_Bytes/32-4 92186360 13.02 ns/op 2457.64 MB/s BenchmarkIndexRune_Bytes/4K-4 20824500 57.63 ns/op 71069.72 MB/s BenchmarkIndexRune_Bytes/4K-4 20802813 57.65 ns/op 71047.92 MB/s BenchmarkIndexRune_Bytes/4K-4 20828689 57.68 ns/op 71010.41 MB/s BenchmarkIndexRune_Bytes/4K-4 20810631 57.63 ns/op 71069.36 MB/s BenchmarkIndexRune_Bytes/4K-4 20570641 57.66 ns/op 71037.34 MB/s BenchmarkIndexRune_Bytes/4K-4 20799500 57.62 ns/op 71088.45 MB/s BenchmarkIndexRune_Bytes/4K-4 20829878 57.63 ns/op 71076.25 MB/s BenchmarkIndexRune_Bytes/4K-4 20404850 57.60 ns/op 71114.27 MB/s BenchmarkIndexRune_Bytes/4K-4 20811241 57.69 ns/op 70997.82 MB/s BenchmarkIndexRune_Bytes/4K-4 20820254 57.66 ns/op 71041.73 MB/s BenchmarkIndexRune_Bytes/4M-4 22206 54032 ns/op 77625.77 MB/s BenchmarkIndexRune_Bytes/4M-4 22209 54072 ns/op 77568.69 MB/s BenchmarkIndexRune_Bytes/4M-4 22206 54061 ns/op 77584.20 MB/s BenchmarkIndexRune_Bytes/4M-4 22200 54029 ns/op 77630.25 MB/s BenchmarkIndexRune_Bytes/4M-4 22202 54027 ns/op 77633.22 MB/s BenchmarkIndexRune_Bytes/4M-4 22190 54037 ns/op 77619.44 MB/s BenchmarkIndexRune_Bytes/4M-4 22203 54070 ns/op 77571.62 MB/s BenchmarkIndexRune_Bytes/4M-4 22203 54043 ns/op 77610.62 MB/s BenchmarkIndexRune_Bytes/4M-4 22208 54064 ns/op 77580.33 MB/s BenchmarkIndexRune_Bytes/4M-4 22189 54031 ns/op 77628.06 MB/s BenchmarkIndexRune_Bytes/64M-4 744 1493273 ns/op 44940.79 MB/s BenchmarkIndexRune_Bytes/64M-4 782 1495103 ns/op 44885.77 MB/s BenchmarkIndexRune_Bytes/64M-4 786 1493607 ns/op 44930.74 MB/s BenchmarkIndexRune_Bytes/64M-4 783 1503204 ns/op 44643.89 MB/s BenchmarkIndexRune_Bytes/64M-4 776 1501988 ns/op 44680.04 MB/s BenchmarkIndexRune_Bytes/64M-4 783 1502690 ns/op 44659.14 MB/s BenchmarkIndexRune_Bytes/64M-4 782 1498912 ns/op 44771.72 MB/s BenchmarkIndexRune_Bytes/64M-4 759 1506212 ns/op 44554.71 MB/s BenchmarkIndexRune_Bytes/64M-4 788 1496200 ns/op 44852.87 MB/s BenchmarkIndexRune_Bytes/64M-4 786 1493844 ns/op 44923.60 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 176958537 6.240 ns/op 1602.46 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184346731 6.239 ns/op 1602.89 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184341897 6.239 ns/op 1602.92 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192359606 6.239 ns/op 1602.81 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192362767 6.239 ns/op 1602.90 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192339470 6.239 ns/op 1602.91 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184327048 6.238 ns/op 1602.95 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 184338343 6.239 ns/op 1602.84 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192341732 6.238 ns/op 1603.02 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 192349616 6.238 ns/op 1603.01 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176906676 6.783 ns/op 4717.76 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176921533 6.784 ns/op 4717.16 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176924407 6.783 ns/op 4717.47 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176871373 6.783 ns/op 4717.57 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176913870 6.782 ns/op 4718.12 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176932118 6.785 ns/op 4716.12 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176911590 6.783 ns/op 4717.94 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176887536 6.783 ns/op 4717.98 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176946718 6.783 ns/op 4717.57 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 176897829 6.783 ns/op 4717.54 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22615728 53.07 ns/op 77184.23 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22632081 53.05 ns/op 77209.91 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22572022 53.07 ns/op 77177.70 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22589302 53.06 ns/op 77191.54 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22613158 53.05 ns/op 77213.36 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22573648 53.04 ns/op 77228.49 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22592148 53.06 ns/op 77200.36 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22598096 53.06 ns/op 77198.04 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22597759 53.04 ns/op 77218.26 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 22605120 53.07 ns/op 77179.72 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24921 48106 ns/op 87188.81 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24912 48110 ns/op 87181.16 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24943 48106 ns/op 87188.11 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24909 48106 ns/op 87189.13 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24932 48164 ns/op 87084.05 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24932 48176 ns/op 87062.08 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24914 48183 ns/op 87049.94 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24918 48103 ns/op 87194.64 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24934 48095 ns/op 87208.92 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 24942 48154 ns/op 87102.30 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 770 1425342 ns/op 47082.66 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 820 1430380 ns/op 46916.82 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 814 1436121 ns/op 46729.24 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 816 1428300 ns/op 46985.13 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 819 1436500 ns/op 46716.94 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 810 1432802 ns/op 46837.51 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 817 1433458 ns/op 46816.06 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 812 1439250 ns/op 46627.65 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 817 1432109 ns/op 46860.18 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 816 1427031 ns/op 47026.92 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341504125 3.254 ns/op 3073.00 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368253242 3.254 ns/op 3072.95 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341470695 3.527 ns/op 2835.66 MB/s BenchmarkIndexNonASCII_Bytes/10-4 340282360 3.254 ns/op 3073.59 MB/s BenchmarkIndexNonASCII_Bytes/10-4 369846720 3.255 ns/op 3072.64 MB/s BenchmarkIndexNonASCII_Bytes/10-4 370217876 3.256 ns/op 3071.49 MB/s BenchmarkIndexNonASCII_Bytes/10-4 370006693 3.255 ns/op 3072.10 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341547369 3.255 ns/op 3072.46 MB/s BenchmarkIndexNonASCII_Bytes/10-4 341942722 3.255 ns/op 3072.18 MB/s BenchmarkIndexNonASCII_Bytes/10-4 368072685 3.526 ns/op 2836.12 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340048456 3.531 ns/op 9063.06 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340088017 3.529 ns/op 9066.60 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340315210 3.529 ns/op 9068.29 MB/s BenchmarkIndexNonASCII_Bytes/32-4 322218008 3.530 ns/op 9065.91 MB/s BenchmarkIndexNonASCII_Bytes/32-4 321974810 3.797 ns/op 8427.20 MB/s BenchmarkIndexNonASCII_Bytes/32-4 339914212 3.531 ns/op 9062.18 MB/s BenchmarkIndexNonASCII_Bytes/32-4 335670342 3.530 ns/op 9065.02 MB/s BenchmarkIndexNonASCII_Bytes/32-4 332985694 3.530 ns/op 9064.95 MB/s BenchmarkIndexNonASCII_Bytes/32-4 319395846 3.529 ns/op 9068.55 MB/s BenchmarkIndexNonASCII_Bytes/32-4 340005476 3.529 ns/op 9066.87 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22283434 49.64 ns/op 82517.10 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24174057 49.64 ns/op 82508.98 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22599418 49.64 ns/op 82516.44 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22302381 49.64 ns/op 82515.37 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24164175 49.64 ns/op 82515.31 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24174152 49.64 ns/op 82519.47 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 24174001 49.64 ns/op 82517.96 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22611742 50.34 ns/op 81369.55 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22464475 50.13 ns/op 81701.86 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 22320073 49.65 ns/op 82498.78 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24906 48183 ns/op 87049.37 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24906 48168 ns/op 87077.38 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24916 48185 ns/op 87045.38 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24906 48176 ns/op 87062.19 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24912 48141 ns/op 87124.63 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24912 48163 ns/op 87086.47 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24921 48182 ns/op 87052.06 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24907 48159 ns/op 87092.57 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24908 48146 ns/op 87116.84 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 24915 48158 ns/op 87093.94 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 775 1438554 ns/op 46650.23 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 813 1426075 ns/op 47058.42 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 811 1438772 ns/op 46643.16 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 812 1439886 ns/op 46607.07 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 817 1428670 ns/op 46972.98 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 814 1437781 ns/op 46675.31 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 799 1434794 ns/op 46772.48 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 819 1435492 ns/op 46749.72 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 808 1423993 ns/op 47127.25 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 814 1434289 ns/op 46788.95 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2110.863s strcase-0.0.5/internal/benchtest/results/Apple-M1-Max/ 0000775 0000000 0000000 00000000000 14720254634 0022522 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/Apple-M1-Max/cpu.10.1706682967.d1f0f64c.txt 0000664 0000000 0000000 00000000102 14720254634 0026600 0 ustar 00root root 0000000 0000000 machdep.cpu.core_count: 10 machdep.cpu.brand_string: Apple M1 Max strcase-0.0.5/internal/benchtest/results/Apple-M1-Max/env.10.1706682967.d1f0f64c.txt 0000664 0000000 0000000 00000002110 14720254634 0026602 0 ustar 00root root 0000000 0000000 GO111MODULE='auto' GOARCH='arm64' GOBIN='' GOCACHE='/Users/cvieth/Library/Caches/go-build' GOENV='/Users/cvieth/Library/Application Support/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='arm64' GOHOSTOS='darwin' GOINSECURE='' GOMODCACHE='/Users/cvieth/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='darwin' GOPATH='/Users/cvieth/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/opt/homebrew/Cellar/go/1.21.6/libexec' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/opt/homebrew/Cellar/go/1.21.6/libexec/pkg/tool/darwin_arm64' GOVCS='' GOVERSION='go1.21.6' GCCGO='gccgo' AR='ar' CC='cc' CXX='c++' CGO_ENABLED='1' GOMOD='/Users/cvieth/go/src/github.com/charlievieth/strcase/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/04/dymxpp193334by_n210qwb5w0000gn/T/go-build1616843893=/tmp/go-build -gno-record-gcc-switches -fno-common' strcase-0.0.5/internal/benchtest/results/Apple-M1-Max/result.10.1706682967.d1f0f64c.txt 0000664 0000000 0000000 00000045552 14720254634 0027351 0 ustar 00root root 0000000 0000000 goos: darwin goarch: arm64 pkg: github.com/charlievieth/strcase/internal/benchtest │ ./stdlib.10.1706682967.d1f0f64c.txt │ ./strcase.10.1706682967.d1f0f64c.txt │ │ sec/op │ sec/op vs base │ IndexRune-10 11.79n ± 0% 11.23n ± 1% -4.71% (p=0.000 n=10) IndexRuneLongString-10 13.04n ± 0% 12.52n ± 0% -3.99% (p=0.000 n=10) IndexRuneFastPath-10 2.910n ± 2% 4.697n ± 1% +61.41% (p=0.000 n=10) Index-10 3.074n ± 1% 4.744n ± 2% +54.34% (p=0.000 n=10) LastIndex-10 3.414n ± 0% 6.535n ± 0% +91.43% (p=0.000 n=10) IndexByte-10 2.367n ± 0% 3.547n ± 1% +49.85% (p=0.000 n=10) EqualFold/ASCII-10 9.374n ± 0% 9.464n ± 2% ~ (p=0.469 n=10) EqualFold/UnicodePrefix-10 79.15n ± 0% 31.79n ± 3% -59.84% (p=0.000 n=10) EqualFold/UnicodeSuffix-10 72.98n ± 0% 25.19n ± 1% -65.49% (p=0.000 n=10) IndexHard1-10 325.9µ ± 0% 325.5µ ± 0% -0.13% (p=0.009 n=10) IndexHard2-10 327.4µ ± 0% 2109.8µ ± 1% +544.36% (p=0.000 n=10) IndexHard3-10 354.3µ ± 0% 1830.6µ ± 0% +416.66% (p=0.000 n=10) IndexHard4-10 1.305m ± 0% 1.305m ± 0% ~ (p=0.165 n=10) LastIndexHard1-10 1.305m ± 0% 1.385m ± 0% +6.17% (p=0.000 n=10) LastIndexHard2-10 1.305m ± 0% 1.385m ± 0% +6.13% (p=0.000 n=10) LastIndexHard3-10 1.305m ± 0% 1.385m ± 0% +6.15% (p=0.000 n=10) CountHard1-10 325.9µ ± 0% 327.7µ ± 1% +0.54% (p=0.009 n=10) CountHard2-10 327.5µ ± 0% 2120.3µ ± 0% +547.46% (p=0.000 n=10) CountHard3-10 354.3µ ± 0% 1832.4µ ± 1% +417.20% (p=0.000 n=10) IndexTorture-10 9.802µ ± 0% 17.294µ ± 0% +76.44% (p=0.000 n=10) CountTorture-10 9.806µ ± 0% 19.692µ ± 0% +100.83% (p=0.000 n=10) CountTortureOverlapping-10 65.75µ ± 1% 3946.86µ ± 0% +5902.37% (p=0.000 n=10) CountByte/10-10 6.518n ± 0% 7.442n ± 0% +14.16% (p=0.000 n=10) CountByte/32-10 3.103n ± 0% 4.031n ± 0% +29.91% (p=0.000 n=10) CountByte/4K-10 80.14n ± 0% 98.11n ± 0% +22.42% (p=0.000 n=10) CountByte/4M-10 81.38µ ± 0% 91.60µ ± 0% +12.56% (p=0.000 n=10) CountByte/64M-10 1.334m ± 0% 1.491m ± 0% +11.77% (p=0.000 n=10) IndexAnyASCII/1:1-10 4.036n ± 0% 5.271n ± 0% +30.60% (p=0.000 n=10) IndexAnyASCII/1:2-10 5.276n ± 0% 7.444n ± 0% +41.11% (p=0.000 n=10) IndexAnyASCII/1:4-10 5.281n ± 0% 7.446n ± 0% +40.97% (p=0.000 n=10) IndexAnyASCII/1:8-10 5.278n ± 0% 7.443n ± 0% +41.02% (p=0.000 n=10) IndexAnyASCII/1:16-10 5.277n ± 0% 7.453n ± 0% +41.24% (p=0.000 n=10) IndexAnyASCII/1:32-10 5.280n ± 0% 7.443n ± 0% +40.95% (p=0.000 n=10) IndexAnyASCII/1:64-10 5.897n ± 0% 7.753n ± 0% +31.46% (p=0.000 n=10) IndexAnyASCII/16:1-10 4.035n ± 0% 5.280n ± 1% +30.87% (p=0.000 n=10) IndexAnyASCII/16:2-10 11.14n ± 0% 13.03n ± 0% +16.97% (p=0.000 n=10) IndexAnyASCII/16:4-10 12.38n ± 0% 14.90n ± 0% +20.36% (p=0.000 n=10) IndexAnyASCII/16:8-10 17.16n ± 0% 18.96n ± 0% +10.49% (p=0.000 n=10) IndexAnyASCII/16:16-10 33.79n ± 0% 33.34n ± 0% -1.35% (p=0.000 n=10) IndexAnyASCII/16:32-10 66.51n ± 0% 60.61n ± 0% -8.87% (p=0.000 n=10) IndexAnyASCII/16:64-10 131.5n ± 0% 123.0n ± 0% -6.46% (p=0.000 n=10) IndexAnyASCII/256:1-10 7.139n ± 0% 8.374n ± 0% +17.30% (p=0.000 n=10) IndexAnyASCII/256:2-10 149.4n ± 0% 151.9n ± 0% +1.67% (p=0.000 n=10) IndexAnyASCII/256:4-10 151.2n ± 0% 154.2n ± 1% +1.98% (p=0.000 n=10) IndexAnyASCII/256:8-10 156.0n ± 0% 159.2n ± 0% +2.05% (p=0.000 n=10) IndexAnyASCII/256:16-10 167.2n ± 0% 171.4n ± 0% +2.51% (p=0.000 n=10) IndexAnyASCII/256:32-10 199.8n ± 0% 203.2n ± 0% +1.73% (p=0.000 n=10) IndexAnyASCII/256:64-10 264.6n ± 0% 267.2n ± 0% +0.98% (p=0.000 n=10) IndexAnyUTF8/1:1-10 3.104n ± 0% 3.102n ± 0% ~ (p=0.278 n=10) IndexAnyUTF8/1:2-10 5.276n ± 0% 7.132n ± 0% +35.19% (p=0.000 n=10) IndexAnyUTF8/1:4-10 5.287n ± 0% 7.133n ± 0% +34.93% (p=0.000 n=10) IndexAnyUTF8/1:8-10 5.277n ± 0% 7.131n ± 0% +35.14% (p=0.000 n=10) IndexAnyUTF8/1:16-10 5.283n ± 0% 7.442n ± 0% +40.88% (p=0.000 n=10) IndexAnyUTF8/1:32-10 5.277n ± 0% 7.442n ± 0% +41.02% (p=0.000 n=10) IndexAnyUTF8/1:64-10 5.898n ± 0% 7.752n ± 0% +31.43% (p=0.000 n=10) IndexAnyUTF8/16:1-10 13.04n ± 0% 13.02n ± 0% -0.15% (p=0.007 n=10) IndexAnyUTF8/16:2-10 63.42n ± 0% 32.87n ± 0% -48.17% (p=0.000 n=10) IndexAnyUTF8/16:4-10 63.39n ± 0% 33.50n ± 0% -47.16% (p=0.000 n=10) IndexAnyUTF8/16:8-10 63.37n ± 0% 85.03n ± 0% +34.19% (p=0.000 n=10) IndexAnyUTF8/16:16-10 66.31n ± 0% 90.12n ± 0% +35.92% (p=0.000 n=10) IndexAnyUTF8/16:32-10 66.28n ± 0% 89.72n ± 0% +35.37% (p=0.000 n=10) IndexAnyUTF8/16:64-10 74.12n ± 0% 96.15n ± 0% +29.71% (p=0.000 n=10) IndexAnyUTF8/256:1-10 168.5n ± 0% 168.4n ± 0% -0.06% (p=0.000 n=10) IndexAnyUTF8/256:2-10 883.0n ± 0% 349.1n ± 0% -60.47% (p=0.000 n=10) IndexAnyUTF8/256:4-10 883.0n ± 0% 191.4n ± 0% -78.32% (p=0.000 n=10) IndexAnyUTF8/256:8-10 883.1n ± 0% 384.3n ± 0% -56.49% (p=0.000 n=10) IndexAnyUTF8/256:16-10 922.9n ± 0% 116.7n ± 0% -87.36% (p=0.000 n=10) IndexAnyUTF8/256:32-10 922.9n ± 0% 603.1n ± 0% -34.66% (p=0.000 n=10) IndexAnyUTF8/256:64-10 1044.0n ± 0% 696.6n ± 1% -33.28% (p=0.000 n=10) LastIndexAnyASCII/1:1-10 4.348n ± 0% 5.582n ± 0% +28.38% (p=0.000 n=10) LastIndexAnyASCII/1:2-10 4.346n ± 0% 5.893n ± 0% +35.60% (p=0.000 n=10) LastIndexAnyASCII/1:4-10 4.365n ± 0% 5.892n ± 0% +35.00% (p=0.000 n=10) LastIndexAnyASCII/1:8-10 4.346n ± 0% 5.892n ± 0% +35.59% (p=0.000 n=10) LastIndexAnyASCII/1:16-10 4.346n ± 0% 5.896n ± 0% +35.64% (p=0.000 n=10) LastIndexAnyASCII/1:32-10 4.346n ± 0% 5.892n ± 0% +35.57% (p=0.000 n=10) LastIndexAnyASCII/1:64-10 4.967n ± 0% 6.202n ± 0% +24.86% (p=0.000 n=10) LastIndexAnyASCII/16:1-10 9.856n ± 0% 11.330n ± 0% +14.96% (p=0.000 n=10) LastIndexAnyASCII/16:2-10 10.48n ± 0% 12.26n ± 0% +16.98% (p=0.000 n=10) LastIndexAnyASCII/16:4-10 12.12n ± 0% 14.23n ± 0% +17.41% (p=0.000 n=10) LastIndexAnyASCII/16:8-10 17.21n ± 0% 18.66n ± 0% +8.43% (p=0.000 n=10) LastIndexAnyASCII/16:16-10 33.73n ± 0% 33.37n ± 0% -1.08% (p=0.000 n=10) LastIndexAnyASCII/16:32-10 66.57n ± 0% 60.64n ± 0% -8.90% (p=0.000 n=10) LastIndexAnyASCII/16:64-10 131.6n ± 2% 123.0n ± 0% -6.53% (p=0.000 n=10) LastIndexAnyASCII/256:1-10 146.6n ± 0% 153.1n ± 0% +4.43% (p=0.000 n=10) LastIndexAnyASCII/256:2-10 145.9n ± 0% 151.1n ± 0% +3.56% (p=0.000 n=10) LastIndexAnyASCII/256:4-10 149.9n ± 0% 152.3n ± 0% +1.63% (p=0.000 n=10) LastIndexAnyASCII/256:8-10 153.8n ± 0% 157.6n ± 3% +2.47% (p=0.000 n=10) LastIndexAnyASCII/256:16-10 165.9n ± 0% 169.2n ± 0% +1.96% (p=0.000 n=10) LastIndexAnyASCII/256:32-10 198.4n ± 2% 206.1n ± 0% +3.88% (p=0.000 n=10) LastIndexAnyASCII/256:64-10 264.3n ± 2% 264.6n ± 0% ~ (p=0.192 n=10) LastIndexAnyUTF8/1:1-10 4.346n ± 0% 5.582n ± 0% +28.44% (p=0.000 n=10) LastIndexAnyUTF8/1:2-10 4.346n ± 0% 5.583n ± 0% +28.45% (p=0.000 n=10) LastIndexAnyUTF8/1:4-10 4.346n ± 0% 5.582n ± 0% +28.44% (p=0.000 n=10) LastIndexAnyUTF8/1:8-10 4.351n ± 0% 5.589n ± 0% +28.45% (p=0.000 n=10) LastIndexAnyUTF8/1:16-10 4.346n ± 0% 5.892n ± 0% +35.57% (p=0.000 n=10) LastIndexAnyUTF8/1:32-10 4.346n ± 0% 5.892n ± 0% +35.59% (p=0.000 n=10) LastIndexAnyUTF8/1:64-10 4.966n ± 0% 6.202n ± 0% +24.89% (p=0.000 n=10) LastIndexAnyUTF8/16:1-10 25.67n ± 0% 26.95n ± 1% +5.01% (p=0.000 n=10) LastIndexAnyUTF8/16:2-10 75.34n ± 0% 95.49n ± 3% +26.74% (p=0.000 n=10) LastIndexAnyUTF8/16:4-10 75.36n ± 0% 95.57n ± 0% +26.83% (p=0.000 n=10) LastIndexAnyUTF8/16:8-10 75.36n ± 0% 95.49n ± 0% +26.71% (p=0.000 n=10) LastIndexAnyUTF8/16:16-10 79.37n ± 0% 100.10n ± 0% +26.12% (p=0.000 n=10) LastIndexAnyUTF8/16:32-10 79.46n ± 0% 100.10n ± 0% +25.98% (p=0.000 n=10) LastIndexAnyUTF8/16:64-10 85.74n ± 0% 107.45n ± 0% +25.32% (p=0.000 n=10) LastIndexAnyUTF8/256:1-10 549.4n ± 1% 547.8n ± 0% -0.29% (p=0.050 n=10) LastIndexAnyUTF8/256:2-10 1.045µ ± 0% 1.361µ ± 0% +30.30% (p=0.000 n=10) LastIndexAnyUTF8/256:4-10 1.044µ ± 0% 1.361µ ± 0% +30.43% (p=0.000 n=10) LastIndexAnyUTF8/256:8-10 1.044µ ± 0% 1.361µ ± 0% +30.36% (p=0.000 n=10) LastIndexAnyUTF8/256:16-10 1.122µ ± 0% 1.440µ ± 0% +28.34% (p=0.000 n=10) LastIndexAnyUTF8/256:32-10 1.122µ ± 0% 1.457µ ± 2% +29.81% (p=0.000 n=10) LastIndexAnyUTF8/256:64-10 1.218µ ± 0% 1.561µ ± 0% +28.12% (p=0.000 n=10) IndexPeriodic/IndexPeriodic2-10 20.45µ ± 0% 61.09µ ± 0% +198.70% (p=0.000 n=10) IndexPeriodic/IndexPeriodic4-10 20.46µ ± 0% 56.00µ ± 0% +173.72% (p=0.000 n=10) IndexPeriodic/IndexPeriodic8-10 20.48µ ± 0% 53.46µ ± 0% +161.03% (p=0.000 n=10) IndexPeriodic/IndexPeriodic16-10 57.11µ ± 0% 63.11µ ± 0% +10.50% (p=0.000 n=10) IndexPeriodic/IndexPeriodic32-10 28.59µ ± 0% 31.67µ ± 1% +10.79% (p=0.000 n=10) IndexPeriodic/IndexPeriodic64-10 15.35µ ± 0% 16.36µ ± 1% +6.59% (p=0.000 n=10) IndexByte_Bytes/10-10 2.910n ± 0% 3.726n ± 0% +28.04% (p=0.000 n=10) IndexByte_Bytes/32-10 2.793n ± 1% 3.415n ± 1% +22.29% (p=0.000 n=10) IndexByte_Bytes/4K-10 70.98n ± 0% 78.20n ± 0% +10.16% (p=0.000 n=10) IndexByte_Bytes/4M-10 62.54µ ± 0% 71.92µ ± 0% +15.00% (p=0.000 n=10) IndexByte_Bytes/64M-10 1.098m ± 1% 1.186m ± 0% +7.98% (p=0.000 n=10) IndexRune_Bytes/10-10 10.24n ± 0% 11.83n ± 2% +15.53% (p=0.000 n=10) IndexRune_Bytes/32-10 11.79n ± 0% 11.80n ± 0% ~ (p=0.058 n=10) IndexRune_Bytes/4K-10 83.19n ± 1% 84.36n ± 2% ~ (p=0.469 n=10) IndexRune_Bytes/4M-10 62.54µ ± 0% 62.63µ ± 0% ~ (p=0.102 n=10) IndexRune_Bytes/64M-10 1.099m ± 0% 1.099m ± 1% ~ (p=0.393 n=10) IndexRuneASCII_Bytes/10-10 3.104n ± 0% 5.281n ± 2% +70.15% (p=0.000 n=10) IndexRuneASCII_Bytes/32-10 3.104n ± 0% 5.292n ± 1% +70.47% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-10 71.92n ± 2% 80.89n ± 0% +12.47% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-10 62.48µ ± 0% 71.77µ ± 0% +14.86% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-10 1.099m ± 0% 1.186m ± 0% +7.92% (p=0.000 n=10) IndexNonASCII_Bytes/10-10 4.657n ± 0% 2.993n ± 0% -35.73% (p=0.000 n=10) IndexNonASCII_Bytes/32-10 11.485n ± 0% 2.804n ± 1% -75.59% (p=0.000 n=10) IndexNonASCII_Bytes/4K-10 1282.00n ± 0% 77.05n ± 1% -93.99% (p=0.000 n=10) IndexNonASCII_Bytes/4M-10 1304.82µ ± 0% 71.71µ ± 0% -94.50% (p=0.000 n=10) IndexNonASCII_Bytes/64M-10 21.059m ± 0% 1.185m ± 1% -94.37% (p=0.000 n=10) geomean 196.3n 218.1n +11.14% │ ./stdlib.10.1706682967.d1f0f64c.txt │ ./strcase.10.1706682967.d1f0f64c.txt │ │ B/s │ B/s vs base │ CountByte/10-10 1.429Gi ± 0% 1.252Gi ± 0% -12.40% (p=0.000 n=10) CountByte/32-10 9.603Gi ± 0% 7.394Gi ± 0% -23.00% (p=0.000 n=10) CountByte/4K-10 47.60Gi ± 0% 38.88Gi ± 0% -18.31% (p=0.000 n=10) CountByte/4M-10 48.00Gi ± 0% 42.65Gi ± 0% -11.15% (p=0.000 n=10) CountByte/64M-10 46.86Gi ± 0% 41.93Gi ± 0% -10.53% (p=0.000 n=10) IndexByte_Bytes/10-10 3.201Gi ± 0% 2.499Gi ± 0% -21.90% (p=0.000 n=10) IndexByte_Bytes/32-10 10.670Gi ± 1% 8.725Gi ± 1% -18.23% (p=0.000 n=10) IndexByte_Bytes/4K-10 53.74Gi ± 0% 48.79Gi ± 0% -9.22% (p=0.000 n=10) IndexByte_Bytes/4M-10 62.46Gi ± 0% 54.31Gi ± 0% -13.04% (p=0.000 n=10) IndexByte_Bytes/64M-10 56.92Gi ± 1% 52.72Gi ± 0% -7.39% (p=0.000 n=10) IndexRune_Bytes/10-10 931.0Mi ± 0% 806.1Mi ± 1% -13.41% (p=0.000 n=10) IndexRune_Bytes/32-10 2.527Gi ± 0% 2.526Gi ± 0% -0.04% (p=0.023 n=10) IndexRune_Bytes/4K-10 45.85Gi ± 1% 45.22Gi ± 2% ~ (p=0.481 n=10) IndexRune_Bytes/4M-10 62.46Gi ± 0% 62.37Gi ± 0% ~ (p=0.105 n=10) IndexRune_Bytes/64M-10 56.89Gi ± 0% 56.86Gi ± 1% ~ (p=0.393 n=10) IndexRuneASCII_Bytes/10-10 3.001Gi ± 0% 1.763Gi ± 2% -41.23% (p=0.000 n=10) IndexRuneASCII_Bytes/32-10 9.600Gi ± 0% 5.632Gi ± 1% -41.33% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-10 53.04Gi ± 2% 47.16Gi ± 0% -11.09% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-10 62.52Gi ± 0% 54.43Gi ± 0% -12.94% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-10 56.88Gi ± 0% 52.71Gi ± 0% -7.34% (p=0.000 n=10) IndexNonASCII_Bytes/10-10 2.000Gi ± 0% 3.112Gi ± 0% +55.60% (p=0.000 n=10) IndexNonASCII_Bytes/32-10 2.595Gi ± 0% 10.628Gi ± 1% +309.56% (p=0.000 n=10) IndexNonASCII_Bytes/4K-10 2.976Gi ± 0% 49.513Gi ± 1% +1563.84% (p=0.000 n=10) IndexNonASCII_Bytes/4M-10 2.994Gi ± 0% 54.474Gi ± 0% +1719.61% (p=0.000 n=10) IndexNonASCII_Bytes/64M-10 2.968Gi ± 0% 52.739Gi ± 0% +1677.02% (p=0.000 n=10) geomean 12.51Gi 16.74Gi +33.90% strcase-0.0.5/internal/benchtest/results/Apple-M1-Max/stdlib.10.1706682967.d1f0f64c.txt 0000664 0000000 0000000 00000303662 14720254634 0027313 0 ustar 00root root 0000000 0000000 goos: darwin goarch: arm64 pkg: github.com/charlievieth/strcase/internal/benchtest BenchmarkIndexRune-10 100000000 11.83 ns/op BenchmarkIndexRune-10 100000000 11.79 ns/op BenchmarkIndexRune-10 100000000 11.79 ns/op BenchmarkIndexRune-10 100000000 11.79 ns/op BenchmarkIndexRune-10 100000000 11.83 ns/op BenchmarkIndexRune-10 100000000 11.80 ns/op BenchmarkIndexRune-10 100000000 11.79 ns/op BenchmarkIndexRune-10 100000000 11.79 ns/op BenchmarkIndexRune-10 100000000 11.82 ns/op BenchmarkIndexRune-10 100000000 11.79 ns/op BenchmarkIndexRuneLongString-10 91855479 13.03 ns/op BenchmarkIndexRuneLongString-10 91713319 13.04 ns/op BenchmarkIndexRuneLongString-10 92140838 13.07 ns/op BenchmarkIndexRuneLongString-10 91524453 13.04 ns/op BenchmarkIndexRuneLongString-10 91962542 13.04 ns/op BenchmarkIndexRuneLongString-10 91887715 13.04 ns/op BenchmarkIndexRuneLongString-10 91994556 13.03 ns/op BenchmarkIndexRuneLongString-10 92157340 13.07 ns/op BenchmarkIndexRuneLongString-10 92100465 13.03 ns/op BenchmarkIndexRuneLongString-10 92142013 13.04 ns/op BenchmarkIndexRuneFastPath-10 412338426 2.909 ns/op BenchmarkIndexRuneFastPath-10 410870784 2.966 ns/op BenchmarkIndexRuneFastPath-10 412168647 2.910 ns/op BenchmarkIndexRuneFastPath-10 412240802 2.909 ns/op BenchmarkIndexRuneFastPath-10 409371770 2.915 ns/op BenchmarkIndexRuneFastPath-10 412459719 2.958 ns/op BenchmarkIndexRuneFastPath-10 412400422 2.910 ns/op BenchmarkIndexRuneFastPath-10 412388552 2.910 ns/op BenchmarkIndexRuneFastPath-10 408226616 2.909 ns/op BenchmarkIndexRuneFastPath-10 412334941 2.909 ns/op BenchmarkIndex-10 391424966 3.097 ns/op BenchmarkIndex-10 391210159 3.074 ns/op BenchmarkIndex-10 391214091 3.067 ns/op BenchmarkIndex-10 391036094 3.067 ns/op BenchmarkIndex-10 391124887 3.078 ns/op BenchmarkIndex-10 385636641 3.067 ns/op BenchmarkIndex-10 391259373 3.086 ns/op BenchmarkIndex-10 391268144 3.122 ns/op BenchmarkIndex-10 391165473 3.073 ns/op BenchmarkIndex-10 391181359 3.066 ns/op BenchmarkLastIndex-10 351566361 3.414 ns/op BenchmarkLastIndex-10 351422822 3.421 ns/op BenchmarkLastIndex-10 345420573 3.422 ns/op BenchmarkLastIndex-10 351383289 3.414 ns/op BenchmarkLastIndex-10 351535464 3.415 ns/op BenchmarkLastIndex-10 348291316 3.414 ns/op BenchmarkLastIndex-10 351368029 3.413 ns/op BenchmarkLastIndex-10 351353797 3.414 ns/op BenchmarkLastIndex-10 351327480 3.422 ns/op BenchmarkLastIndex-10 351290455 3.414 ns/op BenchmarkIndexByte-10 506757024 2.366 ns/op BenchmarkIndexByte-10 507090462 2.372 ns/op BenchmarkIndexByte-10 506978880 2.367 ns/op BenchmarkIndexByte-10 507032346 2.367 ns/op BenchmarkIndexByte-10 507084391 2.367 ns/op BenchmarkIndexByte-10 507187087 2.373 ns/op BenchmarkIndexByte-10 507206200 2.374 ns/op BenchmarkIndexByte-10 506948805 2.367 ns/op BenchmarkIndexByte-10 507067963 2.366 ns/op BenchmarkIndexByte-10 500992242 2.367 ns/op BenchmarkEqualFold/ASCII-10 127945767 9.368 ns/op BenchmarkEqualFold/ASCII-10 127966239 9.398 ns/op BenchmarkEqualFold/ASCII-10 127892598 9.385 ns/op BenchmarkEqualFold/ASCII-10 127517174 9.413 ns/op BenchmarkEqualFold/ASCII-10 127764543 9.368 ns/op BenchmarkEqualFold/ASCII-10 128040972 9.370 ns/op BenchmarkEqualFold/ASCII-10 128046403 9.394 ns/op BenchmarkEqualFold/ASCII-10 128023874 9.369 ns/op BenchmarkEqualFold/ASCII-10 128077819 9.373 ns/op BenchmarkEqualFold/ASCII-10 127670716 9.375 ns/op BenchmarkEqualFold/UnicodePrefix-10 15142027 79.15 ns/op BenchmarkEqualFold/UnicodePrefix-10 15158772 79.14 ns/op BenchmarkEqualFold/UnicodePrefix-10 15150748 79.50 ns/op BenchmarkEqualFold/UnicodePrefix-10 15140776 79.14 ns/op BenchmarkEqualFold/UnicodePrefix-10 15143173 79.15 ns/op BenchmarkEqualFold/UnicodePrefix-10 15152128 79.14 ns/op BenchmarkEqualFold/UnicodePrefix-10 15155214 79.33 ns/op BenchmarkEqualFold/UnicodePrefix-10 15142520 79.14 ns/op BenchmarkEqualFold/UnicodePrefix-10 15156601 79.16 ns/op BenchmarkEqualFold/UnicodePrefix-10 15110019 79.30 ns/op BenchmarkEqualFold/UnicodeSuffix-10 15945978 73.48 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16425708 72.99 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16413997 72.99 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16432512 72.98 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16427188 73.15 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16433187 72.97 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16407049 72.98 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16438252 72.97 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16430694 73.17 ns/op BenchmarkEqualFold/UnicodeSuffix-10 16422795 72.98 ns/op BenchmarkIndexHard1-10 3609 325784 ns/op BenchmarkIndexHard1-10 3602 325894 ns/op BenchmarkIndexHard1-10 3590 326740 ns/op BenchmarkIndexHard1-10 3601 325780 ns/op BenchmarkIndexHard1-10 3604 325902 ns/op BenchmarkIndexHard1-10 3598 326419 ns/op BenchmarkIndexHard1-10 3614 325940 ns/op BenchmarkIndexHard1-10 3602 327354 ns/op BenchmarkIndexHard1-10 3542 325865 ns/op BenchmarkIndexHard1-10 3604 325918 ns/op BenchmarkIndexHard2-10 3404 327423 ns/op BenchmarkIndexHard2-10 3417 328270 ns/op BenchmarkIndexHard2-10 3415 327424 ns/op BenchmarkIndexHard2-10 3414 327456 ns/op BenchmarkIndexHard2-10 3410 327370 ns/op BenchmarkIndexHard2-10 3412 328103 ns/op BenchmarkIndexHard2-10 3414 327393 ns/op BenchmarkIndexHard2-10 3417 327338 ns/op BenchmarkIndexHard2-10 3404 327310 ns/op BenchmarkIndexHard2-10 3415 327449 ns/op BenchmarkIndexHard3-10 3189 355370 ns/op BenchmarkIndexHard3-10 3181 354236 ns/op BenchmarkIndexHard3-10 3176 354218 ns/op BenchmarkIndexHard3-10 3188 354237 ns/op BenchmarkIndexHard3-10 3184 355275 ns/op BenchmarkIndexHard3-10 3187 354423 ns/op BenchmarkIndexHard3-10 3189 354140 ns/op BenchmarkIndexHard3-10 3188 354307 ns/op BenchmarkIndexHard3-10 3181 354309 ns/op BenchmarkIndexHard3-10 3194 355486 ns/op BenchmarkIndexHard4-10 903 1304436 ns/op BenchmarkIndexHard4-10 903 1304803 ns/op BenchmarkIndexHard4-10 902 1313524 ns/op BenchmarkIndexHard4-10 902 1307788 ns/op BenchmarkIndexHard4-10 902 1304316 ns/op BenchmarkIndexHard4-10 902 1304703 ns/op BenchmarkIndexHard4-10 903 1304635 ns/op BenchmarkIndexHard4-10 902 1308035 ns/op BenchmarkIndexHard4-10 902 1304731 ns/op BenchmarkIndexHard4-10 902 1311250 ns/op BenchmarkLastIndexHard1-10 901 1307688 ns/op BenchmarkLastIndexHard1-10 880 1304848 ns/op BenchmarkLastIndexHard1-10 902 1304753 ns/op BenchmarkLastIndexHard1-10 901 1304893 ns/op BenchmarkLastIndexHard1-10 902 1304760 ns/op BenchmarkLastIndexHard1-10 886 1304769 ns/op BenchmarkLastIndexHard1-10 902 1304632 ns/op BenchmarkLastIndexHard1-10 902 1304473 ns/op BenchmarkLastIndexHard1-10 902 1308969 ns/op BenchmarkLastIndexHard1-10 892 1304982 ns/op BenchmarkLastIndexHard2-10 902 1304429 ns/op BenchmarkLastIndexHard2-10 902 1305901 ns/op BenchmarkLastIndexHard2-10 901 1308340 ns/op BenchmarkLastIndexHard2-10 902 1304900 ns/op BenchmarkLastIndexHard2-10 902 1304697 ns/op BenchmarkLastIndexHard2-10 902 1305040 ns/op BenchmarkLastIndexHard2-10 901 1307597 ns/op BenchmarkLastIndexHard2-10 902 1305579 ns/op BenchmarkLastIndexHard2-10 902 1304881 ns/op BenchmarkLastIndexHard2-10 902 1305008 ns/op BenchmarkLastIndexHard3-10 902 1312943 ns/op BenchmarkLastIndexHard3-10 902 1304573 ns/op BenchmarkLastIndexHard3-10 902 1304947 ns/op BenchmarkLastIndexHard3-10 902 1304748 ns/op BenchmarkLastIndexHard3-10 902 1307289 ns/op BenchmarkLastIndexHard3-10 902 1304531 ns/op BenchmarkLastIndexHard3-10 902 1304332 ns/op BenchmarkLastIndexHard3-10 902 1304835 ns/op BenchmarkLastIndexHard3-10 902 1307651 ns/op BenchmarkLastIndexHard3-10 902 1304489 ns/op BenchmarkCountHard1-10 3609 325796 ns/op BenchmarkCountHard1-10 3612 325874 ns/op BenchmarkCountHard1-10 3603 326375 ns/op BenchmarkCountHard1-10 3602 325929 ns/op BenchmarkCountHard1-10 3609 325838 ns/op BenchmarkCountHard1-10 3600 325902 ns/op BenchmarkCountHard1-10 3603 325890 ns/op BenchmarkCountHard1-10 3598 326618 ns/op BenchmarkCountHard1-10 3596 328026 ns/op BenchmarkCountHard1-10 3606 325850 ns/op BenchmarkCountHard2-10 3411 327489 ns/op BenchmarkCountHard2-10 3402 328196 ns/op BenchmarkCountHard2-10 3416 327343 ns/op BenchmarkCountHard2-10 3411 327395 ns/op BenchmarkCountHard2-10 3418 327420 ns/op BenchmarkCountHard2-10 3416 328195 ns/op BenchmarkCountHard2-10 3409 327340 ns/op BenchmarkCountHard2-10 3409 328934 ns/op BenchmarkCountHard2-10 3412 328273 ns/op BenchmarkCountHard2-10 3416 327463 ns/op BenchmarkCountHard3-10 3190 355352 ns/op BenchmarkCountHard3-10 3195 354256 ns/op BenchmarkCountHard3-10 3189 354304 ns/op BenchmarkCountHard3-10 3192 354289 ns/op BenchmarkCountHard3-10 3187 355212 ns/op BenchmarkCountHard3-10 3184 354281 ns/op BenchmarkCountHard3-10 3178 354243 ns/op BenchmarkCountHard3-10 3189 354216 ns/op BenchmarkCountHard3-10 3186 354176 ns/op BenchmarkCountHard3-10 3136 354786 ns/op BenchmarkIndexTorture-10 122382 9795 ns/op BenchmarkIndexTorture-10 122367 9800 ns/op BenchmarkIndexTorture-10 122179 9797 ns/op BenchmarkIndexTorture-10 118912 9799 ns/op BenchmarkIndexTorture-10 122396 9803 ns/op BenchmarkIndexTorture-10 122467 9844 ns/op BenchmarkIndexTorture-10 122319 9809 ns/op BenchmarkIndexTorture-10 122419 9830 ns/op BenchmarkIndexTorture-10 122413 9799 ns/op BenchmarkIndexTorture-10 122446 9868 ns/op BenchmarkCountTorture-10 122428 9803 ns/op BenchmarkCountTorture-10 122298 9819 ns/op BenchmarkCountTorture-10 122295 9808 ns/op BenchmarkCountTorture-10 122336 9798 ns/op BenchmarkCountTorture-10 122341 9804 ns/op BenchmarkCountTorture-10 120169 9807 ns/op BenchmarkCountTorture-10 122191 9823 ns/op BenchmarkCountTorture-10 122365 9797 ns/op BenchmarkCountTorture-10 122372 9797 ns/op BenchmarkCountTorture-10 122494 9824 ns/op BenchmarkCountTortureOverlapping-10 18202 65766 ns/op BenchmarkCountTortureOverlapping-10 18199 65756 ns/op BenchmarkCountTortureOverlapping-10 18132 65740 ns/op BenchmarkCountTortureOverlapping-10 18196 65803 ns/op BenchmarkCountTortureOverlapping-10 18200 66354 ns/op BenchmarkCountTortureOverlapping-10 18198 65754 ns/op BenchmarkCountTortureOverlapping-10 18195 65747 ns/op BenchmarkCountTortureOverlapping-10 18194 66105 ns/op BenchmarkCountTortureOverlapping-10 18204 65747 ns/op BenchmarkCountTortureOverlapping-10 18198 65748 ns/op BenchmarkCountByte/10-10 184111238 6.533 ns/op 1530.57 MB/s BenchmarkCountByte/10-10 181682516 6.524 ns/op 1532.84 MB/s BenchmarkCountByte/10-10 184103787 6.519 ns/op 1533.96 MB/s BenchmarkCountByte/10-10 183207994 6.517 ns/op 1534.47 MB/s BenchmarkCountByte/10-10 184099774 6.518 ns/op 1534.25 MB/s BenchmarkCountByte/10-10 184101704 6.533 ns/op 1530.79 MB/s BenchmarkCountByte/10-10 184096149 6.517 ns/op 1534.52 MB/s BenchmarkCountByte/10-10 184146682 6.518 ns/op 1534.22 MB/s BenchmarkCountByte/10-10 184102046 6.534 ns/op 1530.57 MB/s BenchmarkCountByte/10-10 184104282 6.518 ns/op 1534.14 MB/s BenchmarkCountByte/32-10 386598404 3.103 ns/op 10311.95 MB/s BenchmarkCountByte/32-10 386754308 3.111 ns/op 10284.82 MB/s BenchmarkCountByte/32-10 386560680 3.103 ns/op 10311.84 MB/s BenchmarkCountByte/32-10 386691370 3.104 ns/op 10307.69 MB/s BenchmarkCountByte/32-10 386427640 3.103 ns/op 10311.29 MB/s BenchmarkCountByte/32-10 382976533 3.104 ns/op 10307.78 MB/s BenchmarkCountByte/32-10 386755764 3.103 ns/op 10311.15 MB/s BenchmarkCountByte/32-10 386578114 3.103 ns/op 10311.69 MB/s BenchmarkCountByte/32-10 386649787 3.111 ns/op 10286.60 MB/s BenchmarkCountByte/32-10 386665620 3.103 ns/op 10310.98 MB/s BenchmarkCountByte/4K-10 14961333 80.16 ns/op 51098.42 MB/s BenchmarkCountByte/4K-10 14964536 80.13 ns/op 51113.90 MB/s BenchmarkCountByte/4K-10 14957588 80.33 ns/op 50991.19 MB/s BenchmarkCountByte/4K-10 14956454 80.16 ns/op 51099.20 MB/s BenchmarkCountByte/4K-10 14953938 80.14 ns/op 51110.58 MB/s BenchmarkCountByte/4K-10 14965384 80.13 ns/op 51116.82 MB/s BenchmarkCountByte/4K-10 14960394 80.34 ns/op 50984.86 MB/s BenchmarkCountByte/4K-10 14963914 80.14 ns/op 51111.06 MB/s BenchmarkCountByte/4K-10 14966908 80.14 ns/op 51110.43 MB/s BenchmarkCountByte/4K-10 14961201 80.15 ns/op 51105.96 MB/s BenchmarkCountByte/4M-10 14692 81355 ns/op 51555.49 MB/s BenchmarkCountByte/4M-10 14744 81790 ns/op 51281.59 MB/s BenchmarkCountByte/4M-10 14746 81554 ns/op 51429.51 MB/s BenchmarkCountByte/4M-10 14748 81351 ns/op 51557.94 MB/s BenchmarkCountByte/4M-10 14746 81372 ns/op 51544.96 MB/s BenchmarkCountByte/4M-10 14697 81383 ns/op 51537.73 MB/s BenchmarkCountByte/4M-10 14745 81378 ns/op 51541.10 MB/s BenchmarkCountByte/4M-10 14749 81573 ns/op 51418.00 MB/s BenchmarkCountByte/4M-10 14582 81388 ns/op 51534.93 MB/s BenchmarkCountByte/4M-10 14745 81368 ns/op 51547.58 MB/s BenchmarkCountByte/64M-10 882 1340063 ns/op 50078.88 MB/s BenchmarkCountByte/64M-10 882 1333473 ns/op 50326.36 MB/s BenchmarkCountByte/64M-10 883 1332862 ns/op 50349.43 MB/s BenchmarkCountByte/64M-10 882 1332792 ns/op 50352.09 MB/s BenchmarkCountByte/64M-10 882 1339239 ns/op 50109.72 MB/s BenchmarkCountByte/64M-10 882 1333559 ns/op 50323.13 MB/s BenchmarkCountByte/64M-10 882 1332726 ns/op 50354.60 MB/s BenchmarkCountByte/64M-10 882 1333717 ns/op 50317.15 MB/s BenchmarkCountByte/64M-10 882 1339267 ns/op 50108.65 MB/s BenchmarkCountByte/64M-10 883 1333825 ns/op 50313.10 MB/s BenchmarkIndexAnyASCII/1:1-10 297328963 4.034 ns/op BenchmarkIndexAnyASCII/1:1-10 297277434 4.044 ns/op BenchmarkIndexAnyASCII/1:1-10 297432168 4.037 ns/op BenchmarkIndexAnyASCII/1:1-10 297292623 4.036 ns/op BenchmarkIndexAnyASCII/1:1-10 297296491 4.036 ns/op BenchmarkIndexAnyASCII/1:1-10 294582745 4.037 ns/op BenchmarkIndexAnyASCII/1:1-10 296920714 4.035 ns/op BenchmarkIndexAnyASCII/1:1-10 297377809 4.038 ns/op BenchmarkIndexAnyASCII/1:1-10 297102231 4.045 ns/op BenchmarkIndexAnyASCII/1:1-10 297357697 4.035 ns/op BenchmarkIndexAnyASCII/1:2-10 227425797 5.275 ns/op BenchmarkIndexAnyASCII/1:2-10 227385576 5.289 ns/op BenchmarkIndexAnyASCII/1:2-10 227370102 5.276 ns/op BenchmarkIndexAnyASCII/1:2-10 227412849 5.275 ns/op BenchmarkIndexAnyASCII/1:2-10 227440669 5.288 ns/op BenchmarkIndexAnyASCII/1:2-10 227481628 5.275 ns/op BenchmarkIndexAnyASCII/1:2-10 227446524 5.275 ns/op BenchmarkIndexAnyASCII/1:2-10 227497387 5.288 ns/op BenchmarkIndexAnyASCII/1:2-10 224345314 5.275 ns/op BenchmarkIndexAnyASCII/1:2-10 227417805 5.278 ns/op BenchmarkIndexAnyASCII/1:4-10 227432712 5.288 ns/op BenchmarkIndexAnyASCII/1:4-10 227553469 5.276 ns/op BenchmarkIndexAnyASCII/1:4-10 227373997 5.277 ns/op BenchmarkIndexAnyASCII/1:4-10 227301982 5.289 ns/op BenchmarkIndexAnyASCII/1:4-10 227423642 5.275 ns/op BenchmarkIndexAnyASCII/1:4-10 227512573 5.286 ns/op BenchmarkIndexAnyASCII/1:4-10 225566223 5.297 ns/op BenchmarkIndexAnyASCII/1:4-10 227413334 5.277 ns/op BenchmarkIndexAnyASCII/1:4-10 227506696 5.277 ns/op BenchmarkIndexAnyASCII/1:4-10 227431993 5.290 ns/op BenchmarkIndexAnyASCII/1:8-10 227362616 5.278 ns/op BenchmarkIndexAnyASCII/1:8-10 227362706 5.275 ns/op BenchmarkIndexAnyASCII/1:8-10 227482095 5.289 ns/op BenchmarkIndexAnyASCII/1:8-10 227280744 5.275 ns/op BenchmarkIndexAnyASCII/1:8-10 227449398 5.284 ns/op BenchmarkIndexAnyASCII/1:8-10 227437058 5.287 ns/op BenchmarkIndexAnyASCII/1:8-10 227475591 5.276 ns/op BenchmarkIndexAnyASCII/1:8-10 227478142 5.278 ns/op BenchmarkIndexAnyASCII/1:8-10 227415237 5.292 ns/op BenchmarkIndexAnyASCII/1:8-10 227475447 5.277 ns/op BenchmarkIndexAnyASCII/1:16-10 227409994 5.276 ns/op BenchmarkIndexAnyASCII/1:16-10 227381734 5.288 ns/op BenchmarkIndexAnyASCII/1:16-10 227389633 5.277 ns/op BenchmarkIndexAnyASCII/1:16-10 227476544 5.277 ns/op BenchmarkIndexAnyASCII/1:16-10 227478807 5.291 ns/op BenchmarkIndexAnyASCII/1:16-10 227472141 5.276 ns/op BenchmarkIndexAnyASCII/1:16-10 227382757 5.277 ns/op BenchmarkIndexAnyASCII/1:16-10 227337687 5.288 ns/op BenchmarkIndexAnyASCII/1:16-10 227417178 5.277 ns/op BenchmarkIndexAnyASCII/1:16-10 227454643 5.277 ns/op BenchmarkIndexAnyASCII/1:32-10 227501682 5.290 ns/op BenchmarkIndexAnyASCII/1:32-10 227429407 5.276 ns/op BenchmarkIndexAnyASCII/1:32-10 227428509 5.309 ns/op BenchmarkIndexAnyASCII/1:32-10 227142592 5.285 ns/op BenchmarkIndexAnyASCII/1:32-10 227448500 5.275 ns/op BenchmarkIndexAnyASCII/1:32-10 227425869 5.276 ns/op BenchmarkIndexAnyASCII/1:32-10 227392828 5.289 ns/op BenchmarkIndexAnyASCII/1:32-10 227462170 5.276 ns/op BenchmarkIndexAnyASCII/1:32-10 227432568 5.276 ns/op BenchmarkIndexAnyASCII/1:32-10 227316066 5.287 ns/op BenchmarkIndexAnyASCII/1:64-10 203476996 5.896 ns/op BenchmarkIndexAnyASCII/1:64-10 201329557 5.910 ns/op BenchmarkIndexAnyASCII/1:64-10 202470746 5.898 ns/op BenchmarkIndexAnyASCII/1:64-10 203517214 5.896 ns/op BenchmarkIndexAnyASCII/1:64-10 203529728 5.897 ns/op BenchmarkIndexAnyASCII/1:64-10 202105617 5.902 ns/op BenchmarkIndexAnyASCII/1:64-10 203470312 5.896 ns/op BenchmarkIndexAnyASCII/1:64-10 203483926 5.904 ns/op BenchmarkIndexAnyASCII/1:64-10 201418840 5.902 ns/op BenchmarkIndexAnyASCII/1:64-10 203443549 5.896 ns/op BenchmarkIndexAnyASCII/16:1-10 297384195 4.041 ns/op BenchmarkIndexAnyASCII/16:1-10 296349772 4.035 ns/op BenchmarkIndexAnyASCII/16:1-10 297314290 4.035 ns/op BenchmarkIndexAnyASCII/16:1-10 297322118 4.036 ns/op BenchmarkIndexAnyASCII/16:1-10 295272078 4.035 ns/op BenchmarkIndexAnyASCII/16:1-10 297320983 4.034 ns/op BenchmarkIndexAnyASCII/16:1-10 297454686 4.045 ns/op BenchmarkIndexAnyASCII/16:1-10 297467067 4.069 ns/op BenchmarkIndexAnyASCII/16:1-10 297468388 4.034 ns/op BenchmarkIndexAnyASCII/16:1-10 297461137 4.035 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.16 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.14 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.14 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.13 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.14 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.16 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.13 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.13 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.13 ns/op BenchmarkIndexAnyASCII/16:2-10 100000000 11.14 ns/op BenchmarkIndexAnyASCII/16:4-10 96787525 12.41 ns/op BenchmarkIndexAnyASCII/16:4-10 96947823 12.44 ns/op BenchmarkIndexAnyASCII/16:4-10 97063167 12.38 ns/op BenchmarkIndexAnyASCII/16:4-10 97034385 12.38 ns/op BenchmarkIndexAnyASCII/16:4-10 96852620 12.41 ns/op BenchmarkIndexAnyASCII/16:4-10 96517332 12.37 ns/op BenchmarkIndexAnyASCII/16:4-10 97011182 12.37 ns/op BenchmarkIndexAnyASCII/16:4-10 97047138 12.38 ns/op BenchmarkIndexAnyASCII/16:4-10 97061856 12.41 ns/op BenchmarkIndexAnyASCII/16:4-10 97052043 12.38 ns/op BenchmarkIndexAnyASCII/16:8-10 69855776 17.15 ns/op BenchmarkIndexAnyASCII/16:8-10 70016774 17.16 ns/op BenchmarkIndexAnyASCII/16:8-10 69968124 17.19 ns/op BenchmarkIndexAnyASCII/16:8-10 69560175 17.15 ns/op BenchmarkIndexAnyASCII/16:8-10 70000094 17.27 ns/op BenchmarkIndexAnyASCII/16:8-10 69014103 17.16 ns/op BenchmarkIndexAnyASCII/16:8-10 69927351 17.15 ns/op BenchmarkIndexAnyASCII/16:8-10 69623235 17.20 ns/op BenchmarkIndexAnyASCII/16:8-10 69696189 17.16 ns/op BenchmarkIndexAnyASCII/16:8-10 70029375 17.15 ns/op BenchmarkIndexAnyASCII/16:16-10 35499369 33.75 ns/op BenchmarkIndexAnyASCII/16:16-10 35584945 33.83 ns/op BenchmarkIndexAnyASCII/16:16-10 35487384 33.75 ns/op BenchmarkIndexAnyASCII/16:16-10 35512982 33.75 ns/op BenchmarkIndexAnyASCII/16:16-10 35457456 33.75 ns/op BenchmarkIndexAnyASCII/16:16-10 35476236 33.83 ns/op BenchmarkIndexAnyASCII/16:16-10 35514734 33.74 ns/op BenchmarkIndexAnyASCII/16:16-10 35483274 33.90 ns/op BenchmarkIndexAnyASCII/16:16-10 33558337 33.92 ns/op BenchmarkIndexAnyASCII/16:16-10 35534016 33.83 ns/op BenchmarkIndexAnyASCII/16:32-10 18029691 66.48 ns/op BenchmarkIndexAnyASCII/16:32-10 18028676 66.51 ns/op BenchmarkIndexAnyASCII/16:32-10 18103630 66.51 ns/op BenchmarkIndexAnyASCII/16:32-10 18094258 66.86 ns/op BenchmarkIndexAnyASCII/16:32-10 17527182 66.64 ns/op BenchmarkIndexAnyASCII/16:32-10 17994488 66.49 ns/op BenchmarkIndexAnyASCII/16:32-10 18071744 66.52 ns/op BenchmarkIndexAnyASCII/16:32-10 18071800 66.63 ns/op BenchmarkIndexAnyASCII/16:32-10 18123625 66.49 ns/op BenchmarkIndexAnyASCII/16:32-10 18045417 66.49 ns/op BenchmarkIndexAnyASCII/16:64-10 9116222 131.5 ns/op BenchmarkIndexAnyASCII/16:64-10 9124850 131.7 ns/op BenchmarkIndexAnyASCII/16:64-10 9126472 131.5 ns/op BenchmarkIndexAnyASCII/16:64-10 9111236 131.5 ns/op BenchmarkIndexAnyASCII/16:64-10 9118206 131.5 ns/op BenchmarkIndexAnyASCII/16:64-10 9111822 131.9 ns/op BenchmarkIndexAnyASCII/16:64-10 9135796 131.4 ns/op BenchmarkIndexAnyASCII/16:64-10 9124778 131.5 ns/op BenchmarkIndexAnyASCII/16:64-10 9133186 131.5 ns/op BenchmarkIndexAnyASCII/16:64-10 9131246 132.6 ns/op BenchmarkIndexAnyASCII/256:1-10 168077475 7.139 ns/op BenchmarkIndexAnyASCII/256:1-10 168053850 7.138 ns/op BenchmarkIndexAnyASCII/256:1-10 168058144 7.156 ns/op BenchmarkIndexAnyASCII/256:1-10 168051486 7.137 ns/op BenchmarkIndexAnyASCII/256:1-10 168100334 7.139 ns/op BenchmarkIndexAnyASCII/256:1-10 167466415 7.140 ns/op BenchmarkIndexAnyASCII/256:1-10 168147590 7.140 ns/op BenchmarkIndexAnyASCII/256:1-10 168088089 7.151 ns/op BenchmarkIndexAnyASCII/256:1-10 166883905 7.158 ns/op BenchmarkIndexAnyASCII/256:1-10 168089139 7.137 ns/op BenchmarkIndexAnyASCII/256:2-10 8032758 150.3 ns/op BenchmarkIndexAnyASCII/256:2-10 8022513 149.4 ns/op BenchmarkIndexAnyASCII/256:2-10 8036030 149.5 ns/op BenchmarkIndexAnyASCII/256:2-10 8029234 149.4 ns/op BenchmarkIndexAnyASCII/256:2-10 8031115 149.7 ns/op BenchmarkIndexAnyASCII/256:2-10 8041662 149.3 ns/op BenchmarkIndexAnyASCII/256:2-10 8032518 149.3 ns/op BenchmarkIndexAnyASCII/256:2-10 8038240 149.3 ns/op BenchmarkIndexAnyASCII/256:2-10 8044986 149.7 ns/op BenchmarkIndexAnyASCII/256:2-10 8034169 149.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7927294 151.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7934913 151.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7920889 151.5 ns/op BenchmarkIndexAnyASCII/256:4-10 7932952 151.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7936958 151.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7934448 151.5 ns/op BenchmarkIndexAnyASCII/256:4-10 7935174 151.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7935026 151.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7933628 151.1 ns/op BenchmarkIndexAnyASCII/256:4-10 7937703 151.5 ns/op BenchmarkIndexAnyASCII/256:8-10 7685576 156.0 ns/op BenchmarkIndexAnyASCII/256:8-10 7696317 156.0 ns/op BenchmarkIndexAnyASCII/256:8-10 7695910 155.9 ns/op BenchmarkIndexAnyASCII/256:8-10 7691643 156.4 ns/op BenchmarkIndexAnyASCII/256:8-10 7686661 156.0 ns/op BenchmarkIndexAnyASCII/256:8-10 7699669 156.0 ns/op BenchmarkIndexAnyASCII/256:8-10 7691883 156.0 ns/op BenchmarkIndexAnyASCII/256:8-10 7695988 156.3 ns/op BenchmarkIndexAnyASCII/256:8-10 7693827 156.0 ns/op BenchmarkIndexAnyASCII/256:8-10 7695147 156.9 ns/op BenchmarkIndexAnyASCII/256:16-10 7172421 167.1 ns/op BenchmarkIndexAnyASCII/256:16-10 7154042 167.4 ns/op BenchmarkIndexAnyASCII/256:16-10 7184755 167.3 ns/op BenchmarkIndexAnyASCII/256:16-10 7189447 167.1 ns/op BenchmarkIndexAnyASCII/256:16-10 7181523 167.2 ns/op BenchmarkIndexAnyASCII/256:16-10 7117368 167.2 ns/op BenchmarkIndexAnyASCII/256:16-10 7189612 167.2 ns/op BenchmarkIndexAnyASCII/256:16-10 7181654 167.1 ns/op BenchmarkIndexAnyASCII/256:16-10 7183267 167.5 ns/op BenchmarkIndexAnyASCII/256:16-10 7190725 167.2 ns/op BenchmarkIndexAnyASCII/256:32-10 6014857 199.8 ns/op BenchmarkIndexAnyASCII/256:32-10 6012940 199.7 ns/op BenchmarkIndexAnyASCII/256:32-10 6011158 201.5 ns/op BenchmarkIndexAnyASCII/256:32-10 6003830 199.7 ns/op BenchmarkIndexAnyASCII/256:32-10 6010810 199.6 ns/op BenchmarkIndexAnyASCII/256:32-10 6014966 199.7 ns/op BenchmarkIndexAnyASCII/256:32-10 5982907 200.0 ns/op BenchmarkIndexAnyASCII/256:32-10 6011007 199.8 ns/op BenchmarkIndexAnyASCII/256:32-10 6014112 199.7 ns/op BenchmarkIndexAnyASCII/256:32-10 6006590 200.1 ns/op BenchmarkIndexAnyASCII/256:64-10 4537771 264.6 ns/op BenchmarkIndexAnyASCII/256:64-10 4533744 264.6 ns/op BenchmarkIndexAnyASCII/256:64-10 4534449 264.5 ns/op BenchmarkIndexAnyASCII/256:64-10 4536597 265.2 ns/op BenchmarkIndexAnyASCII/256:64-10 4536660 264.5 ns/op BenchmarkIndexAnyASCII/256:64-10 4536483 264.5 ns/op BenchmarkIndexAnyASCII/256:64-10 4530514 265.1 ns/op BenchmarkIndexAnyASCII/256:64-10 4534844 264.7 ns/op BenchmarkIndexAnyASCII/256:64-10 4536765 264.5 ns/op BenchmarkIndexAnyASCII/256:64-10 4534131 264.7 ns/op BenchmarkIndexAnyUTF8/1:1-10 386592073 3.112 ns/op BenchmarkIndexAnyUTF8/1:1-10 386258116 3.104 ns/op BenchmarkIndexAnyUTF8/1:1-10 386568463 3.104 ns/op BenchmarkIndexAnyUTF8/1:1-10 386594200 3.111 ns/op BenchmarkIndexAnyUTF8/1:1-10 386709804 3.104 ns/op BenchmarkIndexAnyUTF8/1:1-10 386715826 3.104 ns/op BenchmarkIndexAnyUTF8/1:1-10 386632970 3.103 ns/op BenchmarkIndexAnyUTF8/1:1-10 382961815 3.104 ns/op BenchmarkIndexAnyUTF8/1:1-10 386460049 3.103 ns/op BenchmarkIndexAnyUTF8/1:1-10 386622901 3.103 ns/op BenchmarkIndexAnyUTF8/1:2-10 227487916 5.288 ns/op BenchmarkIndexAnyUTF8/1:2-10 224337694 5.275 ns/op BenchmarkIndexAnyUTF8/1:2-10 227422977 5.275 ns/op BenchmarkIndexAnyUTF8/1:2-10 227394229 5.290 ns/op BenchmarkIndexAnyUTF8/1:2-10 227391590 5.276 ns/op BenchmarkIndexAnyUTF8/1:2-10 227446954 5.275 ns/op BenchmarkIndexAnyUTF8/1:2-10 227442213 5.289 ns/op BenchmarkIndexAnyUTF8/1:2-10 227424702 5.275 ns/op BenchmarkIndexAnyUTF8/1:2-10 227399059 5.275 ns/op BenchmarkIndexAnyUTF8/1:2-10 227280798 5.288 ns/op BenchmarkIndexAnyUTF8/1:4-10 227505924 5.278 ns/op BenchmarkIndexAnyUTF8/1:4-10 227451410 5.314 ns/op BenchmarkIndexAnyUTF8/1:4-10 227358434 5.289 ns/op BenchmarkIndexAnyUTF8/1:4-10 227523106 5.276 ns/op BenchmarkIndexAnyUTF8/1:4-10 227466159 5.276 ns/op BenchmarkIndexAnyUTF8/1:4-10 227470201 5.288 ns/op BenchmarkIndexAnyUTF8/1:4-10 227376618 5.279 ns/op BenchmarkIndexAnyUTF8/1:4-10 227475447 5.285 ns/op BenchmarkIndexAnyUTF8/1:4-10 227342767 5.289 ns/op BenchmarkIndexAnyUTF8/1:4-10 226437381 5.305 ns/op BenchmarkIndexAnyUTF8/1:8-10 226818534 5.277 ns/op BenchmarkIndexAnyUTF8/1:8-10 227394373 5.290 ns/op BenchmarkIndexAnyUTF8/1:8-10 227444350 5.277 ns/op BenchmarkIndexAnyUTF8/1:8-10 227386491 5.276 ns/op BenchmarkIndexAnyUTF8/1:8-10 227410066 5.286 ns/op BenchmarkIndexAnyUTF8/1:8-10 227365040 5.276 ns/op BenchmarkIndexAnyUTF8/1:8-10 227473130 5.276 ns/op BenchmarkIndexAnyUTF8/1:8-10 227438226 5.288 ns/op BenchmarkIndexAnyUTF8/1:8-10 227398251 5.276 ns/op BenchmarkIndexAnyUTF8/1:8-10 227344561 5.277 ns/op BenchmarkIndexAnyUTF8/1:16-10 227431957 5.288 ns/op BenchmarkIndexAnyUTF8/1:16-10 227416154 5.276 ns/op BenchmarkIndexAnyUTF8/1:16-10 227515071 5.276 ns/op BenchmarkIndexAnyUTF8/1:16-10 227480209 5.294 ns/op BenchmarkIndexAnyUTF8/1:16-10 227439087 5.276 ns/op BenchmarkIndexAnyUTF8/1:16-10 227457572 5.300 ns/op BenchmarkIndexAnyUTF8/1:16-10 227424846 5.289 ns/op BenchmarkIndexAnyUTF8/1:16-10 227372470 5.277 ns/op BenchmarkIndexAnyUTF8/1:16-10 227501773 5.277 ns/op BenchmarkIndexAnyUTF8/1:16-10 227459332 5.289 ns/op BenchmarkIndexAnyUTF8/1:32-10 227439052 5.275 ns/op BenchmarkIndexAnyUTF8/1:32-10 227454643 5.276 ns/op BenchmarkIndexAnyUTF8/1:32-10 227407713 5.287 ns/op BenchmarkIndexAnyUTF8/1:32-10 227453637 5.277 ns/op BenchmarkIndexAnyUTF8/1:32-10 227436142 5.277 ns/op BenchmarkIndexAnyUTF8/1:32-10 227412060 5.288 ns/op BenchmarkIndexAnyUTF8/1:32-10 227496938 5.304 ns/op BenchmarkIndexAnyUTF8/1:32-10 226450308 5.277 ns/op BenchmarkIndexAnyUTF8/1:32-10 227139852 5.296 ns/op BenchmarkIndexAnyUTF8/1:32-10 227510236 5.276 ns/op BenchmarkIndexAnyUTF8/1:64-10 203504415 5.898 ns/op BenchmarkIndexAnyUTF8/1:64-10 202529622 5.897 ns/op BenchmarkIndexAnyUTF8/1:64-10 203368300 5.898 ns/op BenchmarkIndexAnyUTF8/1:64-10 203518178 5.899 ns/op BenchmarkIndexAnyUTF8/1:64-10 202462420 5.895 ns/op BenchmarkIndexAnyUTF8/1:64-10 203227105 5.899 ns/op BenchmarkIndexAnyUTF8/1:64-10 203502028 5.929 ns/op BenchmarkIndexAnyUTF8/1:64-10 202427413 5.897 ns/op BenchmarkIndexAnyUTF8/1:64-10 203482748 5.896 ns/op BenchmarkIndexAnyUTF8/1:64-10 203421046 5.911 ns/op BenchmarkIndexAnyUTF8/16:1-10 92123148 13.04 ns/op BenchmarkIndexAnyUTF8/16:1-10 92060721 13.04 ns/op BenchmarkIndexAnyUTF8/16:1-10 92086620 13.03 ns/op BenchmarkIndexAnyUTF8/16:1-10 92103116 13.04 ns/op BenchmarkIndexAnyUTF8/16:1-10 91948442 13.07 ns/op BenchmarkIndexAnyUTF8/16:1-10 92172680 13.04 ns/op BenchmarkIndexAnyUTF8/16:1-10 92154396 13.04 ns/op BenchmarkIndexAnyUTF8/16:1-10 92032479 13.04 ns/op BenchmarkIndexAnyUTF8/16:1-10 91897687 13.06 ns/op BenchmarkIndexAnyUTF8/16:1-10 92115192 13.04 ns/op BenchmarkIndexAnyUTF8/16:2-10 18436754 63.50 ns/op BenchmarkIndexAnyUTF8/16:2-10 18946134 63.36 ns/op BenchmarkIndexAnyUTF8/16:2-10 18951070 63.51 ns/op BenchmarkIndexAnyUTF8/16:2-10 18950821 63.53 ns/op BenchmarkIndexAnyUTF8/16:2-10 18970844 63.73 ns/op BenchmarkIndexAnyUTF8/16:2-10 18938646 63.37 ns/op BenchmarkIndexAnyUTF8/16:2-10 18927195 63.46 ns/op BenchmarkIndexAnyUTF8/16:2-10 18933628 63.38 ns/op BenchmarkIndexAnyUTF8/16:2-10 18942220 63.35 ns/op BenchmarkIndexAnyUTF8/16:2-10 18928004 63.38 ns/op BenchmarkIndexAnyUTF8/16:4-10 18966171 63.51 ns/op BenchmarkIndexAnyUTF8/16:4-10 18947691 63.36 ns/op BenchmarkIndexAnyUTF8/16:4-10 18937474 63.39 ns/op BenchmarkIndexAnyUTF8/16:4-10 18944052 63.36 ns/op BenchmarkIndexAnyUTF8/16:4-10 18947193 63.46 ns/op BenchmarkIndexAnyUTF8/16:4-10 18933478 63.35 ns/op BenchmarkIndexAnyUTF8/16:4-10 18947629 63.37 ns/op BenchmarkIndexAnyUTF8/16:4-10 18958780 63.38 ns/op BenchmarkIndexAnyUTF8/16:4-10 18958244 63.58 ns/op BenchmarkIndexAnyUTF8/16:4-10 18945124 63.67 ns/op BenchmarkIndexAnyUTF8/16:8-10 18935484 63.48 ns/op BenchmarkIndexAnyUTF8/16:8-10 18911696 63.38 ns/op BenchmarkIndexAnyUTF8/16:8-10 18965822 63.51 ns/op BenchmarkIndexAnyUTF8/16:8-10 18895368 63.32 ns/op BenchmarkIndexAnyUTF8/16:8-10 18950122 63.33 ns/op BenchmarkIndexAnyUTF8/16:8-10 18970981 63.34 ns/op BenchmarkIndexAnyUTF8/16:8-10 18938259 63.49 ns/op BenchmarkIndexAnyUTF8/16:8-10 18959978 63.35 ns/op BenchmarkIndexAnyUTF8/16:8-10 18971844 63.36 ns/op BenchmarkIndexAnyUTF8/16:8-10 18930704 63.66 ns/op BenchmarkIndexAnyUTF8/16:16-10 18055429 66.43 ns/op BenchmarkIndexAnyUTF8/16:16-10 18039087 66.31 ns/op BenchmarkIndexAnyUTF8/16:16-10 18053720 66.31 ns/op BenchmarkIndexAnyUTF8/16:16-10 18082863 66.30 ns/op BenchmarkIndexAnyUTF8/16:16-10 18051446 66.26 ns/op BenchmarkIndexAnyUTF8/16:16-10 18010220 66.46 ns/op BenchmarkIndexAnyUTF8/16:16-10 18096067 66.28 ns/op BenchmarkIndexAnyUTF8/16:16-10 18068739 66.27 ns/op BenchmarkIndexAnyUTF8/16:16-10 18040128 66.29 ns/op BenchmarkIndexAnyUTF8/16:16-10 18056221 66.43 ns/op BenchmarkIndexAnyUTF8/16:32-10 18050337 66.27 ns/op BenchmarkIndexAnyUTF8/16:32-10 18060253 66.28 ns/op BenchmarkIndexAnyUTF8/16:32-10 18082716 66.30 ns/op BenchmarkIndexAnyUTF8/16:32-10 18044252 66.43 ns/op BenchmarkIndexAnyUTF8/16:32-10 18057988 66.26 ns/op BenchmarkIndexAnyUTF8/16:32-10 18058972 66.25 ns/op BenchmarkIndexAnyUTF8/16:32-10 18054184 66.33 ns/op BenchmarkIndexAnyUTF8/16:32-10 18067867 66.44 ns/op BenchmarkIndexAnyUTF8/16:32-10 18046209 66.27 ns/op BenchmarkIndexAnyUTF8/16:32-10 18058135 66.28 ns/op BenchmarkIndexAnyUTF8/16:64-10 16181311 74.11 ns/op BenchmarkIndexAnyUTF8/16:64-10 16179520 74.96 ns/op BenchmarkIndexAnyUTF8/16:64-10 16190226 74.10 ns/op BenchmarkIndexAnyUTF8/16:64-10 16182630 74.13 ns/op BenchmarkIndexAnyUTF8/16:64-10 16167820 74.12 ns/op BenchmarkIndexAnyUTF8/16:64-10 16199013 74.26 ns/op BenchmarkIndexAnyUTF8/16:64-10 16168548 74.10 ns/op BenchmarkIndexAnyUTF8/16:64-10 16176157 74.15 ns/op BenchmarkIndexAnyUTF8/16:64-10 16177375 74.11 ns/op BenchmarkIndexAnyUTF8/16:64-10 16184148 74.31 ns/op BenchmarkIndexAnyUTF8/256:1-10 7121053 168.5 ns/op BenchmarkIndexAnyUTF8/256:1-10 7121278 168.5 ns/op BenchmarkIndexAnyUTF8/256:1-10 7119397 168.5 ns/op BenchmarkIndexAnyUTF8/256:1-10 7119435 168.9 ns/op BenchmarkIndexAnyUTF8/256:1-10 7117412 168.5 ns/op BenchmarkIndexAnyUTF8/256:1-10 7116770 168.5 ns/op BenchmarkIndexAnyUTF8/256:1-10 7119758 168.5 ns/op BenchmarkIndexAnyUTF8/256:1-10 7118144 170.1 ns/op BenchmarkIndexAnyUTF8/256:1-10 7119706 168.6 ns/op BenchmarkIndexAnyUTF8/256:1-10 7118334 168.5 ns/op BenchmarkIndexAnyUTF8/256:2-10 1359590 884.8 ns/op BenchmarkIndexAnyUTF8/256:2-10 1358793 883.0 ns/op BenchmarkIndexAnyUTF8/256:2-10 1359142 882.9 ns/op BenchmarkIndexAnyUTF8/256:2-10 1354564 883.1 ns/op BenchmarkIndexAnyUTF8/256:2-10 1359312 883.2 ns/op BenchmarkIndexAnyUTF8/256:2-10 1359063 885.1 ns/op BenchmarkIndexAnyUTF8/256:2-10 1359109 883.0 ns/op BenchmarkIndexAnyUTF8/256:2-10 1359042 882.9 ns/op BenchmarkIndexAnyUTF8/256:2-10 1354740 883.4 ns/op BenchmarkIndexAnyUTF8/256:2-10 1358516 882.8 ns/op BenchmarkIndexAnyUTF8/256:4-10 1358804 884.6 ns/op BenchmarkIndexAnyUTF8/256:4-10 1358713 883.0 ns/op BenchmarkIndexAnyUTF8/256:4-10 1359180 882.8 ns/op BenchmarkIndexAnyUTF8/256:4-10 1354633 883.0 ns/op BenchmarkIndexAnyUTF8/256:4-10 1358911 882.9 ns/op BenchmarkIndexAnyUTF8/256:4-10 1359308 885.1 ns/op BenchmarkIndexAnyUTF8/256:4-10 1358826 888.0 ns/op BenchmarkIndexAnyUTF8/256:4-10 1359086 883.0 ns/op BenchmarkIndexAnyUTF8/256:4-10 1355210 883.0 ns/op BenchmarkIndexAnyUTF8/256:4-10 1359406 882.9 ns/op BenchmarkIndexAnyUTF8/256:8-10 1359598 885.0 ns/op BenchmarkIndexAnyUTF8/256:8-10 1358940 882.8 ns/op BenchmarkIndexAnyUTF8/256:8-10 1359073 884.9 ns/op BenchmarkIndexAnyUTF8/256:8-10 1359106 883.1 ns/op BenchmarkIndexAnyUTF8/256:8-10 1359568 882.9 ns/op BenchmarkIndexAnyUTF8/256:8-10 1357963 884.6 ns/op BenchmarkIndexAnyUTF8/256:8-10 1358617 883.0 ns/op BenchmarkIndexAnyUTF8/256:8-10 1348730 887.3 ns/op BenchmarkIndexAnyUTF8/256:8-10 1359002 883.2 ns/op BenchmarkIndexAnyUTF8/256:8-10 1359325 883.1 ns/op BenchmarkIndexAnyUTF8/256:16-10 1296193 923.4 ns/op BenchmarkIndexAnyUTF8/256:16-10 1296631 922.8 ns/op BenchmarkIndexAnyUTF8/256:16-10 1300238 925.2 ns/op BenchmarkIndexAnyUTF8/256:16-10 1300118 922.9 ns/op BenchmarkIndexAnyUTF8/256:16-10 1299908 923.0 ns/op BenchmarkIndexAnyUTF8/256:16-10 1295863 922.9 ns/op BenchmarkIndexAnyUTF8/256:16-10 1300196 922.9 ns/op BenchmarkIndexAnyUTF8/256:16-10 1300582 925.2 ns/op BenchmarkIndexAnyUTF8/256:16-10 1300020 922.7 ns/op BenchmarkIndexAnyUTF8/256:16-10 1299940 922.8 ns/op BenchmarkIndexAnyUTF8/256:32-10 1296150 923.0 ns/op BenchmarkIndexAnyUTF8/256:32-10 1300603 922.8 ns/op BenchmarkIndexAnyUTF8/256:32-10 1300717 924.8 ns/op BenchmarkIndexAnyUTF8/256:32-10 1300030 922.7 ns/op BenchmarkIndexAnyUTF8/256:32-10 1300431 925.2 ns/op BenchmarkIndexAnyUTF8/256:32-10 1290508 923.0 ns/op BenchmarkIndexAnyUTF8/256:32-10 1300246 922.6 ns/op BenchmarkIndexAnyUTF8/256:32-10 1296177 922.8 ns/op BenchmarkIndexAnyUTF8/256:32-10 1300335 922.9 ns/op BenchmarkIndexAnyUTF8/256:32-10 1300398 925.2 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1043 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1043 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1044 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1043 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1047 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1048 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1047 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1044 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1044 ns/op BenchmarkIndexAnyUTF8/256:64-10 1000000 1047 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276098206 4.346 ns/op BenchmarkLastIndexAnyASCII/1:1-10 274564069 4.368 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276199407 4.355 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276087724 4.349 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276110436 4.354 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276148532 4.357 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276119568 4.346 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276164898 4.344 ns/op BenchmarkLastIndexAnyASCII/1:1-10 276206930 4.346 ns/op BenchmarkLastIndexAnyASCII/1:1-10 274685106 4.346 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276214056 4.346 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276170404 4.346 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276108423 4.356 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276229898 4.344 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276173371 4.346 ns/op BenchmarkLastIndexAnyASCII/1:2-10 275998111 4.353 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276219062 4.345 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276071157 4.345 ns/op BenchmarkLastIndexAnyASCII/1:2-10 276156476 4.386 ns/op BenchmarkLastIndexAnyASCII/1:2-10 274864290 4.361 ns/op BenchmarkLastIndexAnyASCII/1:4-10 275458984 4.367 ns/op BenchmarkLastIndexAnyASCII/1:4-10 274920019 4.367 ns/op BenchmarkLastIndexAnyASCII/1:4-10 275956698 4.372 ns/op BenchmarkLastIndexAnyASCII/1:4-10 272148363 4.393 ns/op BenchmarkLastIndexAnyASCII/1:4-10 276152133 4.378 ns/op BenchmarkLastIndexAnyASCII/1:4-10 275719033 4.362 ns/op BenchmarkLastIndexAnyASCII/1:4-10 272122290 4.345 ns/op BenchmarkLastIndexAnyASCII/1:4-10 276085423 4.353 ns/op BenchmarkLastIndexAnyASCII/1:4-10 276034722 4.345 ns/op BenchmarkLastIndexAnyASCII/1:4-10 276043321 4.345 ns/op BenchmarkLastIndexAnyASCII/1:8-10 276194295 4.345 ns/op BenchmarkLastIndexAnyASCII/1:8-10 274226245 4.345 ns/op BenchmarkLastIndexAnyASCII/1:8-10 276166724 4.345 ns/op BenchmarkLastIndexAnyASCII/1:8-10 276149750 4.346 ns/op BenchmarkLastIndexAnyASCII/1:8-10 275653506 4.352 ns/op BenchmarkLastIndexAnyASCII/1:8-10 276111309 4.346 ns/op BenchmarkLastIndexAnyASCII/1:8-10 275964498 4.345 ns/op BenchmarkLastIndexAnyASCII/1:8-10 276150015 4.359 ns/op BenchmarkLastIndexAnyASCII/1:8-10 275553416 4.378 ns/op BenchmarkLastIndexAnyASCII/1:8-10 276016812 4.344 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276255016 4.355 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276207248 4.347 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276111230 4.345 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276190798 4.357 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276114300 4.344 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276108133 4.345 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276074571 4.356 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276126795 4.344 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276119197 4.346 ns/op BenchmarkLastIndexAnyASCII/1:16-10 276201632 4.348 ns/op BenchmarkLastIndexAnyASCII/1:32-10 274995568 4.345 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276149856 4.346 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276183356 4.346 ns/op BenchmarkLastIndexAnyASCII/1:32-10 274417512 4.345 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276152504 4.346 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276173530 4.345 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276165003 4.356 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276226693 4.345 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276203275 4.346 ns/op BenchmarkLastIndexAnyASCII/1:32-10 276207751 4.356 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241649235 4.998 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241652540 4.965 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241626670 4.977 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241746294 4.966 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241746030 4.966 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241622778 4.978 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241657386 4.968 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241597279 4.966 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241715169 4.977 ns/op BenchmarkLastIndexAnyASCII/1:64-10 241562668 4.966 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121756864 9.854 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121431602 9.856 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121757616 9.856 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121757137 9.932 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121464747 9.856 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121776330 9.855 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121376372 9.855 ns/op BenchmarkLastIndexAnyASCII/16:1-10 120136839 9.857 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121303430 9.861 ns/op BenchmarkLastIndexAnyASCII/16:1-10 121237276 9.858 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.48 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.51 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.48 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.48 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.48 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.48 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.51 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.48 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.49 ns/op BenchmarkLastIndexAnyASCII/16:2-10 100000000 10.48 ns/op BenchmarkLastIndexAnyASCII/16:4-10 99113487 12.12 ns/op BenchmarkLastIndexAnyASCII/16:4-10 99132253 12.15 ns/op BenchmarkLastIndexAnyASCII/16:4-10 99122697 12.12 ns/op BenchmarkLastIndexAnyASCII/16:4-10 99166725 12.12 ns/op BenchmarkLastIndexAnyASCII/16:4-10 99165357 12.12 ns/op BenchmarkLastIndexAnyASCII/16:4-10 98622036 12.14 ns/op BenchmarkLastIndexAnyASCII/16:4-10 98838303 12.12 ns/op BenchmarkLastIndexAnyASCII/16:4-10 99015692 12.12 ns/op BenchmarkLastIndexAnyASCII/16:4-10 99062684 12.11 ns/op BenchmarkLastIndexAnyASCII/16:4-10 98834917 12.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69704120 17.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69777924 17.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69121600 17.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69680005 17.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69637882 17.25 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69702261 17.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69787557 17.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69803966 17.21 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69794832 17.25 ns/op BenchmarkLastIndexAnyASCII/16:8-10 69526926 17.21 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35399098 33.73 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35418646 33.74 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35515348 33.82 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35517319 33.74 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35575054 33.73 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35496700 33.73 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35565302 33.80 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35515522 33.74 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35465271 33.72 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35505890 33.73 ns/op BenchmarkLastIndexAnyASCII/16:32-10 17803218 66.83 ns/op BenchmarkLastIndexAnyASCII/16:32-10 17470332 66.50 ns/op BenchmarkLastIndexAnyASCII/16:32-10 18064388 66.47 ns/op BenchmarkLastIndexAnyASCII/16:32-10 18084738 66.56 ns/op BenchmarkLastIndexAnyASCII/16:32-10 18071869 66.66 ns/op BenchmarkLastIndexAnyASCII/16:32-10 17941465 66.67 ns/op BenchmarkLastIndexAnyASCII/16:32-10 18036568 66.55 ns/op BenchmarkLastIndexAnyASCII/16:32-10 18050800 66.58 ns/op BenchmarkLastIndexAnyASCII/16:32-10 18012056 66.51 ns/op BenchmarkLastIndexAnyASCII/16:32-10 17807808 66.75 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9124396 131.7 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9103408 131.5 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9116565 131.5 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9110700 132.0 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9133375 131.5 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9126136 131.7 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9116941 138.2 ns/op BenchmarkLastIndexAnyASCII/16:64-10 8757226 133.8 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9100975 131.6 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9106897 131.5 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8190145 146.8 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8187322 146.4 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8194052 146.4 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8198053 146.4 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8193216 146.7 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8190315 146.5 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8200116 147.3 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8192266 147.3 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8194255 146.8 ns/op BenchmarkLastIndexAnyASCII/256:1-10 8194731 146.4 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8224623 145.9 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8180797 146.0 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8220895 146.2 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8227165 146.0 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8189796 145.9 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8190816 145.9 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8229638 146.3 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8231247 145.9 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8227491 145.9 ns/op BenchmarkLastIndexAnyASCII/256:2-10 8234061 145.9 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8008753 150.0 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8014485 149.8 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8000032 149.8 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8002844 149.9 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7924266 149.8 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8001104 150.0 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7834862 150.5 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8000932 150.2 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8000170 149.8 ns/op BenchmarkLastIndexAnyASCII/256:4-10 8007706 149.8 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7801942 153.8 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7790965 154.2 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7789598 153.8 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7792839 153.9 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7793109 153.8 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7790394 154.2 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7785880 153.8 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7802295 153.8 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7791992 153.8 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7792976 154.2 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7232858 165.9 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7221021 165.9 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7243254 165.8 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7230007 166.3 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7231663 165.9 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7234081 165.9 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7231692 166.0 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7157350 165.9 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7233499 165.9 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7237902 165.9 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6057405 200.0 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6056108 198.4 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6053006 198.3 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6045060 198.2 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6055995 198.8 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6046983 198.3 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6054396 198.3 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6055176 201.6 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5759454 203.3 ns/op BenchmarkLastIndexAnyASCII/256:32-10 6051790 198.4 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4548188 264.1 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4547764 264.4 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4546767 263.8 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4546304 263.9 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4547742 263.8 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4502570 263.8 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4467285 268.7 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4238677 271.7 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4355206 264.5 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4547564 265.3 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 273443793 4.347 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 276122638 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 272334166 4.348 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 276178297 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 276215062 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 274325138 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 276160898 4.360 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 276001946 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 276043824 4.357 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 276182535 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276064224 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276220069 4.356 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276207248 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276115201 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276229501 4.356 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276184203 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276012500 4.347 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276190932 4.354 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276077032 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 276152160 4.373 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276160740 4.355 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276000121 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276116074 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276147738 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 274316332 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276184071 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276111626 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 274371762 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276093574 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 276135770 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276158144 4.356 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276070072 4.347 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276151022 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276194322 4.359 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 275249348 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276065706 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276182403 4.376 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 274849050 4.355 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276095215 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 276078012 4.357 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276139689 4.344 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276042580 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 271117894 4.355 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276089709 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276178987 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276216148 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 274587916 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276151630 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276208201 4.344 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 276207831 4.354 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276199804 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276179384 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276192334 4.354 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276103686 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276271023 4.345 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276257799 4.355 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 271467902 4.344 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276364156 4.343 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276127537 4.356 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 276163758 4.346 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241695006 4.966 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241717928 4.978 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241589294 4.966 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241655622 4.966 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241693748 4.977 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241500866 4.964 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241563154 4.966 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241626163 4.979 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241613859 4.967 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 241670384 4.964 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46640356 25.65 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46625103 25.73 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46664766 25.66 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46631973 25.66 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46740726 25.68 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46213167 25.84 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46696012 25.76 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46617705 25.66 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46800274 25.64 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46460004 25.75 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15903518 75.34 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15901322 75.38 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15916886 75.27 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15922818 75.48 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15872096 75.35 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15939817 75.31 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15922122 75.34 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15914415 75.52 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15886201 75.34 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 15889909 75.36 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15906943 75.33 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15906996 75.50 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15897768 75.37 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15911118 75.33 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15913808 75.30 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15911926 75.39 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15436548 75.35 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15915198 75.35 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15900058 75.36 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 15913747 76.11 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15928101 75.54 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15942694 75.37 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15899979 75.33 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15893740 75.35 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15919482 75.56 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15908103 75.32 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15893661 75.32 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15913570 75.33 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15910318 75.47 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 15916737 75.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15111778 79.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15117618 79.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15109765 79.55 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15106992 79.35 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15120078 79.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15081889 79.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15119140 79.57 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15116515 79.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15124080 79.39 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 15115848 79.38 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15108703 79.56 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15111319 79.35 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15103767 79.53 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 14636815 79.64 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15112072 79.56 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15102199 79.39 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15117205 79.38 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15118276 79.38 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15111248 79.55 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 15121975 79.38 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 13995208 85.67 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 14003551 85.71 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 14009130 85.89 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 13991850 85.75 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 13990770 85.71 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 13974246 85.75 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 13995066 85.84 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 13994427 85.77 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 14002318 85.68 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 14011748 85.73 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2184970 550.0 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2188556 556.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2171304 548.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2193828 549.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2184356 553.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2195281 548.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2172952 548.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2173840 554.0 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2191273 549.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2180230 545.7 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1047 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1045 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1045 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1048 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 1000000 1045 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1043 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1043 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1060 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1047 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1043 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1043 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1043 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1047 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1053 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1047 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1047 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 1000000 1044 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1125 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1125 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1123 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1125 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1133 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 1000000 1122 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 985224 1218 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 980755 1221 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 984433 1218 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 983511 1218 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 985801 1218 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 985531 1221 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 979354 1218 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 985804 1218 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 984796 1218 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 985588 1221 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58646 20446 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58653 20450 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58684 20453 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58653 20491 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58664 20445 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58681 20446 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58627 20451 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58610 20493 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58635 20485 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 58641 20449 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58632 20506 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58642 20610 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58653 20454 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58606 20458 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58651 20510 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58652 20455 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58622 20458 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58585 20457 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58629 20507 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 58656 20451 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58605 20485 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58576 20525 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58570 20478 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58545 20475 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58554 20479 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58473 20520 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58590 20479 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58602 20480 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58533 20484 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 58483 20521 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 20984 57384 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 20989 57160 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 20934 57063 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 21030 57069 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 20988 57021 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 20934 57176 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 21068 57100 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 21025 57160 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 21001 57078 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 21027 57129 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41954 28589 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41688 28588 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41973 28582 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41949 28586 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41966 28644 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41812 28610 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41956 28581 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41946 28645 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41913 28588 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 41964 28592 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78184 15348 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78165 15468 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78168 15339 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78096 15342 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78194 15347 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78204 15382 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78093 15347 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78102 15347 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78163 15348 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 78188 15381 ns/op BenchmarkIndexByte_Bytes/10-10 396339310 2.910 ns/op 3436.11 MB/s BenchmarkIndexByte_Bytes/10-10 396207141 2.910 ns/op 3436.86 MB/s BenchmarkIndexByte_Bytes/10-10 396375259 2.918 ns/op 3427.54 MB/s BenchmarkIndexByte_Bytes/10-10 396464308 2.910 ns/op 3436.31 MB/s BenchmarkIndexByte_Bytes/10-10 396437512 2.909 ns/op 3437.13 MB/s BenchmarkIndexByte_Bytes/10-10 396569235 2.910 ns/op 3436.92 MB/s BenchmarkIndexByte_Bytes/10-10 396494109 2.918 ns/op 3427.49 MB/s BenchmarkIndexByte_Bytes/10-10 396266835 2.909 ns/op 3437.22 MB/s BenchmarkIndexByte_Bytes/10-10 396378040 2.910 ns/op 3436.79 MB/s BenchmarkIndexByte_Bytes/10-10 396522879 2.918 ns/op 3427.25 MB/s BenchmarkIndexByte_Bytes/32-10 429456159 2.810 ns/op 11388.45 MB/s BenchmarkIndexByte_Bytes/32-10 429483313 2.793 ns/op 11456.93 MB/s BenchmarkIndexByte_Bytes/32-10 429556147 2.793 ns/op 11456.66 MB/s BenchmarkIndexByte_Bytes/32-10 429597348 2.800 ns/op 11429.83 MB/s BenchmarkIndexByte_Bytes/32-10 429145281 2.793 ns/op 11456.67 MB/s BenchmarkIndexByte_Bytes/32-10 429687079 2.793 ns/op 11459.01 MB/s BenchmarkIndexByte_Bytes/32-10 429490999 2.793 ns/op 11457.35 MB/s BenchmarkIndexByte_Bytes/32-10 425204466 2.793 ns/op 11456.44 MB/s BenchmarkIndexByte_Bytes/32-10 429594591 2.811 ns/op 11382.21 MB/s BenchmarkIndexByte_Bytes/32-10 429484144 2.793 ns/op 11457.98 MB/s BenchmarkIndexByte_Bytes/4K-10 16845493 71.16 ns/op 57558.45 MB/s BenchmarkIndexByte_Bytes/4K-10 16901586 70.99 ns/op 57701.69 MB/s BenchmarkIndexByte_Bytes/4K-10 16892059 70.97 ns/op 57715.53 MB/s BenchmarkIndexByte_Bytes/4K-10 16872118 70.98 ns/op 57707.17 MB/s BenchmarkIndexByte_Bytes/4K-10 16888533 71.17 ns/op 57548.34 MB/s BenchmarkIndexByte_Bytes/4K-10 16902985 70.99 ns/op 57701.58 MB/s BenchmarkIndexByte_Bytes/4K-10 16871773 70.97 ns/op 57714.61 MB/s BenchmarkIndexByte_Bytes/4K-10 16891742 70.97 ns/op 57713.60 MB/s BenchmarkIndexByte_Bytes/4K-10 16897194 71.15 ns/op 57571.97 MB/s BenchmarkIndexByte_Bytes/4K-10 16885592 70.98 ns/op 57708.43 MB/s BenchmarkIndexByte_Bytes/4M-10 19214 62469 ns/op 67142.15 MB/s BenchmarkIndexByte_Bytes/4M-10 19209 62595 ns/op 67006.85 MB/s BenchmarkIndexByte_Bytes/4M-10 19204 63142 ns/op 66426.42 MB/s BenchmarkIndexByte_Bytes/4M-10 19200 62839 ns/op 66746.82 MB/s BenchmarkIndexByte_Bytes/4M-10 19077 62607 ns/op 66994.27 MB/s BenchmarkIndexByte_Bytes/4M-10 19202 62478 ns/op 67132.85 MB/s BenchmarkIndexByte_Bytes/4M-10 19212 62479 ns/op 67131.14 MB/s BenchmarkIndexByte_Bytes/4M-10 19209 62642 ns/op 66956.84 MB/s BenchmarkIndexByte_Bytes/4M-10 19202 62466 ns/op 67145.27 MB/s BenchmarkIndexByte_Bytes/4M-10 19214 62454 ns/op 67158.71 MB/s BenchmarkIndexByte_Bytes/64M-10 1032 1106366 ns/op 60657.00 MB/s BenchmarkIndexByte_Bytes/64M-10 1066 1096849 ns/op 61183.31 MB/s BenchmarkIndexByte_Bytes/64M-10 1069 1097860 ns/op 61127.00 MB/s BenchmarkIndexByte_Bytes/64M-10 1069 1097669 ns/op 61137.61 MB/s BenchmarkIndexByte_Bytes/64M-10 1066 1098091 ns/op 61114.11 MB/s BenchmarkIndexByte_Bytes/64M-10 1069 1098300 ns/op 61102.48 MB/s BenchmarkIndexByte_Bytes/64M-10 1069 1103536 ns/op 60812.57 MB/s BenchmarkIndexByte_Bytes/64M-10 1065 1097778 ns/op 61131.52 MB/s BenchmarkIndexByte_Bytes/64M-10 1068 1098282 ns/op 61103.51 MB/s BenchmarkIndexByte_Bytes/64M-10 1070 1097884 ns/op 61125.66 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.26 ns/op 975.08 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.30 ns/op 970.84 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.24 ns/op 976.20 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.27 ns/op 973.24 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.24 ns/op 976.24 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.24 ns/op 976.50 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.24 ns/op 976.74 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.24 ns/op 976.39 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.27 ns/op 973.64 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 10.24 ns/op 976.54 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.18 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.80 ns/op 2712.93 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.82 ns/op 2707.17 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.14 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.52 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.25 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.41 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.82 ns/op 2706.99 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.38 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.53 MB/s BenchmarkIndexRune_Bytes/4K-10 14376608 83.12 ns/op 49279.71 MB/s BenchmarkIndexRune_Bytes/4K-10 14404032 83.77 ns/op 48897.63 MB/s BenchmarkIndexRune_Bytes/4K-10 14370316 83.11 ns/op 49282.98 MB/s BenchmarkIndexRune_Bytes/4K-10 14356942 83.10 ns/op 49290.09 MB/s BenchmarkIndexRune_Bytes/4K-10 14392960 83.62 ns/op 48982.01 MB/s BenchmarkIndexRune_Bytes/4K-10 14265610 83.79 ns/op 48883.84 MB/s BenchmarkIndexRune_Bytes/4K-10 14415502 83.21 ns/op 49225.07 MB/s BenchmarkIndexRune_Bytes/4K-10 14422484 83.12 ns/op 49275.35 MB/s BenchmarkIndexRune_Bytes/4K-10 14324958 83.17 ns/op 49245.69 MB/s BenchmarkIndexRune_Bytes/4K-10 14231920 83.77 ns/op 48894.59 MB/s BenchmarkIndexRune_Bytes/4M-10 19195 62907 ns/op 66675.04 MB/s BenchmarkIndexRune_Bytes/4M-10 19083 62548 ns/op 67056.85 MB/s BenchmarkIndexRune_Bytes/4M-10 19189 62652 ns/op 66946.31 MB/s BenchmarkIndexRune_Bytes/4M-10 19186 62537 ns/op 67068.96 MB/s BenchmarkIndexRune_Bytes/4M-10 19195 62535 ns/op 67070.95 MB/s BenchmarkIndexRune_Bytes/4M-10 19197 62683 ns/op 66913.21 MB/s BenchmarkIndexRune_Bytes/4M-10 19192 62530 ns/op 67076.82 MB/s BenchmarkIndexRune_Bytes/4M-10 19185 62518 ns/op 67089.73 MB/s BenchmarkIndexRune_Bytes/4M-10 19098 62518 ns/op 67089.38 MB/s BenchmarkIndexRune_Bytes/4M-10 19184 62507 ns/op 67101.39 MB/s BenchmarkIndexRune_Bytes/64M-10 1054 1099850 ns/op 61016.36 MB/s BenchmarkIndexRune_Bytes/64M-10 1069 1095797 ns/op 61242.04 MB/s BenchmarkIndexRune_Bytes/64M-10 1065 1097063 ns/op 61171.37 MB/s BenchmarkIndexRune_Bytes/64M-10 1070 1098345 ns/op 61100.00 MB/s BenchmarkIndexRune_Bytes/64M-10 1064 1098935 ns/op 61067.18 MB/s BenchmarkIndexRune_Bytes/64M-10 1066 1099952 ns/op 61010.70 MB/s BenchmarkIndexRune_Bytes/64M-10 1068 1106239 ns/op 60664.00 MB/s BenchmarkIndexRune_Bytes/64M-10 1059 1098196 ns/op 61108.28 MB/s BenchmarkIndexRune_Bytes/64M-10 1069 1098844 ns/op 61072.22 MB/s BenchmarkIndexRune_Bytes/64M-10 1066 1098468 ns/op 61093.16 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386605722 3.104 ns/op 3221.81 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386448122 3.104 ns/op 3221.88 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 385857412 3.103 ns/op 3222.74 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 383226596 3.104 ns/op 3221.98 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386450766 3.104 ns/op 3221.62 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386697082 3.104 ns/op 3221.72 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386613195 3.111 ns/op 3214.21 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386595654 3.104 ns/op 3221.65 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386792018 3.103 ns/op 3222.69 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 386517464 3.110 ns/op 3215.46 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386553157 3.104 ns/op 10310.34 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386436506 3.104 ns/op 10308.22 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386443818 3.104 ns/op 10308.56 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386746101 3.111 ns/op 10286.42 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386699782 3.103 ns/op 10311.38 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386623731 3.104 ns/op 10308.75 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386558397 3.120 ns/op 10255.47 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386401718 3.105 ns/op 10307.09 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386518087 3.103 ns/op 10311.12 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 386646414 3.105 ns/op 10307.07 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16964606 72.29 ns/op 56660.86 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16530139 72.11 ns/op 56804.74 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16768832 71.96 ns/op 56919.99 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16764800 70.66 ns/op 57964.39 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16968124 71.98 ns/op 56906.96 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16961559 71.87 ns/op 56990.24 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16651180 71.77 ns/op 57068.31 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16902816 71.92 ns/op 56951.49 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16853714 71.92 ns/op 56953.01 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 16768821 70.67 ns/op 57959.16 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19210 62475 ns/op 67136.17 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19213 62637 ns/op 66962.60 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19212 62466 ns/op 67145.43 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19207 62487 ns/op 67122.80 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19201 62608 ns/op 66992.80 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19206 62474 ns/op 67137.26 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19200 62890 ns/op 66692.67 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19110 62478 ns/op 67132.74 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19201 62464 ns/op 67147.98 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 19207 62514 ns/op 67094.24 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1054 1097096 ns/op 61169.56 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1069 1100364 ns/op 60987.89 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1068 1096547 ns/op 61200.14 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1068 1098671 ns/op 61081.84 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1066 1098967 ns/op 61065.42 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1063 1098756 ns/op 61077.12 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1070 1099544 ns/op 61033.37 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1068 1098849 ns/op 61071.96 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1066 1098572 ns/op 61087.35 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 1066 1099171 ns/op 61054.09 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257692615 4.656 ns/op 2147.97 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257720726 4.666 ns/op 2143.32 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257680096 4.655 ns/op 2148.14 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257743099 4.658 ns/op 2147.02 MB/s BenchmarkIndexNonASCII_Bytes/10-10 253726788 4.668 ns/op 2142.46 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257632864 4.665 ns/op 2143.73 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257825934 4.656 ns/op 2147.63 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257687083 4.678 ns/op 2137.75 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257724762 4.655 ns/op 2148.35 MB/s BenchmarkIndexNonASCII_Bytes/10-10 257821087 4.656 ns/op 2147.78 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.48 ns/op 2786.59 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.61 ns/op 2755.20 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.48 ns/op 2786.50 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.48 ns/op 2786.90 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.49 ns/op 2786.23 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.51 ns/op 2779.77 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.48 ns/op 2786.34 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.49 ns/op 2785.95 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.48 ns/op 2786.46 MB/s BenchmarkIndexNonASCII_Bytes/32-10 100000000 11.49 ns/op 2786.20 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 936554 1285 ns/op 3187.30 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 934672 1282 ns/op 3195.81 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 935809 1282 ns/op 3195.33 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 936889 1283 ns/op 3192.66 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 934396 1285 ns/op 3187.59 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 936560 1282 ns/op 3195.51 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 933757 1282 ns/op 3195.19 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 937352 1282 ns/op 3195.36 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 936511 1285 ns/op 3188.51 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 935668 1282 ns/op 3195.55 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1311799 ns/op 3197.37 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 916 1304478 ns/op 3215.31 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1307659 ns/op 3207.49 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1304464 ns/op 3215.35 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1304518 ns/op 3215.21 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1304643 ns/op 3214.90 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1307877 ns/op 3206.96 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1305345 ns/op 3213.18 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1304548 ns/op 3215.14 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 918 1304991 ns/op 3214.05 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21037431 ns/op 3189.97 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21017705 ns/op 3192.97 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21060765 ns/op 3186.44 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21030080 ns/op 3191.09 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21057878 ns/op 3186.88 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21079477 ns/op 3183.61 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21065591 ns/op 3185.71 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21076406 ns/op 3184.08 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21046807 ns/op 3188.55 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 56 21074638 ns/op 3184.34 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2002.766s strcase-0.0.5/internal/benchtest/results/Apple-M1-Max/strcase.10.1706682967.d1f0f64c.txt 0000664 0000000 0000000 00000303671 14720254634 0027476 0 ustar 00root root 0000000 0000000 goos: darwin goarch: arm64 pkg: github.com/charlievieth/strcase/internal/benchtest BenchmarkIndexRune-10 103398248 11.46 ns/op BenchmarkIndexRune-10 100000000 11.24 ns/op BenchmarkIndexRune-10 100000000 11.20 ns/op BenchmarkIndexRune-10 100000000 11.21 ns/op BenchmarkIndexRune-10 100000000 11.18 ns/op BenchmarkIndexRune-10 100000000 11.22 ns/op BenchmarkIndexRune-10 100000000 11.23 ns/op BenchmarkIndexRune-10 100000000 11.25 ns/op BenchmarkIndexRune-10 100000000 11.37 ns/op BenchmarkIndexRune-10 100000000 11.25 ns/op BenchmarkIndexRuneLongString-10 95373078 12.54 ns/op BenchmarkIndexRuneLongString-10 96184026 12.52 ns/op BenchmarkIndexRuneLongString-10 95352237 12.52 ns/op BenchmarkIndexRuneLongString-10 95084962 12.52 ns/op BenchmarkIndexRuneLongString-10 94740272 12.61 ns/op BenchmarkIndexRuneLongString-10 93439138 12.55 ns/op BenchmarkIndexRuneLongString-10 94373008 12.58 ns/op BenchmarkIndexRuneLongString-10 93683828 12.49 ns/op BenchmarkIndexRuneLongString-10 94252245 12.46 ns/op BenchmarkIndexRuneLongString-10 94629447 12.46 ns/op BenchmarkIndexRuneFastPath-10 253960236 4.729 ns/op BenchmarkIndexRuneFastPath-10 253870756 4.689 ns/op BenchmarkIndexRuneFastPath-10 256728973 4.675 ns/op BenchmarkIndexRuneFastPath-10 253151983 4.711 ns/op BenchmarkIndexRuneFastPath-10 255442635 4.683 ns/op BenchmarkIndexRuneFastPath-10 253921477 4.705 ns/op BenchmarkIndexRuneFastPath-10 252824768 4.716 ns/op BenchmarkIndexRuneFastPath-10 256707370 4.675 ns/op BenchmarkIndexRuneFastPath-10 252319411 4.824 ns/op BenchmarkIndexRuneFastPath-10 255097476 4.680 ns/op BenchmarkIndex-10 254305152 4.763 ns/op BenchmarkIndex-10 255567398 4.686 ns/op BenchmarkIndex-10 256463983 4.690 ns/op BenchmarkIndex-10 252165028 4.724 ns/op BenchmarkIndex-10 256834586 4.822 ns/op BenchmarkIndex-10 254630337 4.808 ns/op BenchmarkIndex-10 251027425 4.782 ns/op BenchmarkIndex-10 249222434 4.860 ns/op BenchmarkIndex-10 253680412 4.720 ns/op BenchmarkIndex-10 253409479 4.721 ns/op BenchmarkLastIndex-10 182993371 6.556 ns/op BenchmarkLastIndex-10 181890052 6.567 ns/op BenchmarkLastIndex-10 183451455 6.560 ns/op BenchmarkLastIndex-10 183388257 6.534 ns/op BenchmarkLastIndex-10 183613864 6.535 ns/op BenchmarkLastIndex-10 183212563 6.588 ns/op BenchmarkLastIndex-10 183493603 6.533 ns/op BenchmarkLastIndex-10 183488143 6.536 ns/op BenchmarkLastIndex-10 183049722 6.533 ns/op BenchmarkLastIndex-10 183497390 6.535 ns/op BenchmarkIndexByte-10 339617914 3.526 ns/op BenchmarkIndexByte-10 337432077 3.527 ns/op BenchmarkIndexByte-10 339718988 3.558 ns/op BenchmarkIndexByte-10 337548825 3.576 ns/op BenchmarkIndexByte-10 337435992 3.575 ns/op BenchmarkIndexByte-10 336959193 3.561 ns/op BenchmarkIndexByte-10 337033050 3.528 ns/op BenchmarkIndexByte-10 340268469 3.536 ns/op BenchmarkIndexByte-10 339414789 3.531 ns/op BenchmarkIndexByte-10 339466958 3.611 ns/op BenchmarkEqualFold/ASCII-10 130827525 9.256 ns/op BenchmarkEqualFold/ASCII-10 129124716 9.270 ns/op BenchmarkEqualFold/ASCII-10 130532817 9.313 ns/op BenchmarkEqualFold/ASCII-10 128700801 9.237 ns/op BenchmarkEqualFold/ASCII-10 130086981 9.473 ns/op BenchmarkEqualFold/ASCII-10 126814168 9.480 ns/op BenchmarkEqualFold/ASCII-10 126031090 9.539 ns/op BenchmarkEqualFold/ASCII-10 125906604 9.570 ns/op BenchmarkEqualFold/ASCII-10 125596473 9.455 ns/op BenchmarkEqualFold/ASCII-10 125945184 9.545 ns/op BenchmarkEqualFold/UnicodePrefix-10 36363774 32.93 ns/op BenchmarkEqualFold/UnicodePrefix-10 36367676 32.89 ns/op BenchmarkEqualFold/UnicodePrefix-10 36705572 32.77 ns/op BenchmarkEqualFold/UnicodePrefix-10 36616111 32.19 ns/op BenchmarkEqualFold/UnicodePrefix-10 37782631 31.53 ns/op BenchmarkEqualFold/UnicodePrefix-10 37819246 31.86 ns/op BenchmarkEqualFold/UnicodePrefix-10 37140634 31.71 ns/op BenchmarkEqualFold/UnicodePrefix-10 37862503 31.58 ns/op BenchmarkEqualFold/UnicodePrefix-10 37733278 31.54 ns/op BenchmarkEqualFold/UnicodePrefix-10 37882424 31.62 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47045600 25.30 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47174600 25.19 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47732142 25.17 ns/op BenchmarkEqualFold/UnicodeSuffix-10 46210350 25.37 ns/op BenchmarkEqualFold/UnicodeSuffix-10 45491952 25.17 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47727712 25.27 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47759292 25.12 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47731587 25.18 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47753985 25.34 ns/op BenchmarkEqualFold/UnicodeSuffix-10 47745832 25.13 ns/op BenchmarkIndexHard1-10 3612 325590 ns/op BenchmarkIndexHard1-10 3606 325395 ns/op BenchmarkIndexHard1-10 3610 326848 ns/op BenchmarkIndexHard1-10 3613 325449 ns/op BenchmarkIndexHard1-10 3613 325485 ns/op BenchmarkIndexHard1-10 3614 325476 ns/op BenchmarkIndexHard1-10 3613 326243 ns/op BenchmarkIndexHard1-10 3613 325631 ns/op BenchmarkIndexHard1-10 3613 325447 ns/op BenchmarkIndexHard1-10 3613 325493 ns/op BenchmarkIndexHard2-10 562 2126791 ns/op BenchmarkIndexHard2-10 554 2103792 ns/op BenchmarkIndexHard2-10 564 2107482 ns/op BenchmarkIndexHard2-10 562 2103387 ns/op BenchmarkIndexHard2-10 553 2110897 ns/op BenchmarkIndexHard2-10 560 2116709 ns/op BenchmarkIndexHard2-10 565 2107451 ns/op BenchmarkIndexHard2-10 562 2118069 ns/op BenchmarkIndexHard2-10 564 2108650 ns/op BenchmarkIndexHard2-10 562 2160542 ns/op BenchmarkIndexHard3-10 649 1835083 ns/op BenchmarkIndexHard3-10 651 1825502 ns/op BenchmarkIndexHard3-10 646 1820573 ns/op BenchmarkIndexHard3-10 643 1824903 ns/op BenchmarkIndexHard3-10 646 1836330 ns/op BenchmarkIndexHard3-10 646 1839013 ns/op BenchmarkIndexHard3-10 650 1831827 ns/op BenchmarkIndexHard3-10 643 1838944 ns/op BenchmarkIndexHard3-10 644 1829299 ns/op BenchmarkIndexHard3-10 639 1825743 ns/op BenchmarkIndexHard4-10 903 1304542 ns/op BenchmarkIndexHard4-10 903 1304158 ns/op BenchmarkIndexHard4-10 903 1315911 ns/op BenchmarkIndexHard4-10 902 1308839 ns/op BenchmarkIndexHard4-10 903 1304496 ns/op BenchmarkIndexHard4-10 903 1304067 ns/op BenchmarkIndexHard4-10 902 1304577 ns/op BenchmarkIndexHard4-10 883 1304520 ns/op BenchmarkIndexHard4-10 903 1304514 ns/op BenchmarkIndexHard4-10 903 1304666 ns/op BenchmarkLastIndexHard1-10 850 1385169 ns/op BenchmarkLastIndexHard1-10 834 1384965 ns/op BenchmarkLastIndexHard1-10 850 1384755 ns/op BenchmarkLastIndexHard1-10 850 1384788 ns/op BenchmarkLastIndexHard1-10 850 1386555 ns/op BenchmarkLastIndexHard1-10 849 1385349 ns/op BenchmarkLastIndexHard1-10 850 1385920 ns/op BenchmarkLastIndexHard1-10 849 1385506 ns/op BenchmarkLastIndexHard1-10 850 1388415 ns/op BenchmarkLastIndexHard1-10 850 1384760 ns/op BenchmarkLastIndexHard2-10 850 1384849 ns/op BenchmarkLastIndexHard2-10 850 1384740 ns/op BenchmarkLastIndexHard2-10 850 1390822 ns/op BenchmarkLastIndexHard2-10 850 1385202 ns/op BenchmarkLastIndexHard2-10 850 1387235 ns/op BenchmarkLastIndexHard2-10 846 1386876 ns/op BenchmarkLastIndexHard2-10 850 1388703 ns/op BenchmarkLastIndexHard2-10 850 1384853 ns/op BenchmarkLastIndexHard2-10 850 1384716 ns/op BenchmarkLastIndexHard2-10 850 1384773 ns/op BenchmarkLastIndexHard3-10 850 1388440 ns/op BenchmarkLastIndexHard3-10 850 1384782 ns/op BenchmarkLastIndexHard3-10 850 1385000 ns/op BenchmarkLastIndexHard3-10 850 1385234 ns/op BenchmarkLastIndexHard3-10 850 1388273 ns/op BenchmarkLastIndexHard3-10 852 1385014 ns/op BenchmarkLastIndexHard3-10 850 1384925 ns/op BenchmarkLastIndexHard3-10 850 1385113 ns/op BenchmarkLastIndexHard3-10 850 1387919 ns/op BenchmarkLastIndexHard3-10 850 1384960 ns/op BenchmarkCountHard1-10 3614 325417 ns/op BenchmarkCountHard1-10 3612 327014 ns/op BenchmarkCountHard1-10 3513 337263 ns/op BenchmarkCountHard1-10 3534 331126 ns/op BenchmarkCountHard1-10 3536 327495 ns/op BenchmarkCountHard1-10 3615 327135 ns/op BenchmarkCountHard1-10 3615 327106 ns/op BenchmarkCountHard1-10 3615 327836 ns/op BenchmarkCountHard1-10 3608 328075 ns/op BenchmarkCountHard1-10 3615 327957 ns/op BenchmarkCountHard2-10 550 2113354 ns/op BenchmarkCountHard2-10 556 2116458 ns/op BenchmarkCountHard2-10 554 2110448 ns/op BenchmarkCountHard2-10 553 2115067 ns/op BenchmarkCountHard2-10 564 2122531 ns/op BenchmarkCountHard2-10 554 2119843 ns/op BenchmarkCountHard2-10 546 2129419 ns/op BenchmarkCountHard2-10 564 2147053 ns/op BenchmarkCountHard2-10 552 2124974 ns/op BenchmarkCountHard2-10 546 2120693 ns/op BenchmarkCountHard3-10 651 1831333 ns/op BenchmarkCountHard3-10 650 1837865 ns/op BenchmarkCountHard3-10 644 1833409 ns/op BenchmarkCountHard3-10 649 1822052 ns/op BenchmarkCountHard3-10 644 1839358 ns/op BenchmarkCountHard3-10 643 1837422 ns/op BenchmarkCountHard3-10 652 1828665 ns/op BenchmarkCountHard3-10 645 1825118 ns/op BenchmarkCountHard3-10 644 1820779 ns/op BenchmarkCountHard3-10 643 1840655 ns/op BenchmarkIndexTorture-10 69363 17296 ns/op BenchmarkIndexTorture-10 69340 17294 ns/op BenchmarkIndexTorture-10 69373 17296 ns/op BenchmarkIndexTorture-10 69374 17334 ns/op BenchmarkIndexTorture-10 69367 17293 ns/op BenchmarkIndexTorture-10 69357 17293 ns/op BenchmarkIndexTorture-10 69362 17294 ns/op BenchmarkIndexTorture-10 69345 17334 ns/op BenchmarkIndexTorture-10 69346 17293 ns/op BenchmarkIndexTorture-10 69372 17293 ns/op BenchmarkCountTorture-10 60934 19688 ns/op BenchmarkCountTorture-10 60938 19727 ns/op BenchmarkCountTorture-10 60937 19688 ns/op BenchmarkCountTorture-10 60936 19688 ns/op BenchmarkCountTorture-10 60939 19726 ns/op BenchmarkCountTorture-10 60946 19687 ns/op BenchmarkCountTorture-10 60946 19690 ns/op BenchmarkCountTorture-10 60926 19694 ns/op BenchmarkCountTorture-10 60939 19733 ns/op BenchmarkCountTorture-10 60943 19709 ns/op BenchmarkCountTortureOverlapping-10 300 3947307 ns/op BenchmarkCountTortureOverlapping-10 301 3946998 ns/op BenchmarkCountTortureOverlapping-10 298 3946344 ns/op BenchmarkCountTortureOverlapping-10 295 3955871 ns/op BenchmarkCountTortureOverlapping-10 301 3946522 ns/op BenchmarkCountTortureOverlapping-10 301 3955797 ns/op BenchmarkCountTortureOverlapping-10 301 3946718 ns/op BenchmarkCountTortureOverlapping-10 301 3945813 ns/op BenchmarkCountTortureOverlapping-10 301 3954984 ns/op BenchmarkCountTortureOverlapping-10 301 3945726 ns/op BenchmarkCountByte/10-10 161290801 7.441 ns/op 1343.89 MB/s BenchmarkCountByte/10-10 161290077 7.457 ns/op 1340.93 MB/s BenchmarkCountByte/10-10 161286158 7.440 ns/op 1344.01 MB/s BenchmarkCountByte/10-10 161127498 7.442 ns/op 1343.74 MB/s BenchmarkCountByte/10-10 160677648 7.441 ns/op 1343.97 MB/s BenchmarkCountByte/10-10 161282716 7.442 ns/op 1343.66 MB/s BenchmarkCountByte/10-10 161291839 7.457 ns/op 1340.98 MB/s BenchmarkCountByte/10-10 161292327 7.441 ns/op 1343.96 MB/s BenchmarkCountByte/10-10 161284135 7.440 ns/op 1344.07 MB/s BenchmarkCountByte/10-10 160360569 7.493 ns/op 1334.55 MB/s BenchmarkCountByte/32-10 297696049 4.030 ns/op 7939.90 MB/s BenchmarkCountByte/32-10 297720237 4.031 ns/op 7939.14 MB/s BenchmarkCountByte/32-10 297679617 4.042 ns/op 7916.34 MB/s BenchmarkCountByte/32-10 297722853 4.031 ns/op 7939.29 MB/s BenchmarkCountByte/32-10 297533017 4.030 ns/op 7939.70 MB/s BenchmarkCountByte/32-10 297710390 4.049 ns/op 7902.75 MB/s BenchmarkCountByte/32-10 297697987 4.031 ns/op 7938.87 MB/s BenchmarkCountByte/32-10 297693187 4.031 ns/op 7938.97 MB/s BenchmarkCountByte/32-10 297709281 4.038 ns/op 7924.13 MB/s BenchmarkCountByte/32-10 297735996 4.030 ns/op 7940.07 MB/s BenchmarkCountByte/4K-10 12223952 98.05 ns/op 41773.63 MB/s BenchmarkCountByte/4K-10 12234488 98.14 ns/op 41737.77 MB/s BenchmarkCountByte/4K-10 12228898 98.32 ns/op 41661.48 MB/s BenchmarkCountByte/4K-10 12234363 98.13 ns/op 41742.00 MB/s BenchmarkCountByte/4K-10 12220492 98.09 ns/op 41756.17 MB/s BenchmarkCountByte/4K-10 12236469 98.01 ns/op 41791.13 MB/s BenchmarkCountByte/4K-10 12241243 98.34 ns/op 41653.52 MB/s BenchmarkCountByte/4K-10 12222422 98.14 ns/op 41736.25 MB/s BenchmarkCountByte/4K-10 12243454 98.10 ns/op 41754.69 MB/s BenchmarkCountByte/4K-10 12240286 98.07 ns/op 41765.89 MB/s BenchmarkCountByte/4M-10 13060 92240 ns/op 45471.83 MB/s BenchmarkCountByte/4M-10 13105 91585 ns/op 45797.08 MB/s BenchmarkCountByte/4M-10 13105 91753 ns/op 45713.04 MB/s BenchmarkCountByte/4M-10 13105 91558 ns/op 45810.12 MB/s BenchmarkCountByte/4M-10 13102 91556 ns/op 45811.33 MB/s BenchmarkCountByte/4M-10 13064 91564 ns/op 45807.21 MB/s BenchmarkCountByte/4M-10 13098 91594 ns/op 45792.57 MB/s BenchmarkCountByte/4M-10 13095 91827 ns/op 45675.91 MB/s BenchmarkCountByte/4M-10 13096 91602 ns/op 45788.39 MB/s BenchmarkCountByte/4M-10 13099 91782 ns/op 45698.50 MB/s BenchmarkCountByte/64M-10 790 1491164 ns/op 45004.34 MB/s BenchmarkCountByte/64M-10 790 1490879 ns/op 45012.96 MB/s BenchmarkCountByte/64M-10 790 1490563 ns/op 45022.50 MB/s BenchmarkCountByte/64M-10 790 1496191 ns/op 44853.14 MB/s BenchmarkCountByte/64M-10 790 1490229 ns/op 45032.59 MB/s BenchmarkCountByte/64M-10 790 1490302 ns/op 45030.39 MB/s BenchmarkCountByte/64M-10 790 1490494 ns/op 45024.59 MB/s BenchmarkCountByte/64M-10 790 1495877 ns/op 44862.54 MB/s BenchmarkCountByte/64M-10 790 1490520 ns/op 45023.80 MB/s BenchmarkCountByte/64M-10 790 1490517 ns/op 45023.87 MB/s BenchmarkIndexAnyASCII/1:1-10 227652596 5.271 ns/op BenchmarkIndexAnyASCII/1:1-10 226464678 5.272 ns/op BenchmarkIndexAnyASCII/1:1-10 227662872 5.271 ns/op BenchmarkIndexAnyASCII/1:1-10 227675758 5.271 ns/op BenchmarkIndexAnyASCII/1:1-10 226475131 5.283 ns/op BenchmarkIndexAnyASCII/1:1-10 227650563 5.271 ns/op BenchmarkIndexAnyASCII/1:1-10 227494225 5.280 ns/op BenchmarkIndexAnyASCII/1:1-10 226522192 5.271 ns/op BenchmarkIndexAnyASCII/1:1-10 227656592 5.276 ns/op BenchmarkIndexAnyASCII/1:1-10 227614022 5.273 ns/op BenchmarkIndexAnyASCII/1:2-10 160682552 7.443 ns/op BenchmarkIndexAnyASCII/1:2-10 161112525 7.465 ns/op BenchmarkIndexAnyASCII/1:2-10 160523224 7.460 ns/op BenchmarkIndexAnyASCII/1:2-10 161227171 7.441 ns/op BenchmarkIndexAnyASCII/1:2-10 161226710 7.443 ns/op BenchmarkIndexAnyASCII/1:2-10 159674131 7.469 ns/op BenchmarkIndexAnyASCII/1:2-10 161264736 7.445 ns/op BenchmarkIndexAnyASCII/1:2-10 161092726 7.446 ns/op BenchmarkIndexAnyASCII/1:2-10 160647391 7.443 ns/op BenchmarkIndexAnyASCII/1:2-10 161235050 7.443 ns/op BenchmarkIndexAnyASCII/1:4-10 161197075 7.478 ns/op BenchmarkIndexAnyASCII/1:4-10 161209374 7.446 ns/op BenchmarkIndexAnyASCII/1:4-10 160997242 7.448 ns/op BenchmarkIndexAnyASCII/1:4-10 160587115 7.443 ns/op BenchmarkIndexAnyASCII/1:4-10 161235385 7.443 ns/op BenchmarkIndexAnyASCII/1:4-10 161235682 7.462 ns/op BenchmarkIndexAnyASCII/1:4-10 160699740 7.445 ns/op BenchmarkIndexAnyASCII/1:4-10 161142085 7.443 ns/op BenchmarkIndexAnyASCII/1:4-10 161210647 7.460 ns/op BenchmarkIndexAnyASCII/1:4-10 161250334 7.442 ns/op BenchmarkIndexAnyASCII/1:8-10 161249540 7.441 ns/op BenchmarkIndexAnyASCII/1:8-10 160579414 7.445 ns/op BenchmarkIndexAnyASCII/1:8-10 160613856 7.442 ns/op BenchmarkIndexAnyASCII/1:8-10 161214598 7.459 ns/op BenchmarkIndexAnyASCII/1:8-10 161227496 7.443 ns/op BenchmarkIndexAnyASCII/1:8-10 161230411 7.442 ns/op BenchmarkIndexAnyASCII/1:8-10 161246515 7.457 ns/op BenchmarkIndexAnyASCII/1:8-10 161244583 7.443 ns/op BenchmarkIndexAnyASCII/1:8-10 161198095 7.442 ns/op BenchmarkIndexAnyASCII/1:8-10 160671982 7.443 ns/op BenchmarkIndexAnyASCII/1:16-10 161252518 7.441 ns/op BenchmarkIndexAnyASCII/1:16-10 161230944 7.460 ns/op BenchmarkIndexAnyASCII/1:16-10 161217712 7.442 ns/op BenchmarkIndexAnyASCII/1:16-10 161210448 7.446 ns/op BenchmarkIndexAnyASCII/1:16-10 161217595 7.461 ns/op BenchmarkIndexAnyASCII/1:16-10 161185302 7.443 ns/op BenchmarkIndexAnyASCII/1:16-10 160818270 7.481 ns/op BenchmarkIndexAnyASCII/1:16-10 160621443 7.461 ns/op BenchmarkIndexAnyASCII/1:16-10 161221196 7.444 ns/op BenchmarkIndexAnyASCII/1:16-10 161226141 7.461 ns/op BenchmarkIndexAnyASCII/1:32-10 161243726 7.445 ns/op BenchmarkIndexAnyASCII/1:32-10 161216295 7.442 ns/op BenchmarkIndexAnyASCII/1:32-10 161221747 7.460 ns/op BenchmarkIndexAnyASCII/1:32-10 161252600 7.445 ns/op BenchmarkIndexAnyASCII/1:32-10 161224544 7.443 ns/op BenchmarkIndexAnyASCII/1:32-10 160647740 7.441 ns/op BenchmarkIndexAnyASCII/1:32-10 161264248 7.443 ns/op BenchmarkIndexAnyASCII/1:32-10 161286844 7.460 ns/op BenchmarkIndexAnyASCII/1:32-10 161262568 7.440 ns/op BenchmarkIndexAnyASCII/1:32-10 161289436 7.441 ns/op BenchmarkIndexAnyASCII/1:64-10 154378784 7.753 ns/op BenchmarkIndexAnyASCII/1:64-10 154815286 7.750 ns/op BenchmarkIndexAnyASCII/1:64-10 154834980 7.771 ns/op BenchmarkIndexAnyASCII/1:64-10 154788394 7.752 ns/op BenchmarkIndexAnyASCII/1:64-10 154820829 7.815 ns/op BenchmarkIndexAnyASCII/1:64-10 154787071 7.769 ns/op BenchmarkIndexAnyASCII/1:64-10 154780840 7.753 ns/op BenchmarkIndexAnyASCII/1:64-10 154790516 7.753 ns/op BenchmarkIndexAnyASCII/1:64-10 154252417 7.753 ns/op BenchmarkIndexAnyASCII/1:64-10 154761910 7.754 ns/op BenchmarkIndexAnyASCII/16:1-10 227408450 5.308 ns/op BenchmarkIndexAnyASCII/16:1-10 227518989 5.270 ns/op BenchmarkIndexAnyASCII/16:1-10 227625571 5.272 ns/op BenchmarkIndexAnyASCII/16:1-10 227631076 5.284 ns/op BenchmarkIndexAnyASCII/16:1-10 227581934 5.277 ns/op BenchmarkIndexAnyASCII/16:1-10 227545846 5.273 ns/op BenchmarkIndexAnyASCII/16:1-10 227563484 5.284 ns/op BenchmarkIndexAnyASCII/16:1-10 227575064 5.273 ns/op BenchmarkIndexAnyASCII/16:1-10 226469022 5.308 ns/op BenchmarkIndexAnyASCII/16:1-10 227609164 5.285 ns/op BenchmarkIndexAnyASCII/16:2-10 92034540 13.03 ns/op BenchmarkIndexAnyASCII/16:2-10 92110186 13.03 ns/op BenchmarkIndexAnyASCII/16:2-10 92049535 13.03 ns/op BenchmarkIndexAnyASCII/16:2-10 91987504 13.06 ns/op BenchmarkIndexAnyASCII/16:2-10 92020714 13.03 ns/op BenchmarkIndexAnyASCII/16:2-10 92101935 13.02 ns/op BenchmarkIndexAnyASCII/16:2-10 91927022 13.02 ns/op BenchmarkIndexAnyASCII/16:2-10 92071316 13.02 ns/op BenchmarkIndexAnyASCII/16:2-10 92143195 13.06 ns/op BenchmarkIndexAnyASCII/16:2-10 92001313 13.02 ns/op BenchmarkIndexAnyASCII/16:4-10 80348620 14.89 ns/op BenchmarkIndexAnyASCII/16:4-10 80510570 14.90 ns/op BenchmarkIndexAnyASCII/16:4-10 80501119 14.93 ns/op BenchmarkIndexAnyASCII/16:4-10 79712593 14.90 ns/op BenchmarkIndexAnyASCII/16:4-10 80435919 14.90 ns/op BenchmarkIndexAnyASCII/16:4-10 80493019 14.90 ns/op BenchmarkIndexAnyASCII/16:4-10 80505618 14.93 ns/op BenchmarkIndexAnyASCII/16:4-10 80516199 14.90 ns/op BenchmarkIndexAnyASCII/16:4-10 80486043 14.90 ns/op BenchmarkIndexAnyASCII/16:4-10 80526778 14.90 ns/op BenchmarkIndexAnyASCII/16:8-10 63556234 19.00 ns/op BenchmarkIndexAnyASCII/16:8-10 63395209 18.96 ns/op BenchmarkIndexAnyASCII/16:8-10 63295171 18.95 ns/op BenchmarkIndexAnyASCII/16:8-10 63353372 18.95 ns/op BenchmarkIndexAnyASCII/16:8-10 63360062 18.97 ns/op BenchmarkIndexAnyASCII/16:8-10 63309363 19.00 ns/op BenchmarkIndexAnyASCII/16:8-10 63225278 18.96 ns/op BenchmarkIndexAnyASCII/16:8-10 63291139 18.96 ns/op BenchmarkIndexAnyASCII/16:8-10 63286966 18.96 ns/op BenchmarkIndexAnyASCII/16:8-10 63150000 19.00 ns/op BenchmarkIndexAnyASCII/16:16-10 35839528 33.36 ns/op BenchmarkIndexAnyASCII/16:16-10 35828916 33.21 ns/op BenchmarkIndexAnyASCII/16:16-10 35831457 33.32 ns/op BenchmarkIndexAnyASCII/16:16-10 35838547 33.41 ns/op BenchmarkIndexAnyASCII/16:16-10 36050740 33.33 ns/op BenchmarkIndexAnyASCII/16:16-10 36120732 33.34 ns/op BenchmarkIndexAnyASCII/16:16-10 35957299 33.28 ns/op BenchmarkIndexAnyASCII/16:16-10 35968976 33.37 ns/op BenchmarkIndexAnyASCII/16:16-10 35851663 33.32 ns/op BenchmarkIndexAnyASCII/16:16-10 36117788 33.36 ns/op BenchmarkIndexAnyASCII/16:32-10 19788918 60.59 ns/op BenchmarkIndexAnyASCII/16:32-10 19706874 60.74 ns/op BenchmarkIndexAnyASCII/16:32-10 19805370 60.60 ns/op BenchmarkIndexAnyASCII/16:32-10 19822478 60.61 ns/op BenchmarkIndexAnyASCII/16:32-10 19779757 60.60 ns/op BenchmarkIndexAnyASCII/16:32-10 19772262 60.60 ns/op BenchmarkIndexAnyASCII/16:32-10 19519362 60.73 ns/op BenchmarkIndexAnyASCII/16:32-10 19806528 61.11 ns/op BenchmarkIndexAnyASCII/16:32-10 19784893 60.61 ns/op BenchmarkIndexAnyASCII/16:32-10 19767091 60.61 ns/op BenchmarkIndexAnyASCII/16:64-10 9765004 123.2 ns/op BenchmarkIndexAnyASCII/16:64-10 9751696 122.9 ns/op BenchmarkIndexAnyASCII/16:64-10 9772902 123.1 ns/op BenchmarkIndexAnyASCII/16:64-10 9768330 122.9 ns/op BenchmarkIndexAnyASCII/16:64-10 9656810 123.3 ns/op BenchmarkIndexAnyASCII/16:64-10 9770096 123.0 ns/op BenchmarkIndexAnyASCII/16:64-10 9757960 123.0 ns/op BenchmarkIndexAnyASCII/16:64-10 9756764 123.1 ns/op BenchmarkIndexAnyASCII/16:64-10 9564108 122.9 ns/op BenchmarkIndexAnyASCII/16:64-10 9775090 122.9 ns/op BenchmarkIndexAnyASCII/256:1-10 143327720 8.457 ns/op BenchmarkIndexAnyASCII/256:1-10 142869806 8.372 ns/op BenchmarkIndexAnyASCII/256:1-10 142267402 8.384 ns/op BenchmarkIndexAnyASCII/256:1-10 143368347 8.392 ns/op BenchmarkIndexAnyASCII/256:1-10 143344356 8.371 ns/op BenchmarkIndexAnyASCII/256:1-10 143344099 8.371 ns/op BenchmarkIndexAnyASCII/256:1-10 142832862 8.376 ns/op BenchmarkIndexAnyASCII/256:1-10 143175309 8.373 ns/op BenchmarkIndexAnyASCII/256:1-10 143316288 8.391 ns/op BenchmarkIndexAnyASCII/256:1-10 143327920 8.373 ns/op BenchmarkIndexAnyASCII/256:2-10 7889328 151.9 ns/op BenchmarkIndexAnyASCII/256:2-10 7892566 151.9 ns/op BenchmarkIndexAnyASCII/256:2-10 7782954 151.9 ns/op BenchmarkIndexAnyASCII/256:2-10 7883865 151.9 ns/op BenchmarkIndexAnyASCII/256:2-10 7898666 151.9 ns/op BenchmarkIndexAnyASCII/256:2-10 7899493 152.2 ns/op BenchmarkIndexAnyASCII/256:2-10 7896457 151.9 ns/op BenchmarkIndexAnyASCII/256:2-10 7893708 151.8 ns/op BenchmarkIndexAnyASCII/256:2-10 7897580 151.8 ns/op BenchmarkIndexAnyASCII/256:2-10 7892224 152.1 ns/op BenchmarkIndexAnyASCII/256:4-10 7778649 155.1 ns/op BenchmarkIndexAnyASCII/256:4-10 7774393 154.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7778829 154.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7779514 154.6 ns/op BenchmarkIndexAnyASCII/256:4-10 7779022 154.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7781161 154.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7780666 154.2 ns/op BenchmarkIndexAnyASCII/256:4-10 7777485 155.7 ns/op BenchmarkIndexAnyASCII/256:4-10 7776799 155.6 ns/op BenchmarkIndexAnyASCII/256:4-10 7779372 154.2 ns/op BenchmarkIndexAnyASCII/256:8-10 7538155 159.2 ns/op BenchmarkIndexAnyASCII/256:8-10 7426473 159.2 ns/op BenchmarkIndexAnyASCII/256:8-10 7536196 159.2 ns/op BenchmarkIndexAnyASCII/256:8-10 7538455 159.2 ns/op BenchmarkIndexAnyASCII/256:8-10 7536828 159.6 ns/op BenchmarkIndexAnyASCII/256:8-10 7538907 159.2 ns/op BenchmarkIndexAnyASCII/256:8-10 7540530 159.3 ns/op BenchmarkIndexAnyASCII/256:8-10 7538775 159.2 ns/op BenchmarkIndexAnyASCII/256:8-10 7538800 159.5 ns/op BenchmarkIndexAnyASCII/256:8-10 7536243 159.2 ns/op BenchmarkIndexAnyASCII/256:16-10 7002246 171.4 ns/op BenchmarkIndexAnyASCII/256:16-10 7000938 171.4 ns/op BenchmarkIndexAnyASCII/256:16-10 6999855 171.8 ns/op BenchmarkIndexAnyASCII/256:16-10 6999528 171.5 ns/op BenchmarkIndexAnyASCII/256:16-10 7001484 171.4 ns/op BenchmarkIndexAnyASCII/256:16-10 7001355 171.4 ns/op BenchmarkIndexAnyASCII/256:16-10 7001584 171.7 ns/op BenchmarkIndexAnyASCII/256:16-10 7001335 171.4 ns/op BenchmarkIndexAnyASCII/256:16-10 7000551 171.4 ns/op BenchmarkIndexAnyASCII/256:16-10 7000863 171.7 ns/op BenchmarkIndexAnyASCII/256:32-10 5901127 202.9 ns/op BenchmarkIndexAnyASCII/256:32-10 5904997 203.2 ns/op BenchmarkIndexAnyASCII/256:32-10 5901739 204.4 ns/op BenchmarkIndexAnyASCII/256:32-10 5915750 203.4 ns/op BenchmarkIndexAnyASCII/256:32-10 5901398 203.2 ns/op BenchmarkIndexAnyASCII/256:32-10 5925750 202.9 ns/op BenchmarkIndexAnyASCII/256:32-10 5901064 202.8 ns/op BenchmarkIndexAnyASCII/256:32-10 5849098 203.7 ns/op BenchmarkIndexAnyASCII/256:32-10 5917881 203.3 ns/op BenchmarkIndexAnyASCII/256:32-10 5897216 202.8 ns/op BenchmarkIndexAnyASCII/256:64-10 4487560 267.2 ns/op BenchmarkIndexAnyASCII/256:64-10 4440944 267.2 ns/op BenchmarkIndexAnyASCII/256:64-10 4494058 267.4 ns/op BenchmarkIndexAnyASCII/256:64-10 4487742 267.2 ns/op BenchmarkIndexAnyASCII/256:64-10 4490607 267.9 ns/op BenchmarkIndexAnyASCII/256:64-10 4489758 267.2 ns/op BenchmarkIndexAnyASCII/256:64-10 4492764 267.1 ns/op BenchmarkIndexAnyASCII/256:64-10 4494763 267.2 ns/op BenchmarkIndexAnyASCII/256:64-10 4445394 267.3 ns/op BenchmarkIndexAnyASCII/256:64-10 4492980 267.1 ns/op BenchmarkIndexAnyUTF8/1:1-10 386974023 3.128 ns/op BenchmarkIndexAnyUTF8/1:1-10 385794200 3.108 ns/op BenchmarkIndexAnyUTF8/1:1-10 387035701 3.101 ns/op BenchmarkIndexAnyUTF8/1:1-10 386956450 3.101 ns/op BenchmarkIndexAnyUTF8/1:1-10 387023062 3.108 ns/op BenchmarkIndexAnyUTF8/1:1-10 386948026 3.101 ns/op BenchmarkIndexAnyUTF8/1:1-10 387038718 3.101 ns/op BenchmarkIndexAnyUTF8/1:1-10 386952343 3.101 ns/op BenchmarkIndexAnyUTF8/1:1-10 386957334 3.108 ns/op BenchmarkIndexAnyUTF8/1:1-10 386929935 3.103 ns/op BenchmarkIndexAnyUTF8/1:2-10 168267073 7.131 ns/op BenchmarkIndexAnyUTF8/1:2-10 168274210 7.148 ns/op BenchmarkIndexAnyUTF8/1:2-10 168264900 7.132 ns/op BenchmarkIndexAnyUTF8/1:2-10 168252829 7.131 ns/op BenchmarkIndexAnyUTF8/1:2-10 167556051 7.132 ns/op BenchmarkIndexAnyUTF8/1:2-10 168213127 7.132 ns/op BenchmarkIndexAnyUTF8/1:2-10 168275046 7.150 ns/op BenchmarkIndexAnyUTF8/1:2-10 168215426 7.131 ns/op BenchmarkIndexAnyUTF8/1:2-10 168263229 7.132 ns/op BenchmarkIndexAnyUTF8/1:2-10 168237711 7.167 ns/op BenchmarkIndexAnyUTF8/1:4-10 168269343 7.133 ns/op BenchmarkIndexAnyUTF8/1:4-10 168225182 7.131 ns/op BenchmarkIndexAnyUTF8/1:4-10 167558839 7.131 ns/op BenchmarkIndexAnyUTF8/1:4-10 168223738 7.132 ns/op BenchmarkIndexAnyUTF8/1:4-10 168266660 7.148 ns/op BenchmarkIndexAnyUTF8/1:4-10 168034797 7.139 ns/op BenchmarkIndexAnyUTF8/1:4-10 168197349 7.133 ns/op BenchmarkIndexAnyUTF8/1:4-10 167859038 7.150 ns/op BenchmarkIndexAnyUTF8/1:4-10 168266257 7.131 ns/op BenchmarkIndexAnyUTF8/1:4-10 168260850 7.133 ns/op BenchmarkIndexAnyUTF8/1:8-10 167582229 7.132 ns/op BenchmarkIndexAnyUTF8/1:8-10 168248887 7.131 ns/op BenchmarkIndexAnyUTF8/1:8-10 168258864 7.148 ns/op BenchmarkIndexAnyUTF8/1:8-10 168239235 7.131 ns/op BenchmarkIndexAnyUTF8/1:8-10 166694467 7.150 ns/op BenchmarkIndexAnyUTF8/1:8-10 168250587 7.150 ns/op BenchmarkIndexAnyUTF8/1:8-10 168263631 7.132 ns/op BenchmarkIndexAnyUTF8/1:8-10 168247137 7.131 ns/op BenchmarkIndexAnyUTF8/1:8-10 167582902 7.131 ns/op BenchmarkIndexAnyUTF8/1:8-10 168226312 7.131 ns/op BenchmarkIndexAnyUTF8/1:16-10 161107100 7.463 ns/op BenchmarkIndexAnyUTF8/1:16-10 161235754 7.442 ns/op BenchmarkIndexAnyUTF8/1:16-10 161248754 7.441 ns/op BenchmarkIndexAnyUTF8/1:16-10 161260880 7.460 ns/op BenchmarkIndexAnyUTF8/1:16-10 161242480 7.441 ns/op BenchmarkIndexAnyUTF8/1:16-10 161236938 7.447 ns/op BenchmarkIndexAnyUTF8/1:16-10 160739696 7.442 ns/op BenchmarkIndexAnyUTF8/1:16-10 161271129 7.442 ns/op BenchmarkIndexAnyUTF8/1:16-10 161226169 7.460 ns/op BenchmarkIndexAnyUTF8/1:16-10 161263905 7.442 ns/op BenchmarkIndexAnyUTF8/1:32-10 161249784 7.441 ns/op BenchmarkIndexAnyUTF8/1:32-10 161256889 7.459 ns/op BenchmarkIndexAnyUTF8/1:32-10 161192826 7.442 ns/op BenchmarkIndexAnyUTF8/1:32-10 161229906 7.440 ns/op BenchmarkIndexAnyUTF8/1:32-10 160531053 7.485 ns/op BenchmarkIndexAnyUTF8/1:32-10 161257033 7.441 ns/op BenchmarkIndexAnyUTF8/1:32-10 158423134 7.462 ns/op BenchmarkIndexAnyUTF8/1:32-10 161226574 7.440 ns/op BenchmarkIndexAnyUTF8/1:32-10 161283213 7.441 ns/op BenchmarkIndexAnyUTF8/1:32-10 161281000 7.460 ns/op BenchmarkIndexAnyUTF8/1:64-10 154811433 7.751 ns/op BenchmarkIndexAnyUTF8/1:64-10 154798254 7.753 ns/op BenchmarkIndexAnyUTF8/1:64-10 154244437 7.751 ns/op BenchmarkIndexAnyUTF8/1:64-10 154797529 7.752 ns/op BenchmarkIndexAnyUTF8/1:64-10 154810344 7.770 ns/op BenchmarkIndexAnyUTF8/1:64-10 153600991 7.770 ns/op BenchmarkIndexAnyUTF8/1:64-10 154809885 7.751 ns/op BenchmarkIndexAnyUTF8/1:64-10 154203242 7.751 ns/op BenchmarkIndexAnyUTF8/1:64-10 154785016 7.752 ns/op BenchmarkIndexAnyUTF8/1:64-10 154785890 7.771 ns/op BenchmarkIndexAnyUTF8/16:1-10 92144964 13.02 ns/op BenchmarkIndexAnyUTF8/16:1-10 92091630 13.02 ns/op BenchmarkIndexAnyUTF8/16:1-10 92166493 13.02 ns/op BenchmarkIndexAnyUTF8/16:1-10 92144956 13.02 ns/op BenchmarkIndexAnyUTF8/16:1-10 92146138 13.05 ns/op BenchmarkIndexAnyUTF8/16:1-10 92078967 13.02 ns/op BenchmarkIndexAnyUTF8/16:1-10 91601011 13.02 ns/op BenchmarkIndexAnyUTF8/16:1-10 92030121 13.02 ns/op BenchmarkIndexAnyUTF8/16:1-10 92169147 13.05 ns/op BenchmarkIndexAnyUTF8/16:1-10 91914988 13.02 ns/op BenchmarkIndexAnyUTF8/16:2-10 36515043 32.87 ns/op BenchmarkIndexAnyUTF8/16:2-10 36327492 32.87 ns/op BenchmarkIndexAnyUTF8/16:2-10 36508378 32.95 ns/op BenchmarkIndexAnyUTF8/16:2-10 36495748 32.86 ns/op BenchmarkIndexAnyUTF8/16:2-10 36486639 32.87 ns/op BenchmarkIndexAnyUTF8/16:2-10 36485253 32.87 ns/op BenchmarkIndexAnyUTF8/16:2-10 36488490 32.95 ns/op BenchmarkIndexAnyUTF8/16:2-10 36475826 32.87 ns/op BenchmarkIndexAnyUTF8/16:2-10 36424021 32.86 ns/op BenchmarkIndexAnyUTF8/16:2-10 36306562 32.86 ns/op BenchmarkIndexAnyUTF8/16:4-10 35757830 33.48 ns/op BenchmarkIndexAnyUTF8/16:4-10 35601177 33.56 ns/op BenchmarkIndexAnyUTF8/16:4-10 35820494 33.50 ns/op BenchmarkIndexAnyUTF8/16:4-10 35804329 33.49 ns/op BenchmarkIndexAnyUTF8/16:4-10 35810338 33.48 ns/op BenchmarkIndexAnyUTF8/16:4-10 35794671 33.57 ns/op BenchmarkIndexAnyUTF8/16:4-10 35815281 33.49 ns/op BenchmarkIndexAnyUTF8/16:4-10 35735245 33.49 ns/op BenchmarkIndexAnyUTF8/16:4-10 35803082 33.50 ns/op BenchmarkIndexAnyUTF8/16:4-10 35798053 33.57 ns/op BenchmarkIndexAnyUTF8/16:8-10 14123752 84.85 ns/op BenchmarkIndexAnyUTF8/16:8-10 14184046 84.91 ns/op BenchmarkIndexAnyUTF8/16:8-10 14181163 84.85 ns/op BenchmarkIndexAnyUTF8/16:8-10 14180667 85.11 ns/op BenchmarkIndexAnyUTF8/16:8-10 14182035 84.84 ns/op BenchmarkIndexAnyUTF8/16:8-10 14189428 84.96 ns/op BenchmarkIndexAnyUTF8/16:8-10 14196192 85.17 ns/op BenchmarkIndexAnyUTF8/16:8-10 13870372 85.59 ns/op BenchmarkIndexAnyUTF8/16:8-10 14182636 85.25 ns/op BenchmarkIndexAnyUTF8/16:8-10 14165524 85.22 ns/op BenchmarkIndexAnyUTF8/16:16-10 13146152 90.11 ns/op BenchmarkIndexAnyUTF8/16:16-10 13372789 90.82 ns/op BenchmarkIndexAnyUTF8/16:16-10 13369815 90.57 ns/op BenchmarkIndexAnyUTF8/16:16-10 12864872 90.13 ns/op BenchmarkIndexAnyUTF8/16:16-10 12662457 90.22 ns/op BenchmarkIndexAnyUTF8/16:16-10 13346308 90.03 ns/op BenchmarkIndexAnyUTF8/16:16-10 13360381 90.21 ns/op BenchmarkIndexAnyUTF8/16:16-10 13350471 89.69 ns/op BenchmarkIndexAnyUTF8/16:16-10 13370361 89.75 ns/op BenchmarkIndexAnyUTF8/16:16-10 13378826 89.90 ns/op BenchmarkIndexAnyUTF8/16:32-10 13377180 89.73 ns/op BenchmarkIndexAnyUTF8/16:32-10 13374415 89.69 ns/op BenchmarkIndexAnyUTF8/16:32-10 13374906 89.70 ns/op BenchmarkIndexAnyUTF8/16:32-10 13372726 89.95 ns/op BenchmarkIndexAnyUTF8/16:32-10 13366600 89.72 ns/op BenchmarkIndexAnyUTF8/16:32-10 13374776 89.72 ns/op BenchmarkIndexAnyUTF8/16:32-10 13374528 89.71 ns/op BenchmarkIndexAnyUTF8/16:32-10 13380288 89.99 ns/op BenchmarkIndexAnyUTF8/16:32-10 13373372 89.86 ns/op BenchmarkIndexAnyUTF8/16:32-10 13358460 89.70 ns/op BenchmarkIndexAnyUTF8/16:64-10 12496674 96.28 ns/op BenchmarkIndexAnyUTF8/16:64-10 12486570 96.55 ns/op BenchmarkIndexAnyUTF8/16:64-10 12469442 96.09 ns/op BenchmarkIndexAnyUTF8/16:64-10 12490740 96.00 ns/op BenchmarkIndexAnyUTF8/16:64-10 12474865 96.01 ns/op BenchmarkIndexAnyUTF8/16:64-10 12492256 96.35 ns/op BenchmarkIndexAnyUTF8/16:64-10 12487516 96.11 ns/op BenchmarkIndexAnyUTF8/16:64-10 12475497 96.17 ns/op BenchmarkIndexAnyUTF8/16:64-10 12492543 96.12 ns/op BenchmarkIndexAnyUTF8/16:64-10 12484248 96.35 ns/op BenchmarkIndexAnyUTF8/256:1-10 7127446 168.4 ns/op BenchmarkIndexAnyUTF8/256:1-10 7127212 168.3 ns/op BenchmarkIndexAnyUTF8/256:1-10 7127972 168.4 ns/op BenchmarkIndexAnyUTF8/256:1-10 7125546 168.8 ns/op BenchmarkIndexAnyUTF8/256:1-10 7126699 168.4 ns/op BenchmarkIndexAnyUTF8/256:1-10 7127750 168.4 ns/op BenchmarkIndexAnyUTF8/256:1-10 7126195 168.4 ns/op BenchmarkIndexAnyUTF8/256:1-10 7029776 168.4 ns/op BenchmarkIndexAnyUTF8/256:1-10 7126124 168.4 ns/op BenchmarkIndexAnyUTF8/256:1-10 7124499 168.4 ns/op BenchmarkIndexAnyUTF8/256:2-10 3428890 349.0 ns/op BenchmarkIndexAnyUTF8/256:2-10 3432876 349.4 ns/op BenchmarkIndexAnyUTF8/256:2-10 3441481 349.1 ns/op BenchmarkIndexAnyUTF8/256:2-10 3446623 349.7 ns/op BenchmarkIndexAnyUTF8/256:2-10 3415788 348.6 ns/op BenchmarkIndexAnyUTF8/256:2-10 3422943 349.1 ns/op BenchmarkIndexAnyUTF8/256:2-10 3442694 351.5 ns/op BenchmarkIndexAnyUTF8/256:2-10 3438559 349.7 ns/op BenchmarkIndexAnyUTF8/256:2-10 3442255 348.3 ns/op BenchmarkIndexAnyUTF8/256:2-10 3428350 349.0 ns/op BenchmarkIndexAnyUTF8/256:4-10 6267760 191.8 ns/op BenchmarkIndexAnyUTF8/256:4-10 6270855 191.4 ns/op BenchmarkIndexAnyUTF8/256:4-10 6268083 191.4 ns/op BenchmarkIndexAnyUTF8/256:4-10 6268948 191.4 ns/op BenchmarkIndexAnyUTF8/256:4-10 6268903 191.8 ns/op BenchmarkIndexAnyUTF8/256:4-10 6268699 191.5 ns/op BenchmarkIndexAnyUTF8/256:4-10 6269901 191.4 ns/op BenchmarkIndexAnyUTF8/256:4-10 6271334 191.4 ns/op BenchmarkIndexAnyUTF8/256:4-10 6269998 191.9 ns/op BenchmarkIndexAnyUTF8/256:4-10 6269740 191.5 ns/op BenchmarkIndexAnyUTF8/256:8-10 3134024 384.4 ns/op BenchmarkIndexAnyUTF8/256:8-10 3123456 384.7 ns/op BenchmarkIndexAnyUTF8/256:8-10 3121813 383.9 ns/op BenchmarkIndexAnyUTF8/256:8-10 3126890 383.9 ns/op BenchmarkIndexAnyUTF8/256:8-10 3126129 384.0 ns/op BenchmarkIndexAnyUTF8/256:8-10 3110576 385.0 ns/op BenchmarkIndexAnyUTF8/256:8-10 3120560 384.6 ns/op BenchmarkIndexAnyUTF8/256:8-10 3112732 384.2 ns/op BenchmarkIndexAnyUTF8/256:8-10 3125454 385.9 ns/op BenchmarkIndexAnyUTF8/256:8-10 3126525 384.2 ns/op BenchmarkIndexAnyUTF8/256:16-10 10296264 116.4 ns/op BenchmarkIndexAnyUTF8/256:16-10 10254565 117.2 ns/op BenchmarkIndexAnyUTF8/256:16-10 10303575 116.6 ns/op BenchmarkIndexAnyUTF8/256:16-10 10193636 117.4 ns/op BenchmarkIndexAnyUTF8/256:16-10 10193856 116.8 ns/op BenchmarkIndexAnyUTF8/256:16-10 10156450 116.8 ns/op BenchmarkIndexAnyUTF8/256:16-10 10384664 116.0 ns/op BenchmarkIndexAnyUTF8/256:16-10 10474821 116.4 ns/op BenchmarkIndexAnyUTF8/256:16-10 10428241 117.0 ns/op BenchmarkIndexAnyUTF8/256:16-10 10264725 116.4 ns/op BenchmarkIndexAnyUTF8/256:32-10 1992421 602.6 ns/op BenchmarkIndexAnyUTF8/256:32-10 1995598 601.6 ns/op BenchmarkIndexAnyUTF8/256:32-10 1997224 604.8 ns/op BenchmarkIndexAnyUTF8/256:32-10 1984849 602.0 ns/op BenchmarkIndexAnyUTF8/256:32-10 1996002 600.7 ns/op BenchmarkIndexAnyUTF8/256:32-10 1996059 603.8 ns/op BenchmarkIndexAnyUTF8/256:32-10 1987772 603.6 ns/op BenchmarkIndexAnyUTF8/256:32-10 1971387 600.3 ns/op BenchmarkIndexAnyUTF8/256:32-10 2005372 606.0 ns/op BenchmarkIndexAnyUTF8/256:32-10 1976545 605.6 ns/op BenchmarkIndexAnyUTF8/256:64-10 1721318 700.3 ns/op BenchmarkIndexAnyUTF8/256:64-10 1719086 700.5 ns/op BenchmarkIndexAnyUTF8/256:64-10 1725564 695.5 ns/op BenchmarkIndexAnyUTF8/256:64-10 1722502 702.1 ns/op BenchmarkIndexAnyUTF8/256:64-10 1719224 699.1 ns/op BenchmarkIndexAnyUTF8/256:64-10 1738840 692.1 ns/op BenchmarkIndexAnyUTF8/256:64-10 1724331 696.2 ns/op BenchmarkIndexAnyUTF8/256:64-10 1718335 697.0 ns/op BenchmarkIndexAnyUTF8/256:64-10 1703011 692.5 ns/op BenchmarkIndexAnyUTF8/256:64-10 1727904 695.4 ns/op BenchmarkLastIndexAnyASCII/1:1-10 214976791 5.582 ns/op BenchmarkLastIndexAnyASCII/1:1-10 214984653 5.581 ns/op BenchmarkLastIndexAnyASCII/1:1-10 215030223 5.593 ns/op BenchmarkLastIndexAnyASCII/1:1-10 214994619 5.581 ns/op BenchmarkLastIndexAnyASCII/1:1-10 215036742 5.580 ns/op BenchmarkLastIndexAnyASCII/1:1-10 213949936 5.582 ns/op BenchmarkLastIndexAnyASCII/1:1-10 215010992 5.581 ns/op BenchmarkLastIndexAnyASCII/1:1-10 214804489 5.582 ns/op BenchmarkLastIndexAnyASCII/1:1-10 213834720 5.581 ns/op BenchmarkLastIndexAnyASCII/1:1-10 214813845 5.595 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203657533 5.893 ns/op BenchmarkLastIndexAnyASCII/1:2-10 202726672 5.896 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203701928 5.891 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203656683 5.894 ns/op BenchmarkLastIndexAnyASCII/1:2-10 202950991 5.892 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203688127 5.893 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203655085 5.905 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203666318 5.891 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203690359 5.892 ns/op BenchmarkLastIndexAnyASCII/1:2-10 203691354 5.906 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203667456 5.935 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203707129 5.892 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203705905 5.907 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203692419 5.892 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203682840 5.891 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203658310 5.906 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203675032 5.892 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203689178 5.891 ns/op BenchmarkLastIndexAnyASCII/1:4-10 202721479 5.891 ns/op BenchmarkLastIndexAnyASCII/1:4-10 203672065 5.891 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203686052 5.892 ns/op BenchmarkLastIndexAnyASCII/1:8-10 202717326 5.891 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203687521 5.894 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203702403 5.892 ns/op BenchmarkLastIndexAnyASCII/1:8-10 202673802 5.892 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203697620 5.891 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203666995 5.904 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203702677 5.891 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203673981 5.891 ns/op BenchmarkLastIndexAnyASCII/1:8-10 203712417 5.905 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203685850 5.891 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203634608 5.920 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203412283 5.918 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203578442 5.899 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203607774 5.892 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203696583 5.909 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203685606 5.891 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203692275 5.891 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203710515 5.905 ns/op BenchmarkLastIndexAnyASCII/1:16-10 203693888 5.892 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203688948 5.892 ns/op BenchmarkLastIndexAnyASCII/1:32-10 202775703 5.892 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203571937 5.893 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203659909 5.892 ns/op BenchmarkLastIndexAnyASCII/1:32-10 200082074 5.904 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203687492 5.892 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203677164 5.906 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203692549 5.891 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203724565 5.891 ns/op BenchmarkLastIndexAnyASCII/1:32-10 203732996 5.906 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193505888 6.202 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193517499 6.201 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193454598 6.216 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193508488 6.202 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193491561 6.201 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193457884 6.217 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193208272 6.201 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193410582 6.202 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193482631 6.215 ns/op BenchmarkLastIndexAnyASCII/1:64-10 193505108 6.201 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.36 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.36 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:1-10 100000000 11.33 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97797183 12.26 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97908566 12.29 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97607596 12.26 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97733136 12.26 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97748389 12.26 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97808805 12.29 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97314721 12.26 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97763990 12.26 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97916882 12.26 ns/op BenchmarkLastIndexAnyASCII/16:2-10 97839044 12.29 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84208551 14.23 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84280510 14.23 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84330612 14.23 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84327151 14.26 ns/op BenchmarkLastIndexAnyASCII/16:4-10 83153599 14.24 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84096184 14.23 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84304195 14.23 ns/op BenchmarkLastIndexAnyASCII/16:4-10 83034926 14.34 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84142125 14.27 ns/op BenchmarkLastIndexAnyASCII/16:4-10 84059366 14.23 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64032582 18.67 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64688865 18.71 ns/op BenchmarkLastIndexAnyASCII/16:8-10 63074211 18.70 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64604118 18.66 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64341727 18.66 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64111696 18.66 ns/op BenchmarkLastIndexAnyASCII/16:8-10 63909109 18.71 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64170549 18.66 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64297482 18.66 ns/op BenchmarkLastIndexAnyASCII/16:8-10 64755622 18.66 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35884183 33.35 ns/op BenchmarkLastIndexAnyASCII/16:16-10 34813216 33.34 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35931685 33.29 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35906821 33.39 ns/op BenchmarkLastIndexAnyASCII/16:16-10 36051327 33.27 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35943970 33.40 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35915329 33.41 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35937781 33.35 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35822320 33.40 ns/op BenchmarkLastIndexAnyASCII/16:16-10 35925140 33.47 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19768664 60.63 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19764350 60.62 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19761991 60.63 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19789081 60.78 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19730540 60.64 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19813395 60.83 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19779105 60.66 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19798345 60.78 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19770619 60.62 ns/op BenchmarkLastIndexAnyASCII/16:32-10 19788061 60.65 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9781844 123.2 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9741939 123.3 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9755172 123.0 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9763303 123.0 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9741418 123.1 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9761844 123.3 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9771538 123.0 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9760642 123.0 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9777579 123.0 ns/op BenchmarkLastIndexAnyASCII/16:64-10 9765187 123.3 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7841371 153.1 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7838402 153.0 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7840999 153.1 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7840602 153.4 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7843220 153.0 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7740440 154.2 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7839067 153.0 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7840854 153.4 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7841451 153.0 ns/op BenchmarkLastIndexAnyASCII/256:1-10 7838978 153.1 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7927528 151.3 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7923949 151.0 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7934270 151.1 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7929765 151.0 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7935792 151.4 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7927912 151.1 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7928032 151.1 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7936846 151.0 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7925674 151.4 ns/op BenchmarkLastIndexAnyASCII/256:2-10 7929003 151.0 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7880763 152.2 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7882140 152.3 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7879219 152.6 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7878340 152.2 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7882922 152.2 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7882491 152.3 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7875730 152.6 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7882554 152.3 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7844784 152.5 ns/op BenchmarkLastIndexAnyASCII/256:4-10 7880964 152.5 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7475522 157.6 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7581930 161.6 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7383812 162.7 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7614001 158.9 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7614597 157.6 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7602831 157.5 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7612570 157.6 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7608043 158.0 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7616742 157.6 ns/op BenchmarkLastIndexAnyASCII/256:8-10 7615281 157.6 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7100925 169.0 ns/op BenchmarkLastIndexAnyASCII/256:16-10 6996043 169.5 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7094839 169.0 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7105864 169.0 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7102268 169.3 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7097335 169.4 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7097421 169.0 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7102623 169.0 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7082721 169.4 ns/op BenchmarkLastIndexAnyASCII/256:16-10 7091356 170.0 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5768491 206.5 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5820096 205.7 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5821898 207.7 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5816734 206.3 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5832733 206.0 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5811836 205.7 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5813138 206.2 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5823663 206.0 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5818278 206.0 ns/op BenchmarkLastIndexAnyASCII/256:32-10 5815105 206.3 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4496356 264.4 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4533927 264.6 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4533501 264.6 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4536530 265.3 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4533237 264.5 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4529302 264.5 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4531351 264.6 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4536579 265.2 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4534029 264.5 ns/op BenchmarkLastIndexAnyASCII/256:64-10 4536078 264.6 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 214980032 5.592 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 214969906 5.581 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 214965301 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 214964097 5.592 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 214993672 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 215007861 5.581 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 215021394 5.596 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 214970740 5.587 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 214935669 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:1-10 213930691 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 214979871 5.581 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 214976356 5.583 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 213947743 5.595 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 214979582 5.581 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 214823715 5.583 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 213856807 5.583 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 215003560 5.581 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 214833411 5.593 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 212402443 5.591 ns/op BenchmarkLastIndexAnyUTF8/1:2-10 214925404 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 214971752 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 213918471 5.581 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 214998151 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 215008888 5.594 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 214983643 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 214977448 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 214972987 5.602 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 214959541 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 215012050 5.583 ns/op BenchmarkLastIndexAnyUTF8/1:4-10 215014170 5.609 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214976935 5.583 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214992357 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214983049 5.594 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 215004507 5.584 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214949450 5.581 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214961578 5.601 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214961643 5.582 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214273645 5.632 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214414569 5.595 ns/op BenchmarkLastIndexAnyUTF8/1:8-10 214964499 5.608 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203643997 5.891 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203706394 5.906 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203699968 5.892 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203677236 5.891 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 202769850 5.893 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203674312 5.893 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203698989 5.892 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 202603212 5.895 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203691138 5.891 ns/op BenchmarkLastIndexAnyUTF8/1:16-10 203693168 5.892 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 202725788 5.891 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203664806 5.892 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 202829599 5.938 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203636005 5.891 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203657331 5.892 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203654163 5.906 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203600965 5.892 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203695344 5.891 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203685505 5.906 ns/op BenchmarkLastIndexAnyUTF8/1:32-10 203611545 5.891 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193453947 6.201 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193488259 6.217 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193524326 6.201 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193456923 6.202 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 192583630 6.202 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193507488 6.202 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193478354 6.201 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 192633184 6.203 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193520425 6.201 ns/op BenchmarkLastIndexAnyUTF8/1:64-10 193390567 6.208 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 41388943 27.16 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 41168674 27.27 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 45157911 26.62 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 45366547 27.08 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 45935650 26.86 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 45860676 26.62 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 46086120 26.60 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 41006655 26.97 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 45873603 27.08 ns/op BenchmarkLastIndexAnyUTF8/16:1-10 45746816 26.94 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12563498 95.49 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12578083 95.49 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12564392 95.65 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12566475 95.50 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12567637 98.08 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 11969592 98.68 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12074792 96.36 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12583056 95.35 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12562873 95.48 ns/op BenchmarkLastIndexAnyUTF8/16:2-10 12566004 95.48 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12578121 95.71 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12562934 95.33 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12581500 95.85 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12516601 95.63 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12574843 95.71 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12584661 95.49 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12580704 95.51 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12565959 95.31 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12553460 95.67 ns/op BenchmarkLastIndexAnyUTF8/16:4-10 12556958 95.42 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12565636 95.49 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12573596 95.34 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12565833 95.72 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12579055 95.49 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12549156 95.49 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12579664 95.50 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12570320 95.68 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12564655 95.49 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12563274 95.50 ns/op BenchmarkLastIndexAnyUTF8/16:8-10 12575890 95.38 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11988835 100.3 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11984200 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11978598 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11984689 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11996046 100.3 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11986963 100.1 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11988366 100.2 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11984284 100.1 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11990532 100.3 ns/op BenchmarkLastIndexAnyUTF8/16:16-10 11970501 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11987656 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11984689 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11977183 100.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11987472 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11984300 100.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11984434 100.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11982121 100.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11986200 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11989048 100.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-10 11985766 100.1 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11167447 107.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11168677 107.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11168682 107.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11168617 107.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11167689 107.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11168044 107.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11169240 107.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11162647 107.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11165707 107.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-10 11166919 108.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2190237 549.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2185417 549.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2196610 547.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2197213 546.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2197280 548.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2195248 546.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2189485 547.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2197483 548.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2191132 546.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-10 2186859 548.7 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 881560 1363 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 881761 1361 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 882249 1360 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 881634 1361 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 880214 1361 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 877708 1365 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 880472 1361 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 881642 1361 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 881070 1363 ns/op BenchmarkLastIndexAnyUTF8/256:2-10 881178 1364 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 882076 1361 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 881444 1361 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 882060 1361 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 881350 1364 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 877593 1361 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 881197 1361 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 871928 1362 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 881458 1364 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 881736 1361 ns/op BenchmarkLastIndexAnyUTF8/256:4-10 881526 1361 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 881580 1361 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 881480 1363 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 880922 1361 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 881407 1361 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 880782 1361 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 880622 1362 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 881820 1365 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 881334 1361 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 881906 1360 ns/op BenchmarkLastIndexAnyUTF8/256:8-10 881914 1364 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 833301 1443 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 833022 1440 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 831895 1440 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 832359 1440 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 832612 1443 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 832335 1448 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 832294 1440 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 833452 1440 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 832756 1440 ns/op BenchmarkLastIndexAnyUTF8/256:16-10 832287 1443 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 833431 1442 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 832268 1455 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 829900 1475 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 778041 1456 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 833139 1524 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 816524 1461 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 808092 1457 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 785953 1445 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 828394 1440 ns/op BenchmarkLastIndexAnyUTF8/256:32-10 832407 1479 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769758 1561 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769610 1580 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769047 1560 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769131 1560 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 768278 1559 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 768510 1561 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769382 1562 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769249 1560 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769374 1559 ns/op BenchmarkLastIndexAnyUTF8/256:64-10 769578 1561 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19545 61085 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19618 61109 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19635 61081 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19573 61096 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19638 61075 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19642 61093 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19450 61154 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19639 61085 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19648 61062 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-10 19556 61063 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21430 55983 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21426 55986 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21332 55992 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21428 56000 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21428 55997 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21345 55998 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21423 56050 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21214 56113 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21319 55997 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-10 21434 55989 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22442 53468 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22318 53463 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22443 53463 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22442 53465 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22334 53462 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22442 53463 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22443 53587 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22441 53468 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22443 53459 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-10 22442 53825 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19015 63002 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19046 62990 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19050 63152 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19042 63011 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19050 63294 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 18973 63213 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19050 62997 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19033 63072 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 19029 63208 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-10 18824 63459 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 37117 31915 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 37972 31703 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 37548 31646 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 38012 31914 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 38013 31803 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 38012 31582 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 38020 31561 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 38007 31601 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 37987 31645 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-10 37886 32361 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 72799 16402 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73497 16464 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73599 16393 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73339 16388 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73789 16258 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73734 16352 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73161 16261 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73802 16365 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73740 16260 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-10 73308 16293 ns/op BenchmarkIndexByte_Bytes/10-10 322187761 3.725 ns/op 2684.92 MB/s BenchmarkIndexByte_Bytes/10-10 322127185 3.726 ns/op 2683.52 MB/s BenchmarkIndexByte_Bytes/10-10 321968947 3.734 ns/op 2677.98 MB/s BenchmarkIndexByte_Bytes/10-10 320165845 3.734 ns/op 2678.12 MB/s BenchmarkIndexByte_Bytes/10-10 321958076 3.736 ns/op 2676.44 MB/s BenchmarkIndexByte_Bytes/10-10 319543513 3.725 ns/op 2684.31 MB/s BenchmarkIndexByte_Bytes/10-10 320101863 3.724 ns/op 2684.94 MB/s BenchmarkIndexByte_Bytes/10-10 322290554 3.725 ns/op 2684.29 MB/s BenchmarkIndexByte_Bytes/10-10 322192087 3.726 ns/op 2684.04 MB/s BenchmarkIndexByte_Bytes/10-10 322146930 3.733 ns/op 2678.83 MB/s BenchmarkIndexByte_Bytes/32-10 351408672 3.414 ns/op 9372.77 MB/s BenchmarkIndexByte_Bytes/32-10 351051734 3.415 ns/op 9370.55 MB/s BenchmarkIndexByte_Bytes/32-10 351301039 3.433 ns/op 9319.96 MB/s BenchmarkIndexByte_Bytes/32-10 351224095 3.417 ns/op 9366.01 MB/s BenchmarkIndexByte_Bytes/32-10 349545699 3.437 ns/op 9310.90 MB/s BenchmarkIndexByte_Bytes/32-10 351395767 3.415 ns/op 9371.71 MB/s BenchmarkIndexByte_Bytes/32-10 348500822 3.414 ns/op 9372.54 MB/s BenchmarkIndexByte_Bytes/32-10 351579924 3.415 ns/op 9370.05 MB/s BenchmarkIndexByte_Bytes/32-10 351528042 3.416 ns/op 9366.83 MB/s BenchmarkIndexByte_Bytes/32-10 351255064 3.421 ns/op 9355.01 MB/s BenchmarkIndexByte_Bytes/4K-10 15359131 78.16 ns/op 52402.73 MB/s BenchmarkIndexByte_Bytes/4K-10 15340412 78.23 ns/op 52358.39 MB/s BenchmarkIndexByte_Bytes/4K-10 15356256 78.20 ns/op 52379.17 MB/s BenchmarkIndexByte_Bytes/4K-10 15350584 78.31 ns/op 52308.13 MB/s BenchmarkIndexByte_Bytes/4K-10 15366694 78.16 ns/op 52406.78 MB/s BenchmarkIndexByte_Bytes/4K-10 15328508 78.19 ns/op 52388.29 MB/s BenchmarkIndexByte_Bytes/4K-10 15337602 78.17 ns/op 52399.14 MB/s BenchmarkIndexByte_Bytes/4K-10 15351099 78.36 ns/op 52268.93 MB/s BenchmarkIndexByte_Bytes/4K-10 15353767 78.21 ns/op 52369.91 MB/s BenchmarkIndexByte_Bytes/4K-10 15332776 78.17 ns/op 52398.92 MB/s BenchmarkIndexByte_Bytes/4M-10 16714 72392 ns/op 57938.83 MB/s BenchmarkIndexByte_Bytes/4M-10 16719 71916 ns/op 58322.48 MB/s BenchmarkIndexByte_Bytes/4M-10 16551 72055 ns/op 58210.02 MB/s BenchmarkIndexByte_Bytes/4M-10 16699 71961 ns/op 58285.92 MB/s BenchmarkIndexByte_Bytes/4M-10 16550 71914 ns/op 58323.80 MB/s BenchmarkIndexByte_Bytes/4M-10 16724 71754 ns/op 58453.91 MB/s BenchmarkIndexByte_Bytes/4M-10 16648 71775 ns/op 58436.80 MB/s BenchmarkIndexByte_Bytes/4M-10 16722 71957 ns/op 58288.83 MB/s BenchmarkIndexByte_Bytes/4M-10 16719 71922 ns/op 58317.73 MB/s BenchmarkIndexByte_Bytes/4M-10 16719 71765 ns/op 58444.64 MB/s BenchmarkIndexByte_Bytes/64M-10 979 1185761 ns/op 56595.59 MB/s BenchmarkIndexByte_Bytes/64M-10 991 1186050 ns/op 56581.81 MB/s BenchmarkIndexByte_Bytes/64M-10 990 1186133 ns/op 56577.88 MB/s BenchmarkIndexByte_Bytes/64M-10 990 1185815 ns/op 56593.01 MB/s BenchmarkIndexByte_Bytes/64M-10 993 1185437 ns/op 56611.08 MB/s BenchmarkIndexByte_Bytes/64M-10 992 1184631 ns/op 56649.59 MB/s BenchmarkIndexByte_Bytes/64M-10 990 1184744 ns/op 56644.17 MB/s BenchmarkIndexByte_Bytes/64M-10 991 1186143 ns/op 56577.36 MB/s BenchmarkIndexByte_Bytes/64M-10 991 1185256 ns/op 56619.74 MB/s BenchmarkIndexByte_Bytes/64M-10 991 1185264 ns/op 56619.33 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 11.83 ns/op 845.63 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 11.83 ns/op 845.63 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 11.83 ns/op 845.39 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 11.80 ns/op 847.47 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 12.01 ns/op 832.63 MB/s BenchmarkIndexRune_Bytes/10-10 95501793 12.20 ns/op 819.46 MB/s BenchmarkIndexRune_Bytes/10-10 99634672 11.90 ns/op 840.02 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 11.88 ns/op 841.51 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 11.83 ns/op 845.22 MB/s BenchmarkIndexRune_Bytes/10-10 100000000 11.80 ns/op 847.31 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.80 ns/op 2712.21 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.24 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.80 ns/op 2711.35 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.83 ns/op 2705.35 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.84 ns/op 2702.01 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.80 ns/op 2712.20 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.80 ns/op 2712.97 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 12.00 ns/op 2666.50 MB/s BenchmarkIndexRune_Bytes/32-10 97526943 11.80 ns/op 2711.98 MB/s BenchmarkIndexRune_Bytes/32-10 100000000 11.79 ns/op 2713.15 MB/s BenchmarkIndexRune_Bytes/4K-10 14162425 82.58 ns/op 49602.94 MB/s BenchmarkIndexRune_Bytes/4K-10 14166388 83.08 ns/op 49302.38 MB/s BenchmarkIndexRune_Bytes/4K-10 14163566 84.75 ns/op 48328.67 MB/s BenchmarkIndexRune_Bytes/4K-10 14145918 82.57 ns/op 49604.05 MB/s BenchmarkIndexRune_Bytes/4K-10 14517168 84.74 ns/op 48338.29 MB/s BenchmarkIndexRune_Bytes/4K-10 14157766 84.57 ns/op 48432.90 MB/s BenchmarkIndexRune_Bytes/4K-10 14530981 85.21 ns/op 48072.29 MB/s BenchmarkIndexRune_Bytes/4K-10 14165517 84.76 ns/op 48327.47 MB/s BenchmarkIndexRune_Bytes/4K-10 14370339 82.58 ns/op 49597.57 MB/s BenchmarkIndexRune_Bytes/4K-10 14467716 84.14 ns/op 48678.98 MB/s BenchmarkIndexRune_Bytes/4M-10 19078 62680 ns/op 66915.91 MB/s BenchmarkIndexRune_Bytes/4M-10 19180 62598 ns/op 67004.14 MB/s BenchmarkIndexRune_Bytes/4M-10 19180 62679 ns/op 66917.24 MB/s BenchmarkIndexRune_Bytes/4M-10 19158 62582 ns/op 67020.40 MB/s BenchmarkIndexRune_Bytes/4M-10 19184 62531 ns/op 67075.29 MB/s BenchmarkIndexRune_Bytes/4M-10 19167 62665 ns/op 66931.83 MB/s BenchmarkIndexRune_Bytes/4M-10 18582 63156 ns/op 66412.15 MB/s BenchmarkIndexRune_Bytes/4M-10 19178 62541 ns/op 67064.47 MB/s BenchmarkIndexRune_Bytes/4M-10 19184 62698 ns/op 66897.12 MB/s BenchmarkIndexRune_Bytes/4M-10 19189 62536 ns/op 67070.15 MB/s BenchmarkIndexRune_Bytes/64M-10 1054 1108219 ns/op 60555.58 MB/s BenchmarkIndexRune_Bytes/64M-10 1064 1104429 ns/op 60763.41 MB/s BenchmarkIndexRune_Bytes/64M-10 1066 1098497 ns/op 61091.52 MB/s BenchmarkIndexRune_Bytes/64M-10 1062 1109995 ns/op 60458.70 MB/s BenchmarkIndexRune_Bytes/64M-10 1069 1098339 ns/op 61100.34 MB/s BenchmarkIndexRune_Bytes/64M-10 1070 1097505 ns/op 61146.77 MB/s BenchmarkIndexRune_Bytes/64M-10 1068 1098809 ns/op 61074.21 MB/s BenchmarkIndexRune_Bytes/64M-10 1068 1097011 ns/op 61174.31 MB/s BenchmarkIndexRune_Bytes/64M-10 1068 1099398 ns/op 61041.45 MB/s BenchmarkIndexRune_Bytes/64M-10 1066 1140331 ns/op 58850.32 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 226920938 5.371 ns/op 1862.01 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 219634182 5.277 ns/op 1895.01 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227398502 5.301 ns/op 1886.27 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227491996 5.276 ns/op 1895.24 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227319762 5.284 ns/op 1892.68 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227394373 5.372 ns/op 1861.66 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227242455 5.276 ns/op 1895.49 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227596250 5.279 ns/op 1894.32 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227348599 5.291 ns/op 1889.99 MB/s BenchmarkIndexRuneASCII_Bytes/10-10 227476076 5.277 ns/op 1895.07 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 227413101 5.275 ns/op 6066.21 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 227475842 5.291 ns/op 6048.52 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 227301354 5.279 ns/op 6061.63 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 227459745 5.364 ns/op 5965.75 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 225938066 5.457 ns/op 5863.59 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 222821605 5.282 ns/op 6058.64 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 227186581 5.304 ns/op 6033.44 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 225696060 5.293 ns/op 6045.26 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 227413083 5.278 ns/op 6063.32 MB/s BenchmarkIndexRuneASCII_Bytes/32-10 227055973 5.292 ns/op 6046.83 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14812178 81.17 ns/op 50460.43 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14784318 80.69 ns/op 50759.45 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14821660 80.87 ns/op 50647.32 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14863502 80.90 ns/op 50629.06 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14806352 80.81 ns/op 50685.67 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14672818 80.97 ns/op 50587.33 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14849883 80.95 ns/op 50600.68 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14833630 80.68 ns/op 50768.44 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14867937 81.08 ns/op 50516.94 MB/s BenchmarkIndexRuneASCII_Bytes/4K-10 14243112 80.79 ns/op 50697.15 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16657 71771 ns/op 58440.45 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16716 71752 ns/op 58455.96 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16646 71761 ns/op 58448.25 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16722 71726 ns/op 58476.69 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16732 71894 ns/op 58340.11 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16724 71741 ns/op 58464.65 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16687 71773 ns/op 58438.60 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16708 72003 ns/op 58252.15 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16719 71746 ns/op 58460.84 MB/s BenchmarkIndexRuneASCII_Bytes/4M-10 16717 72225 ns/op 58072.53 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 982 1186788 ns/op 56546.65 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 991 1185459 ns/op 56610.04 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 990 1186209 ns/op 56574.24 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 992 1193011 ns/op 56251.68 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 990 1185887 ns/op 56589.60 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 991 1185161 ns/op 56624.26 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 992 1188800 ns/op 56450.94 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 990 1184875 ns/op 56637.91 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 992 1185676 ns/op 56599.67 MB/s BenchmarkIndexRuneASCII_Bytes/64M-10 992 1185527 ns/op 56606.79 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401596513 2.988 ns/op 3347.22 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401750011 2.995 ns/op 3339.42 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401461430 3.005 ns/op 3327.37 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401373644 2.988 ns/op 3346.81 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401482305 2.987 ns/op 3347.31 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401544943 2.995 ns/op 3339.30 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401539682 2.991 ns/op 3343.09 MB/s BenchmarkIndexNonASCII_Bytes/10-10 396269180 3.008 ns/op 3324.21 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401667532 2.995 ns/op 3338.89 MB/s BenchmarkIndexNonASCII_Bytes/10-10 401535481 2.987 ns/op 3348.06 MB/s BenchmarkIndexNonASCII_Bytes/32-10 429523602 2.794 ns/op 11454.91 MB/s BenchmarkIndexNonASCII_Bytes/32-10 429457887 2.843 ns/op 11254.36 MB/s BenchmarkIndexNonASCII_Bytes/32-10 429442902 2.801 ns/op 11426.40 MB/s BenchmarkIndexNonASCII_Bytes/32-10 429480558 2.794 ns/op 11454.67 MB/s BenchmarkIndexNonASCII_Bytes/32-10 429518862 2.805 ns/op 11407.31 MB/s BenchmarkIndexNonASCII_Bytes/32-10 427166037 2.817 ns/op 11361.01 MB/s BenchmarkIndexNonASCII_Bytes/32-10 428668644 2.803 ns/op 11417.17 MB/s BenchmarkIndexNonASCII_Bytes/32-10 427273077 2.803 ns/op 11415.66 MB/s BenchmarkIndexNonASCII_Bytes/32-10 428766096 2.806 ns/op 11403.80 MB/s BenchmarkIndexNonASCII_Bytes/32-10 423044652 2.820 ns/op 11348.49 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 14991550 77.19 ns/op 53063.48 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15041269 77.40 ns/op 52920.87 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15557542 77.00 ns/op 53194.01 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15567205 77.58 ns/op 52794.17 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15585630 76.97 ns/op 53216.39 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15584642 77.76 ns/op 52673.32 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15570908 76.93 ns/op 53239.80 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15577393 77.09 ns/op 53133.83 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15548925 76.91 ns/op 53259.39 MB/s BenchmarkIndexNonASCII_Bytes/4K-10 15565194 76.88 ns/op 53276.58 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16732 71854 ns/op 58372.21 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16731 71719 ns/op 58482.45 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16737 71712 ns/op 58488.31 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16729 71893 ns/op 58340.65 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16740 71699 ns/op 58499.02 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16734 71702 ns/op 58496.60 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16665 71701 ns/op 58497.22 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16731 71695 ns/op 58501.77 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16732 71860 ns/op 58367.96 MB/s BenchmarkIndexNonASCII_Bytes/4M-10 16736 71705 ns/op 58493.52 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 984 1184814 ns/op 56640.86 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 990 1191034 ns/op 56345.06 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 993 1185065 ns/op 56628.83 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 992 1184431 ns/op 56659.14 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 988 1185642 ns/op 56601.27 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 992 1184537 ns/op 56654.11 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 992 1185117 ns/op 56626.38 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 991 1208293 ns/op 55540.21 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 992 1185636 ns/op 56601.57 MB/s BenchmarkIndexNonASCII_Bytes/64M-10 990 1184688 ns/op 56646.86 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2071.980s strcase-0.0.5/internal/benchtest/results/Platinum-8488C/ 0000775 0000000 0000000 00000000000 14720254634 0022770 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/Platinum-8488C/cpu.1706567875.txt 0000664 0000000 0000000 00000005006 14720254634 0025423 0 ustar 00root root 0000000 0000000 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: GenuineIntel Model name: Intel(R) Xeon(R) Platinum 8488C CPU family: 6 Model: 143 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 Stepping: 8 BogoMIPS: 4800.00 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology nonsto p_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3d nowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_n i avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd ida arat avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme a vx512_vpopcntdq rdpid cldemote movdiri movdir64b md_clear serialize amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities Virtualization features: Hypervisor vendor: KVM Virtualization type: full Caches (sum of all): L1d: 96 KiB (2 instances) L1i: 64 KiB (2 instances) L2: 4 MiB (2 instances) L3: 105 MiB (1 instance) NUMA: NUMA node(s): 1 NUMA node0 CPU(s): 0-3 Vulnerabilities: Gather data sampling: Not affected Itlb multihit: Not affected L1tf: Not affected Mds: Not affected Meltdown: Not affected Mmio stale data: Not affected Retbleed: Not affected Spec rstack overflow: Not affected Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence Srbds: Not affected Tsx async abort: Not affected strcase-0.0.5/internal/benchtest/results/Platinum-8488C/env.1706567875.txt 0000664 0000000 0000000 00000001626 14720254634 0025430 0 ustar 00root root 0000000 0000000 GO111MODULE='auto' GOARCH='amd64' GOBIN='' GOCACHE='/home/ubuntu/.cache/go-build' GOENV='/home/ubuntu/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/ubuntu/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/ubuntu/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/usr/local/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.21.6' GCCGO='gccgo' GOAMD64='v1' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/ubuntu/go/src/repl/repl-1/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build337889403=/tmp/go-build -gno-record-gcc-switches' strcase-0.0.5/internal/benchtest/results/Platinum-8488C/results.1706567875.txt 0000664 0000000 0000000 00000040634 14720254634 0026343 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Xeon(R) Platinum 8488C │ stdlib.1706567875.txt │ strcase.1706567875.txt │ │ sec/op │ sec/op vs base │ IndexRune-4 11.90n ± 1% 11.46n ± 1% -3.70% (p=0.000 n=10) IndexRuneLongString-4 13.92n ± 2% 14.01n ± 1% ~ (p=0.306 n=10) IndexRuneFastPath-4 3.355n ± 11% 5.114n ± 4% +52.39% (p=0.000 n=10) Index-4 3.979n ± 5% 5.430n ± 2% +36.47% (p=0.000 n=10) LastIndex-4 5.028n ± 1% 6.380n ± 0% +26.88% (p=0.000 n=10) IndexByte-4 2.789n ± 14% 3.956n ± 1% +41.84% (p=0.000 n=10) EqualFold/ASCII-4 9.687n ± 1% 9.178n ± 0% -5.25% (p=0.000 n=10) EqualFold/UnicodePrefix-4 88.49n ± 0% 34.33n ± 1% -61.21% (p=0.000 n=10) EqualFold/UnicodeSuffix-4 75.47n ± 0% 25.05n ± 1% -66.80% (p=0.000 n=10) IndexHard1-4 103.8µ ± 0% 103.3µ ± 0% -0.49% (p=0.005 n=10) IndexHard2-4 146.1µ ± 0% 2717.7µ ± 1% +1760.45% (p=0.000 n=10) IndexHard3-4 443.8µ ± 0% 2547.2µ ± 1% +473.93% (p=0.000 n=10) IndexHard4-4 446.3µ ± 0% 1465.0µ ± 1% +228.27% (p=0.000 n=10) LastIndexHard1-4 1.498m ± 1% 1.468m ± 0% -2.00% (p=0.000 n=10) LastIndexHard2-4 1.494m ± 0% 1.471m ± 1% -1.57% (p=0.000 n=10) LastIndexHard3-4 1.489m ± 0% 1.480m ± 0% -0.60% (p=0.011 n=10) CountHard1-4 107.7µ ± 0% 104.6µ ± 0% -2.89% (p=0.000 n=10) CountHard2-4 151.1µ ± 0% 2738.4µ ± 0% +1712.80% (p=0.000 n=10) CountHard3-4 459.9µ ± 0% 2570.2µ ± 0% +458.85% (p=0.000 n=10) IndexTorture-4 11.46µ ± 1% 18.40µ ± 0% +60.50% (p=0.000 n=10) CountTorture-4 11.44µ ± 0% 20.08µ ± 1% +75.48% (p=0.000 n=10) CountTortureOverlapping-4 87.92µ ± 5% 4185.54µ ± 0% +4660.73% (p=0.000 n=10) CountByte/10-4 3.416n ± 2% 9.489n ± 1% +177.77% (p=0.000 n=10) CountByte/32-4 5.011n ± 1% 19.130n ± 2% +281.72% (p=0.000 n=10) CountByte/4K-4 59.63n ± 3% 1811.00n ± 2% +2937.06% (p=0.000 n=10) CountByte/4M-4 119.3µ ± 1% 1829.4µ ± 8% +1433.36% (p=0.000 n=10) CountByte/64M-4 5.960m ± 3% 23.497m ± 1% +294.22% (p=0.000 n=10) IndexAnyASCII/1:1-4 4.195n ± 1% 5.335n ± 1% +27.16% (p=0.000 n=10) IndexAnyASCII/1:2-4 5.347n ± 1% 7.133n ± 0% +33.42% (p=0.000 n=10) IndexAnyASCII/1:4-4 5.361n ± 3% 7.156n ± 1% +33.48% (p=0.000 n=10) IndexAnyASCII/1:8-4 5.212n ± 2% 7.149n ± 0% +37.18% (p=0.000 n=10) IndexAnyASCII/1:16-4 5.266n ± 1% 6.880n ± 0% +30.65% (p=0.000 n=10) IndexAnyASCII/1:32-4 5.694n ± 1% 7.253n ± 0% +27.39% (p=0.000 n=10) IndexAnyASCII/1:64-4 5.467n ± 1% 7.328n ± 1% +34.03% (p=0.000 n=10) IndexAnyASCII/16:1-4 4.323n ± 1% 4.900n ± 1% +13.35% (p=0.000 n=10) IndexAnyASCII/16:2-4 13.03n ± 1% 17.72n ± 0% +35.99% (p=0.000 n=10) IndexAnyASCII/16:4-4 14.94n ± 1% 18.39n ± 0% +23.13% (p=0.000 n=10) IndexAnyASCII/16:8-4 20.00n ± 0% 23.54n ± 1% +17.70% (p=0.000 n=10) IndexAnyASCII/16:16-4 23.89n ± 0% 32.00n ± 1% +33.93% (p=0.000 n=10) IndexAnyASCII/16:32-4 45.24n ± 0% 58.88n ± 1% +30.16% (p=0.000 n=10) IndexAnyASCII/16:64-4 87.00n ± 0% 102.50n ± 1% +17.82% (p=0.000 n=10) IndexAnyASCII/256:1-4 7.478n ± 2% 8.801n ± 4% +17.68% (p=0.000 n=10) IndexAnyASCII/256:2-4 153.1n ± 1% 158.1n ± 1% +3.23% (p=0.000 n=10) IndexAnyASCII/256:4-4 155.2n ± 1% 158.5n ± 0% +2.16% (p=0.000 n=10) IndexAnyASCII/256:8-4 154.4n ± 0% 165.1n ± 1% +6.90% (p=0.000 n=10) IndexAnyASCII/256:16-4 161.3n ± 2% 173.3n ± 1% +7.44% (p=0.000 n=10) IndexAnyASCII/256:32-4 188.5n ± 0% 327.5n ± 1% +73.79% (p=0.000 n=10) IndexAnyASCII/256:64-4 225.5n ± 1% 372.2n ± 1% +65.04% (p=0.000 n=10) IndexAnyUTF8/1:1-4 3.550n ± 1% 3.241n ± 2% -8.72% (p=0.000 n=10) IndexAnyUTF8/1:2-4 5.120n ± 1% 7.343n ± 1% +43.41% (p=0.000 n=10) IndexAnyUTF8/1:4-4 5.122n ± 1% 7.340n ± 0% +43.28% (p=0.000 n=10) IndexAnyUTF8/1:8-4 5.151n ± 1% 7.329n ± 1% +42.27% (p=0.000 n=10) IndexAnyUTF8/1:16-4 5.196n ± 1% 7.044n ± 1% +35.58% (p=0.000 n=10) IndexAnyUTF8/1:32-4 5.643n ± 1% 7.386n ± 1% +30.90% (p=0.000 n=10) IndexAnyUTF8/1:64-4 5.449n ± 1% 7.493n ± 2% +37.50% (p=0.000 n=10) IndexAnyUTF8/16:1-4 12.54n ± 1% 12.31n ± 0% -1.87% (p=0.000 n=10) IndexAnyUTF8/16:2-4 51.97n ± 1% 31.89n ± 2% -38.64% (p=0.000 n=10) IndexAnyUTF8/16:4-4 51.95n ± 0% 32.79n ± 1% -36.88% (p=0.000 n=10) IndexAnyUTF8/16:8-4 51.90n ± 0% 83.91n ± 1% +61.68% (p=0.000 n=10) IndexAnyUTF8/16:16-4 52.45n ± 1% 85.83n ± 0% +63.66% (p=0.000 n=10) IndexAnyUTF8/16:32-4 61.80n ± 1% 93.64n ± 1% +51.54% (p=0.000 n=10) IndexAnyUTF8/16:64-4 57.67n ± 1% 94.93n ± 1% +64.61% (p=0.000 n=10) IndexAnyUTF8/256:1-4 154.5n ± 0% 154.2n ± 0% -0.19% (p=0.011 n=10) IndexAnyUTF8/256:2-4 775.1n ± 1% 324.1n ± 0% -58.18% (p=0.000 n=10) IndexAnyUTF8/256:4-4 767.7n ± 0% 178.2n ± 0% -76.78% (p=0.000 n=10) IndexAnyUTF8/256:8-4 771.8n ± 0% 356.4n ± 1% -53.82% (p=0.000 n=10) IndexAnyUTF8/256:16-4 795.4n ± 0% 357.1n ± 1% -55.10% (p=0.000 n=10) IndexAnyUTF8/256:32-4 918.2n ± 1% 1760.5n ± 1% +91.73% (p=0.000 n=10) IndexAnyUTF8/256:64-4 877.8n ± 1% 3037.5n ± 0% +246.04% (p=0.000 n=10) LastIndexAnyASCII/1:1-4 3.966n ± 1% 5.622n ± 1% +41.74% (p=0.000 n=10) LastIndexAnyASCII/1:2-4 3.935n ± 1% 5.626n ± 1% +42.97% (p=0.000 n=10) LastIndexAnyASCII/1:4-4 3.981n ± 1% 5.630n ± 0% +41.41% (p=0.000 n=10) LastIndexAnyASCII/1:8-4 4.048n ± 1% 5.633n ± 1% +39.18% (p=0.000 n=10) LastIndexAnyASCII/1:16-4 4.108n ± 1% 5.482n ± 0% +33.46% (p=0.000 n=10) LastIndexAnyASCII/1:32-4 4.480n ± 2% 5.837n ± 1% +30.28% (p=0.000 n=10) LastIndexAnyASCII/1:64-4 4.512n ± 1% 5.888n ± 1% +30.49% (p=0.000 n=10) LastIndexAnyASCII/16:1-4 13.12n ± 1% 16.48n ± 1% +25.70% (p=0.000 n=10) LastIndexAnyASCII/16:2-4 13.38n ± 0% 17.23n ± 1% +28.82% (p=0.000 n=10) LastIndexAnyASCII/16:4-4 15.36n ± 1% 17.89n ± 1% +16.43% (p=0.000 n=10) LastIndexAnyASCII/16:8-4 20.41n ± 1% 23.00n ± 1% +12.74% (p=0.000 n=10) LastIndexAnyASCII/16:16-4 24.44n ± 1% 31.88n ± 1% +30.44% (p=0.000 n=10) LastIndexAnyASCII/16:32-4 45.92n ± 1% 57.77n ± 0% +25.79% (p=0.000 n=10) LastIndexAnyASCII/16:64-4 88.27n ± 0% 101.15n ± 0% +14.59% (p=0.000 n=10) LastIndexAnyASCII/256:1-4 152.2n ± 0% 154.0n ± 1% +1.15% (p=0.000 n=10) LastIndexAnyASCII/256:2-4 155.2n ± 1% 155.4n ± 1% ~ (p=0.070 n=10) LastIndexAnyASCII/256:4-4 155.6n ± 1% 157.7n ± 0% +1.38% (p=0.021 n=10) LastIndexAnyASCII/256:8-4 159.1n ± 1% 159.3n ± 1% ~ (p=0.362 n=10) LastIndexAnyASCII/256:16-4 162.6n ± 0% 170.9n ± 1% +5.10% (p=0.000 n=10) LastIndexAnyASCII/256:32-4 186.2n ± 0% 325.8n ± 1% +74.93% (p=0.000 n=10) LastIndexAnyASCII/256:64-4 225.4n ± 0% 366.2n ± 1% +62.41% (p=0.000 n=10) LastIndexAnyUTF8/1:1-4 3.978n ± 1% 5.822n ± 1% +46.34% (p=0.000 n=10) LastIndexAnyUTF8/1:2-4 3.975n ± 2% 5.804n ± 2% +46.00% (p=0.000 n=10) LastIndexAnyUTF8/1:4-4 3.983n ± 2% 5.798n ± 1% +45.57% (p=0.000 n=10) LastIndexAnyUTF8/1:8-4 3.927n ± 1% 5.787n ± 1% +47.36% (p=0.000 n=10) LastIndexAnyUTF8/1:16-4 4.069n ± 1% 5.529n ± 1% +35.87% (p=0.000 n=10) LastIndexAnyUTF8/1:32-4 4.427n ± 1% 5.917n ± 1% +33.67% (p=0.000 n=10) LastIndexAnyUTF8/1:64-4 4.315n ± 3% 5.969n ± 1% +38.33% (p=0.000 n=10) LastIndexAnyUTF8/16:1-4 26.89n ± 1% 29.06n ± 2% +8.05% (p=0.000 n=10) LastIndexAnyUTF8/16:2-4 64.84n ± 1% 97.99n ± 1% +51.13% (p=0.000 n=10) LastIndexAnyUTF8/16:4-4 64.96n ± 1% 98.59n ± 2% +51.77% (p=0.000 n=10) LastIndexAnyUTF8/16:8-4 64.66n ± 0% 99.53n ± 1% +53.94% (p=0.000 n=10) LastIndexAnyUTF8/16:16-4 68.94n ± 1% 97.43n ± 1% +41.34% (p=0.000 n=10) LastIndexAnyUTF8/16:32-4 75.59n ± 0% 106.70n ± 1% +41.15% (p=0.000 n=10) LastIndexAnyUTF8/16:64-4 73.12n ± 0% 104.50n ± 1% +42.92% (p=0.000 n=10) LastIndexAnyUTF8/256:1-4 381.4n ± 0% 438.7n ± 1% +15.02% (p=0.000 n=10) LastIndexAnyUTF8/256:2-4 1.091µ ± 1% 1.383µ ± 2% +26.87% (p=0.000 n=10) LastIndexAnyUTF8/256:4-4 1.091µ ± 0% 1.403µ ± 2% +28.61% (p=0.000 n=10) LastIndexAnyUTF8/256:8-4 1.088µ ± 0% 1.411µ ± 2% +29.69% (p=0.000 n=10) LastIndexAnyUTF8/256:16-4 1.094µ ± 1% 1.364µ ± 2% +24.74% (p=0.000 n=10) LastIndexAnyUTF8/256:32-4 1.169µ ± 0% 1.478µ ± 2% +26.44% (p=0.000 n=10) LastIndexAnyUTF8/256:64-4 1.143µ ± 1% 1.521µ ± 0% +33.09% (p=0.000 n=10) IndexPeriodic/IndexPeriodic2-4 6.638µ ± 1% 73.703µ ± 0% +1010.31% (p=0.000 n=10) IndexPeriodic/IndexPeriodic4-4 6.591µ ± 1% 69.986µ ± 0% +961.91% (p=0.000 n=10) IndexPeriodic/IndexPeriodic8-4 65.14µ ± 0% 1035.65µ ± 0% +1489.88% (p=0.000 n=10) IndexPeriodic/IndexPeriodic16-4 32.77µ ± 1% 524.29µ ± 2% +1499.93% (p=0.000 n=10) IndexPeriodic/IndexPeriodic32-4 16.41µ ± 1% 264.43µ ± 1% +1510.98% (p=0.000 n=10) IndexPeriodic/IndexPeriodic64-4 8.902µ ± 1% 133.168µ ± 1% +1395.93% (p=0.000 n=10) IndexByte_Bytes/10-4 2.865n ± 1% 3.834n ± 2% +33.80% (p=0.000 n=10) IndexByte_Bytes/32-4 3.421n ± 13% 4.587n ± 1% +34.08% (p=0.000 n=10) IndexByte_Bytes/4K-4 60.54n ± 1% 191.65n ± 1% +216.59% (p=0.000 n=10) IndexByte_Bytes/4M-4 118.8µ ± 6% 123.2µ ± 3% +3.67% (p=0.007 n=10) IndexByte_Bytes/64M-4 5.860m ± 5% 4.329m ± 7% -26.13% (p=0.000 n=10) IndexRune_Bytes/10-4 13.41n ± 1% 11.63n ± 2% -13.27% (p=0.000 n=10) IndexRune_Bytes/32-4 12.51n ± 1% 12.64n ± 2% ~ (p=0.565 n=10) IndexRune_Bytes/4K-4 73.19n ± 3% 69.70n ± 1% -4.76% (p=0.000 n=10) IndexRune_Bytes/4M-4 130.7µ ± 4% 129.9µ ± 4% ~ (p=0.190 n=10) IndexRune_Bytes/64M-4 6.298m ± 1% 4.184m ± 6% -33.57% (p=0.000 n=10) IndexRuneASCII_Bytes/10-4 3.087n ± 1% 5.452n ± 2% +76.62% (p=0.000 n=10) IndexRuneASCII_Bytes/32-4 4.050n ± 8% 5.949n ± 2% +46.90% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-4 61.27n ± 1% 197.05n ± 1% +221.61% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-4 125.6µ ± 5% 124.3µ ± 3% ~ (p=0.481 n=10) IndexRuneASCII_Bytes/64M-4 5.998m ± 3% 5.057m ± 8% -15.69% (p=0.002 n=10) IndexNonASCII_Bytes/10-4 5.184n ± 8% 2.783n ± 2% -46.31% (p=0.000 n=10) IndexNonASCII_Bytes/32-4 10.670n ± 9% 3.163n ± 1% -70.36% (p=0.000 n=10) IndexNonASCII_Bytes/4K-4 1171.5n ± 1% 193.7n ± 1% -83.47% (p=0.000 n=10) IndexNonASCII_Bytes/4M-4 1189.2µ ± 1% 120.6µ ± 5% -89.86% (p=0.000 n=10) IndexNonASCII_Bytes/64M-4 19.865m ± 1% 5.323m ± 4% -73.20% (p=0.000 n=10) geomean 194.5n 285.5n +46.74% │ stdlib.1706567875.txt │ strcase.1706567875.txt │ │ B/s │ B/s vs base │ CountByte/10-4 2791.8Mi ± 2% 1005.1Mi ± 1% -64.00% (p=0.000 n=10) CountByte/32-4 5.947Gi ± 1% 1.558Gi ± 2% -73.80% (p=0.000 n=10) CountByte/4K-4 63.969Gi ± 3% 2.107Gi ± 2% -96.71% (p=0.000 n=10) CountByte/4M-4 32.741Gi ± 1% 2.136Gi ± 9% -93.48% (p=0.000 n=10) CountByte/64M-4 10.486Gi ± 3% 2.660Gi ± 1% -74.63% (p=0.000 n=10) IndexByte_Bytes/10-4 3.251Gi ± 1% 2.430Gi ± 2% -25.26% (p=0.000 n=10) IndexByte_Bytes/32-4 8.712Gi ± 11% 6.498Gi ± 1% -25.42% (p=0.000 n=10) IndexByte_Bytes/4K-4 63.01Gi ± 1% 19.90Gi ± 1% -68.41% (p=0.000 n=10) IndexByte_Bytes/4M-4 32.87Gi ± 5% 31.72Gi ± 3% -3.49% (p=0.007 n=10) IndexByte_Bytes/64M-4 10.67Gi ± 5% 14.44Gi ± 8% +35.34% (p=0.000 n=10) IndexRune_Bytes/10-4 711.1Mi ± 1% 820.1Mi ± 2% +15.32% (p=0.000 n=10) IndexRune_Bytes/32-4 2.383Gi ± 1% 2.357Gi ± 2% ~ (p=0.579 n=10) IndexRune_Bytes/4K-4 52.12Gi ± 3% 54.73Gi ± 1% +5.01% (p=0.000 n=10) IndexRune_Bytes/4M-4 29.89Gi ± 4% 30.08Gi ± 4% ~ (p=0.190 n=10) IndexRune_Bytes/64M-4 9.923Gi ± 1% 14.940Gi ± 6% +50.55% (p=0.000 n=10) IndexRuneASCII_Bytes/10-4 3.018Gi ± 1% 1.708Gi ± 2% -43.39% (p=0.000 n=10) IndexRuneASCII_Bytes/32-4 7.361Gi ± 7% 5.009Gi ± 2% -31.95% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-4 62.26Gi ± 1% 19.36Gi ± 1% -68.91% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-4 31.09Gi ± 5% 31.44Gi ± 3% ~ (p=0.481 n=10) IndexRuneASCII_Bytes/64M-4 10.42Gi ± 4% 12.36Gi ± 8% +18.62% (p=0.002 n=10) IndexNonASCII_Bytes/10-4 1.797Gi ± 8% 3.346Gi ± 2% +86.23% (p=0.000 n=10) IndexNonASCII_Bytes/32-4 2.792Gi ± 8% 9.424Gi ± 1% +237.51% (p=0.000 n=10) IndexNonASCII_Bytes/4K-4 3.257Gi ± 1% 19.699Gi ± 1% +504.79% (p=0.000 n=10) IndexNonASCII_Bytes/4M-4 3.285Gi ± 1% 32.396Gi ± 5% +886.22% (p=0.000 n=10) IndexNonASCII_Bytes/64M-4 3.146Gi ± 1% 11.741Gi ± 4% +273.19% (p=0.000 n=10) geomean 8.818Gi 7.092Gi -19.57% strcase-0.0.5/internal/benchtest/results/Platinum-8488C/stdlib-case.1706567875.txt 0000664 0000000 0000000 00000402246 14720254634 0027035 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Xeon(R) Platinum 8488C BenchmarkIndexRune-4 9307675 126.5 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9452346 125.6 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9572425 125.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 8885748 125.2 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9530461 126.6 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9237381 126.9 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9309188 127.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9300232 127.3 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9299341 125.7 ns/op 32 B/op 1 allocs/op BenchmarkIndexRune-4 9483412 125.4 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2465473 483.1 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2450707 489.6 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2424475 488.1 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2451894 491.7 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2429851 489.9 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2479873 489.7 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2474199 486.1 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2448423 485.0 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2480652 487.5 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneLongString-4 2482761 485.2 ns/op 128 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11224390 105.7 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11374004 105.2 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11198337 106.0 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11102149 105.8 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11105654 105.3 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11334264 104.8 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11316489 105.0 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11241420 105.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11339551 104.8 ns/op 32 B/op 1 allocs/op BenchmarkIndexRuneFastPath-4 11173945 108.2 ns/op 32 B/op 1 allocs/op BenchmarkIndex-4 9379982 126.7 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9202561 126.4 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9707200 123.3 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9650467 125.1 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9464503 128.6 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9263341 128.7 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9440248 126.7 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9354145 126.8 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9410173 127.4 ns/op 33 B/op 2 allocs/op BenchmarkIndex-4 9190070 124.8 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9558243 124.4 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9687474 124.3 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9497511 124.2 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9562120 125.7 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9306944 125.3 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9369769 125.8 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9417968 124.3 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9561274 124.1 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9631722 123.4 ns/op 33 B/op 2 allocs/op BenchmarkLastIndex-4 9528397 125.3 ns/op 33 B/op 2 allocs/op BenchmarkIndexByte-4 11657371 103.4 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11224138 102.7 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11782740 102.8 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11595127 103.0 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11561744 103.3 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11325711 104.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11315758 104.3 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11248875 103.9 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11139967 104.7 ns/op 32 B/op 1 allocs/op BenchmarkIndexByte-4 11544608 104.5 ns/op 32 B/op 1 allocs/op BenchmarkIndexHard1-4 303 3954403 ns/op 1048577 B/op 1 allocs/op BenchmarkIndexHard1-4 306 3950734 ns/op 1048577 B/op 1 allocs/op BenchmarkIndexHard1-4 298 3906212 ns/op 1048576 B/op 1 allocs/op BenchmarkIndexHard1-4 302 3916935 ns/op 1048577 B/op 1 allocs/op BenchmarkIndexHard1-4 304 3917969 ns/op 1048576 B/op 1 allocs/op BenchmarkIndexHard1-4 306 3936726 ns/op 1048577 B/op 1 allocs/op BenchmarkIndexHard1-4 302 3954090 ns/op 1048577 B/op 1 allocs/op BenchmarkIndexHard1-4 302 3975775 ns/op 1048578 B/op 1 allocs/op BenchmarkIndexHard1-4 292 4021653 ns/op 1048577 B/op 1 allocs/op BenchmarkIndexHard1-4 298 3968330 ns/op 1048576 B/op 1 allocs/op BenchmarkIndexHard2-4 303 3939174 ns/op 1048585 B/op 2 allocs/op BenchmarkIndexHard2-4 297 3979150 ns/op 1048586 B/op 2 allocs/op BenchmarkIndexHard2-4 296 4033499 ns/op 1048584 B/op 2 allocs/op BenchmarkIndexHard2-4 291 4033194 ns/op 1048587 B/op 2 allocs/op BenchmarkIndexHard2-4 296 4026280 ns/op 1048585 B/op 2 allocs/op BenchmarkIndexHard2-4 295 4079600 ns/op 1048585 B/op 2 allocs/op BenchmarkIndexHard2-4 288 4132697 ns/op 1048585 B/op 2 allocs/op BenchmarkIndexHard2-4 286 4151664 ns/op 1048587 B/op 2 allocs/op BenchmarkIndexHard2-4 291 4123791 ns/op 1048584 B/op 2 allocs/op BenchmarkIndexHard2-4 289 4083353 ns/op 1048586 B/op 2 allocs/op BenchmarkIndexHard3-4 268 4438566 ns/op 1048600 B/op 2 allocs/op BenchmarkIndexHard3-4 268 4398765 ns/op 1048601 B/op 2 allocs/op BenchmarkIndexHard3-4 271 4340766 ns/op 1048602 B/op 2 allocs/op BenchmarkIndexHard3-4 277 4340460 ns/op 1048601 B/op 2 allocs/op BenchmarkIndexHard3-4 273 4301212 ns/op 1048602 B/op 2 allocs/op BenchmarkIndexHard3-4 276 4368096 ns/op 1048601 B/op 2 allocs/op BenchmarkIndexHard3-4 278 4341730 ns/op 1048601 B/op 2 allocs/op BenchmarkIndexHard3-4 272 4400540 ns/op 1048603 B/op 2 allocs/op BenchmarkIndexHard3-4 267 4351182 ns/op 1048600 B/op 2 allocs/op BenchmarkIndexHard3-4 271 4392274 ns/op 1048601 B/op 2 allocs/op BenchmarkIndexHard4-4 265 4525791 ns/op 1048625 B/op 2 allocs/op BenchmarkIndexHard4-4 258 4612640 ns/op 1048626 B/op 2 allocs/op BenchmarkIndexHard4-4 258 4599824 ns/op 1048625 B/op 2 allocs/op BenchmarkIndexHard4-4 261 4463587 ns/op 1048625 B/op 2 allocs/op BenchmarkIndexHard4-4 262 4428201 ns/op 1048626 B/op 2 allocs/op BenchmarkIndexHard4-4 272 4370996 ns/op 1048624 B/op 2 allocs/op BenchmarkIndexHard4-4 274 4411211 ns/op 1048624 B/op 2 allocs/op BenchmarkIndexHard4-4 271 4367542 ns/op 1048626 B/op 2 allocs/op BenchmarkIndexHard4-4 276 4326689 ns/op 1048625 B/op 2 allocs/op BenchmarkIndexHard4-4 274 4358411 ns/op 1048626 B/op 2 allocs/op BenchmarkLastIndexHard1-4 218 5536335 ns/op 1048577 B/op 1 allocs/op BenchmarkLastIndexHard1-4 216 5508398 ns/op 1048576 B/op 1 allocs/op BenchmarkLastIndexHard1-4 214 5526954 ns/op 1048577 B/op 1 allocs/op BenchmarkLastIndexHard1-4 218 5447912 ns/op 1048576 B/op 1 allocs/op BenchmarkLastIndexHard1-4 217 5480703 ns/op 1048577 B/op 1 allocs/op BenchmarkLastIndexHard1-4 220 5474312 ns/op 1048576 B/op 1 allocs/op BenchmarkLastIndexHard1-4 213 5594817 ns/op 1048577 B/op 1 allocs/op BenchmarkLastIndexHard1-4 214 5574362 ns/op 1048576 B/op 1 allocs/op BenchmarkLastIndexHard1-4 210 5600898 ns/op 1048578 B/op 1 allocs/op BenchmarkLastIndexHard1-4 214 5739236 ns/op 1048578 B/op 1 allocs/op BenchmarkLastIndexHard2-4 208 5725172 ns/op 1048587 B/op 2 allocs/op BenchmarkLastIndexHard2-4 207 5738026 ns/op 1048588 B/op 2 allocs/op BenchmarkLastIndexHard2-4 206 5768575 ns/op 1048589 B/op 2 allocs/op BenchmarkLastIndexHard2-4 213 5577913 ns/op 1048591 B/op 2 allocs/op BenchmarkLastIndexHard2-4 214 5600811 ns/op 1048587 B/op 2 allocs/op BenchmarkLastIndexHard2-4 207 5649265 ns/op 1048588 B/op 2 allocs/op BenchmarkLastIndexHard2-4 216 5545981 ns/op 1048589 B/op 2 allocs/op BenchmarkLastIndexHard2-4 213 5635766 ns/op 1048589 B/op 2 allocs/op BenchmarkLastIndexHard2-4 202 5653605 ns/op 1048588 B/op 2 allocs/op BenchmarkLastIndexHard2-4 212 5527388 ns/op 1048588 B/op 2 allocs/op BenchmarkLastIndexHard3-4 212 5626511 ns/op 1048603 B/op 2 allocs/op BenchmarkLastIndexHard3-4 211 5639883 ns/op 1048600 B/op 2 allocs/op BenchmarkLastIndexHard3-4 211 5689879 ns/op 1048601 B/op 2 allocs/op BenchmarkLastIndexHard3-4 213 5640433 ns/op 1048601 B/op 2 allocs/op BenchmarkLastIndexHard3-4 212 5592043 ns/op 1048602 B/op 2 allocs/op BenchmarkLastIndexHard3-4 213 5602035 ns/op 1048602 B/op 2 allocs/op BenchmarkLastIndexHard3-4 213 5714289 ns/op 1048601 B/op 2 allocs/op BenchmarkLastIndexHard3-4 212 5582701 ns/op 1048602 B/op 2 allocs/op BenchmarkLastIndexHard3-4 212 5618100 ns/op 1048601 B/op 2 allocs/op BenchmarkLastIndexHard3-4 210 5677595 ns/op 1048600 B/op 2 allocs/op BenchmarkCountHard1-4 294 4060216 ns/op 1048577 B/op 1 allocs/op BenchmarkCountHard1-4 295 4063800 ns/op 1048578 B/op 1 allocs/op BenchmarkCountHard1-4 289 4112793 ns/op 1048577 B/op 1 allocs/op BenchmarkCountHard1-4 290 4058042 ns/op 1048576 B/op 1 allocs/op BenchmarkCountHard1-4 291 4058453 ns/op 1048577 B/op 1 allocs/op BenchmarkCountHard1-4 282 4255698 ns/op 1048578 B/op 1 allocs/op BenchmarkCountHard1-4 282 4249526 ns/op 1048577 B/op 1 allocs/op BenchmarkCountHard1-4 278 4303797 ns/op 1048578 B/op 1 allocs/op BenchmarkCountHard1-4 276 4315446 ns/op 1048578 B/op 1 allocs/op BenchmarkCountHard1-4 289 4115034 ns/op 1048576 B/op 1 allocs/op BenchmarkCountHard2-4 284 4181050 ns/op 1048586 B/op 2 allocs/op BenchmarkCountHard2-4 286 4170517 ns/op 1048586 B/op 2 allocs/op BenchmarkCountHard2-4 289 4110577 ns/op 1048586 B/op 2 allocs/op BenchmarkCountHard2-4 292 4085359 ns/op 1048584 B/op 2 allocs/op BenchmarkCountHard2-4 291 4105961 ns/op 1048585 B/op 2 allocs/op BenchmarkCountHard2-4 289 4119797 ns/op 1048584 B/op 2 allocs/op BenchmarkCountHard2-4 288 4106744 ns/op 1048586 B/op 2 allocs/op BenchmarkCountHard2-4 285 4146382 ns/op 1048585 B/op 2 allocs/op BenchmarkCountHard2-4 288 4116058 ns/op 1048585 B/op 2 allocs/op BenchmarkCountHard2-4 291 4124327 ns/op 1048586 B/op 2 allocs/op BenchmarkCountHard3-4 262 4575609 ns/op 1048601 B/op 2 allocs/op BenchmarkCountHard3-4 265 4455909 ns/op 1048602 B/op 2 allocs/op BenchmarkCountHard3-4 265 4460006 ns/op 1048600 B/op 2 allocs/op BenchmarkCountHard3-4 270 4396786 ns/op 1048601 B/op 2 allocs/op BenchmarkCountHard3-4 268 4375984 ns/op 1048601 B/op 2 allocs/op BenchmarkCountHard3-4 272 4377986 ns/op 1048601 B/op 2 allocs/op BenchmarkCountHard3-4 270 4384517 ns/op 1048600 B/op 2 allocs/op BenchmarkCountHard3-4 272 4373402 ns/op 1048601 B/op 2 allocs/op BenchmarkCountHard3-4 274 4347668 ns/op 1048601 B/op 2 allocs/op BenchmarkCountHard3-4 274 4381055 ns/op 1048601 B/op 2 allocs/op BenchmarkIndexTorture-4 64777 19495 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 56725 18107 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 64255 19260 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 64124 18949 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 55626 20125 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 63241 19857 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 54763 21540 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 63682 18874 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 58933 20794 ns/op 0 B/op 0 allocs/op BenchmarkIndexTorture-4 57256 18770 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 62472 18583 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 64372 20426 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 63769 18401 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 61242 19648 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 54181 21168 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 57012 19083 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 57622 18802 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 56679 18758 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 64218 18377 ns/op 0 B/op 0 allocs/op BenchmarkCountTorture-4 59113 18970 ns/op 0 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 453 3093936 ns/op 6950 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 331 3031244 ns/op 9512 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 457 2630684 ns/op 6890 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 445 2940690 ns/op 7075 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 426 3592992 ns/op 7391 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 429 3664327 ns/op 7339 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 330 3264439 ns/op 9541 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 350 3400253 ns/op 8996 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 442 2989273 ns/op 7123 B/op 0 allocs/op BenchmarkCountTortureOverlapping-4 435 2900721 ns/op 7238 B/op 0 allocs/op BenchmarkCountByte/10-4 15694150 69.28 ns/op 144.34 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17367998 69.16 ns/op 144.59 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17461669 69.27 ns/op 144.37 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17677964 69.38 ns/op 144.14 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17524576 69.16 ns/op 144.59 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17113454 70.03 ns/op 142.80 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17328240 69.20 ns/op 144.50 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17222066 69.38 ns/op 144.14 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17075295 69.15 ns/op 144.61 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/10-4 17517663 70.12 ns/op 142.61 MB/s 16 B/op 2 allocs/op BenchmarkCountByte/32-4 7791180 149.4 ns/op 214.20 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7242811 151.0 ns/op 211.95 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7362541 150.2 ns/op 213.01 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7288236 150.4 ns/op 212.71 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7274210 151.5 ns/op 211.27 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7234454 151.5 ns/op 211.22 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7037959 151.5 ns/op 211.23 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7252376 151.9 ns/op 210.72 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7359838 152.1 ns/op 210.35 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/32-4 7227154 153.3 ns/op 208.75 MB/s 49 B/op 2 allocs/op BenchmarkCountByte/4K-4 85400 12935 ns/op 316.65 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 81488 12882 ns/op 317.97 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 83836 12904 ns/op 317.41 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 81332 12922 ns/op 316.97 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 83462 12858 ns/op 318.55 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 81405 12820 ns/op 319.51 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 84241 12931 ns/op 316.75 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 82002 12994 ns/op 315.22 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 80018 12918 ns/op 317.08 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4K-4 84084 12925 ns/op 316.91 MB/s 4865 B/op 2 allocs/op BenchmarkCountByte/4M-4 80 13135817 ns/op 319.30 MB/s 4202497 B/op 2 allocs/op BenchmarkCountByte/4M-4 78 13032011 ns/op 321.85 MB/s 4202497 B/op 2 allocs/op BenchmarkCountByte/4M-4 80 12877136 ns/op 325.72 MB/s 4202500 B/op 2 allocs/op BenchmarkCountByte/4M-4 78 13092130 ns/op 320.37 MB/s 4202498 B/op 2 allocs/op BenchmarkCountByte/4M-4 79 13266519 ns/op 316.16 MB/s 4202497 B/op 2 allocs/op BenchmarkCountByte/4M-4 76 13538031 ns/op 309.82 MB/s 4202497 B/op 2 allocs/op BenchmarkCountByte/4M-4 76 13208666 ns/op 317.54 MB/s 4202497 B/op 2 allocs/op BenchmarkCountByte/4M-4 88 13013827 ns/op 322.30 MB/s 4202498 B/op 2 allocs/op BenchmarkCountByte/4M-4 78 13061274 ns/op 321.13 MB/s 4202498 B/op 2 allocs/op BenchmarkCountByte/4M-4 91 12967079 ns/op 323.46 MB/s 4202497 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 212721171 ns/op 315.48 MB/s 67117084 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 210781381 ns/op 318.38 MB/s 67117065 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 210941498 ns/op 318.14 MB/s 67117084 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 209223109 ns/op 320.75 MB/s 67117065 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 213464556 ns/op 314.38 MB/s 67117084 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 219850457 ns/op 305.25 MB/s 67117065 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 209369250 ns/op 320.53 MB/s 67117065 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 209364055 ns/op 320.54 MB/s 67117104 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 209441353 ns/op 320.42 MB/s 67117065 B/op 2 allocs/op BenchmarkCountByte/64M-4 5 211409567 ns/op 317.44 MB/s 67117084 B/op 2 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.31 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.60 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 96083576 11.72 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.43 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.17 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.21 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.59 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.60 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 100000000 11.55 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:1-4 99275766 11.62 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 83805150 14.18 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 85645114 14.10 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 85676484 14.12 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 85083554 14.20 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 85294029 14.33 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 84792547 14.12 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 83995897 14.14 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 86724307 14.23 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 82924962 14.20 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:2-4 84526696 14.30 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 73096809 16.57 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 72069508 16.35 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 71488293 16.50 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 71059867 16.62 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 71562268 16.62 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 73884254 16.44 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 71006428 16.71 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 72165626 16.36 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 73764925 16.49 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:4-4 72500766 16.50 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 56540564 21.41 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 55480140 21.64 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 54374826 21.29 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 54365331 21.48 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 55274336 21.45 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 55509327 21.25 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 56543535 21.05 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 59032904 21.13 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 55433800 21.71 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:8-4 54319108 21.35 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/1:16-4 16594468 70.37 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 17134074 69.65 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 16798083 70.12 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 16700595 70.54 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 16909263 70.32 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 16979031 69.99 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 17042098 69.88 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 16910791 70.12 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 16782490 70.62 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:16-4 17235067 69.05 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 12021361 100.3 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11483484 101.9 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11837936 102.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11643933 101.2 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11776212 101.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11768503 102.9 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11274091 103.3 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11522577 99.94 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11994943 99.40 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:32-4 11738053 99.22 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6994507 169.5 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6998972 168.8 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 7005632 171.2 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6865386 171.1 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6941788 170.1 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6897829 170.8 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6970471 173.8 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 7053808 174.3 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6895516 174.3 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/1:64-4 6754312 175.7 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:1-4 44769498 26.59 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 43409439 26.86 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 43723071 26.36 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 44767548 27.19 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 45364268 26.62 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 44307507 27.06 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 42870904 26.25 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 44292453 26.53 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 43795923 26.63 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:1-4 42499785 27.22 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 34501438 33.93 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 35786416 33.74 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 34143493 34.07 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 36309164 34.01 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 34401919 33.72 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 34982692 33.43 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 36525534 33.35 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 35418536 33.49 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 35572155 33.24 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:2-4 35247482 33.44 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32661645 36.06 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32438157 36.08 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 33661183 35.91 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32852240 36.45 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32180517 36.44 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32313392 36.21 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 31969362 36.04 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32843533 36.14 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32341730 36.00 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:4-4 32559182 35.98 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 28257542 41.67 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 28589628 42.04 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 28402557 42.07 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 27963054 42.00 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 27189124 41.70 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 28405635 41.70 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 27926606 41.58 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 28754172 41.96 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 28905457 41.57 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:8-4 28897951 41.54 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/16:16-4 11986297 98.36 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 12138152 98.37 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 12220594 98.64 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 12153141 98.62 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 12105732 98.83 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 12185656 98.42 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 11989008 97.73 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 12097923 98.41 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 11924474 98.69 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:16-4 11968285 98.77 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8309354 143.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8128720 143.1 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8325415 143.6 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8247705 143.0 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8370482 144.0 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8349550 143.6 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8313386 142.9 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8352780 144.3 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8279950 143.6 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:32-4 8264830 141.9 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4746211 252.9 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4691018 251.9 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4683598 252.7 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4680712 258.7 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4673952 249.6 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4596412 251.4 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4707352 249.6 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4595077 256.4 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4603455 259.6 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/16:64-4 4688644 256.9 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:1-4 4742835 255.9 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4879316 247.2 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4880172 254.0 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4609710 247.1 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4914276 259.3 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4892383 254.4 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4648293 247.3 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4910673 247.0 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4800266 252.3 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:1-4 4882458 257.3 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 3036112 393.8 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 2887987 394.5 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 3053067 404.4 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 3015572 411.3 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 2900080 391.1 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 3090862 388.8 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 3039708 390.2 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 3035474 390.1 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 2979825 387.9 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:2-4 3068286 390.6 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3048342 395.7 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3008910 423.7 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3071930 417.0 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3035870 403.7 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3054142 411.8 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3019352 391.3 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3082099 386.9 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 2959468 386.0 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3117649 386.6 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:4-4 3063768 389.9 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 3253622 399.2 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 3088018 373.4 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 3035286 421.8 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 2898561 378.0 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 3140554 378.9 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 2790320 417.2 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 3181106 376.7 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 2742375 417.1 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 3178664 371.9 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:8-4 3158744 394.3 ns/op 0 B/op 0 allocs/op BenchmarkIndexAnyASCII/256:16-4 2343668 502.0 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2358231 504.3 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2375878 504.9 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2260362 514.3 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2327780 511.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2317900 515.5 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2312949 521.5 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2336866 504.0 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2311760 500.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:16-4 2241915 516.2 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 1998818 592.2 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2022213 583.6 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 1999166 598.8 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2036012 600.6 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2029250 586.5 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2045179 588.8 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2033210 588.8 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2005111 592.0 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2042582 584.2 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:32-4 2039673 592.5 ns/op 32 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1707828 704.6 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1701381 699.6 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1703305 699.8 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1731704 693.9 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1718422 693.1 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1725736 678.4 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1720590 692.5 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1715145 695.5 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1753000 690.6 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyASCII/256:64-4 1757356 692.8 ns/op 64 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21901104 54.46 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 22030690 54.39 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21619587 54.42 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21750126 54.91 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21685442 54.56 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21883282 54.30 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21754250 54.11 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21706837 54.20 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21839544 54.35 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:1-4 21844182 54.33 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17614423 67.52 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17555907 67.72 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17544877 67.57 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17565706 67.50 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17620611 67.35 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17390030 67.47 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17748769 67.34 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17543043 67.87 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17428831 68.31 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:2-4 17315589 68.31 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18147720 65.54 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18044842 65.11 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 17967997 65.29 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18069985 65.49 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18044131 65.47 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18345086 65.22 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18091326 65.52 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18186658 65.58 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18064779 65.14 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:4-4 18155136 65.07 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11821909 102.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11642194 102.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11735066 101.2 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11817018 101.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11635210 100.7 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11690262 101.2 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11767911 101.2 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11757013 100.9 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11728149 101.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:8-4 11634398 101.2 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11236666 106.8 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11167782 106.3 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11153181 107.2 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11204966 107.0 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11196921 106.5 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11236969 106.5 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11044982 107.8 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 10921874 107.4 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11096547 106.7 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:16-4 11034579 107.0 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6148310 193.7 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6192391 192.8 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6212539 192.9 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6151557 193.2 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6098822 195.1 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6138610 193.0 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6195045 194.1 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6169753 193.5 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6170221 193.6 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:32-4 6128984 193.1 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3604672 331.8 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3536500 333.5 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3613624 332.8 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3620622 333.3 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3575236 335.9 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3576981 333.8 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3570754 333.4 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3598258 334.9 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3578946 331.9 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/1:64-4 3614184 330.3 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9865710 120.9 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9889812 120.4 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9797661 120.3 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9920018 120.7 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9988410 121.2 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9873720 121.4 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9826388 120.6 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9903668 121.5 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9826641 120.4 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:1-4 9850110 121.0 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8248812 144.7 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8244949 143.8 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8286490 144.7 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8303500 144.1 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8290544 144.3 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8362728 143.8 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8219878 144.4 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8291139 144.0 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8296150 144.6 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:2-4 8213989 144.8 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8490489 141.0 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8464179 140.6 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8555881 140.6 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8469232 141.1 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8493506 141.1 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8430913 140.2 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8482740 140.7 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8453883 141.3 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8320062 142.0 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:4-4 8416408 141.7 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7079313 169.4 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7135088 169.5 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7052262 168.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7071120 167.9 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7115674 168.3 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7045243 168.8 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7172846 168.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 6994767 169.5 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 6848803 169.3 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:8-4 7092794 168.1 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6805557 175.4 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6759265 176.1 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6782619 175.5 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6846730 174.3 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6847296 174.9 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6806300 175.3 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6757123 174.8 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6782284 173.9 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6839962 174.5 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:16-4 6793603 175.1 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4422843 265.9 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4498920 267.8 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4469859 267.2 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4409772 271.1 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4338273 268.8 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4446667 267.5 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4416766 271.0 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4452088 268.8 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4409029 271.8 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:32-4 4405996 271.9 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2844127 417.7 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2847722 419.3 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2870128 419.1 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2846188 419.9 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2860815 423.8 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2800779 420.2 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2831553 420.0 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2874354 418.5 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2822394 421.8 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/16:64-4 2849259 419.0 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1110 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1109 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1102 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1103 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1108 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1095 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1100 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1102 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1102 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:1-4 1000000 1094 ns/op 5 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1134 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1133 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1136 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1130 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1140 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1142 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1142 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1264 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1284 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:2-4 1000000 1172 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1014027 1211 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1149 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1148 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1149 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1151 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1146 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1156 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1146 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1146 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:4-4 1000000 1145 ns/op 8 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1177 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1174 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 973550 1174 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1182 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1182 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1174 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1185 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 1000000 1178 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 985812 1181 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:8-4 998438 1177 ns/op 16 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 976218 1225 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 961738 1215 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 957457 1217 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 991044 1215 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 967227 1221 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 987766 1219 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 974718 1215 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 967521 1211 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 988873 1220 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:16-4 962509 1218 ns/op 24 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 842449 1388 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 827161 1394 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 819984 1402 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 816981 1412 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 827899 1391 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 858721 1387 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 836236 1405 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 811322 1418 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 867582 1398 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:32-4 836788 1393 ns/op 48 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 675811 1745 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 673075 1734 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 676366 1731 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 664480 1723 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 678426 1728 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 680064 1733 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 662108 1739 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 673131 1725 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 681852 1737 ns/op 80 B/op 1 allocs/op BenchmarkIndexAnyUTF8/256:64-4 671342 1735 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.90 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.80 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.74 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.74 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.82 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.83 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.80 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.81 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.72 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:1-4 100000000 10.75 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 95153023 12.46 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 95422039 12.44 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 93312334 12.46 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 92822736 12.36 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 94299367 12.39 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 93479952 12.48 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 96792489 12.46 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 93692042 12.52 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 91160479 12.43 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:2-4 92472870 12.41 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 81308744 14.85 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 80285182 14.87 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 79608463 14.90 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 79406862 14.76 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 80302988 14.84 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 80820642 14.89 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 81312486 14.85 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 77818280 14.84 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 81240542 14.75 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:4-4 81690441 14.74 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 61209118 18.59 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 61451515 18.56 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 64134229 18.69 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 63715404 18.82 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 63265358 18.82 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 63278917 18.84 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 60010741 18.93 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 61445362 18.71 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 61653265 18.89 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:8-4 61858568 18.77 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17701141 67.25 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17539972 67.22 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17442859 67.58 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17048216 67.16 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17341476 67.07 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17683825 67.57 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17418877 67.35 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17640580 67.04 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17412393 66.79 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:16-4 17492824 66.88 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 12063049 98.31 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 12282224 97.49 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 12250980 97.26 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 11985013 98.47 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 12208418 97.94 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 12214785 99.09 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 11993892 98.34 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 11957548 98.29 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 12026752 99.44 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:32-4 11963762 98.83 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7317874 166.0 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7174262 166.8 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 6892935 169.0 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7227927 167.3 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7362031 167.7 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7096302 165.4 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 6959536 167.4 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7261167 165.3 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7236183 167.4 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/1:64-4 7092375 165.2 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 39116797 31.02 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 37882264 30.82 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 38914909 30.96 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 38285127 30.95 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 38659242 31.24 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 38834956 30.79 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 38506798 31.16 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 38785194 30.96 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 37755290 31.19 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:1-4 37435176 30.88 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 35503230 32.69 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 35820652 32.70 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 37732992 32.72 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 37451019 32.85 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 36580334 32.48 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 35182786 32.30 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 37005756 32.76 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 36305494 32.44 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 34984021 32.76 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:2-4 36295939 32.84 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 32161378 36.32 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 32262046 36.44 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 33094657 36.64 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 33308122 36.89 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 31206853 36.86 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 32633458 36.83 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 31880034 36.71 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 31553539 36.77 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 32852505 36.46 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:4-4 33126475 36.50 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 29271846 40.77 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 29337752 40.77 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 28733804 40.96 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 29033336 41.35 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 28790540 41.14 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 28848462 41.06 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 28881860 41.10 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 28881330 40.73 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 28781046 40.99 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:8-4 29360084 41.01 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12129542 96.29 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12314936 95.97 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12297669 95.36 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12318902 95.85 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12100506 95.61 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12394106 95.66 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12663411 95.58 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12405518 95.74 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12474375 96.65 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:16-4 12446438 95.09 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8390622 141.7 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8443204 142.2 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8417125 142.5 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8354526 141.2 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8433379 141.7 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8422652 142.0 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8273974 142.5 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8345274 142.8 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8420059 141.7 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:32-4 8300248 142.6 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4803554 250.1 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4777690 251.8 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4745620 248.7 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4566884 247.3 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4866807 250.6 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4790050 252.9 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4784600 247.9 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4761120 249.7 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4711708 249.8 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/16:64-4 4833658 249.7 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3108333 395.0 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3029428 387.0 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3095488 386.6 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3073132 386.6 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3060298 384.8 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3130306 390.0 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3084098 391.7 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3115273 386.1 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3101919 386.8 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:1-4 3096597 386.8 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3041048 406.4 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3080089 399.6 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3076389 388.3 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3032619 386.6 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3099328 390.9 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3042840 392.9 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3074082 386.2 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3024462 388.9 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3073726 394.1 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:2-4 3067137 390.0 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 3091838 420.5 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 2880380 408.0 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 3043378 393.1 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 2903235 452.3 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 2963490 418.4 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 3058059 403.5 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 3006914 442.2 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 3047554 391.4 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 3063162 391.0 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:4-4 3057456 414.2 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 2948049 399.3 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 2583280 397.9 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 3030543 397.2 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 2541998 399.7 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 2964253 394.8 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 3014488 443.5 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 3014992 437.3 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 2978517 392.9 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 2999701 398.3 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:8-4 2880426 447.8 ns/op 0 B/op 0 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2410870 502.3 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2347682 477.3 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2400956 493.7 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2370079 472.3 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2397211 491.3 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2464472 497.5 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2422532 499.0 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2473596 490.9 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2413477 479.4 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:16-4 2405182 480.6 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2053248 583.6 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2027382 587.0 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2063113 584.1 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2014232 590.0 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2048803 590.5 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2034092 594.0 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 1998925 586.0 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2011536 591.6 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2029822 587.8 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:32-4 2046718 588.8 ns/op 32 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1676329 699.8 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1704181 701.6 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1714452 699.4 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1690111 697.5 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1701490 706.0 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1693226 696.5 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1716637 704.0 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1721624 702.7 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1705598 704.6 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyASCII/256:64-4 1719705 688.5 ns/op 64 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24672652 47.39 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24692218 47.22 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24706735 47.19 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24987330 47.35 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24623581 47.50 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24204126 47.63 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24593816 47.44 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24765064 47.32 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24583310 47.72 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:1-4 24796417 47.40 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17556469 66.57 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17741275 66.60 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17939970 66.50 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17914684 66.57 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17821838 66.59 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17846703 66.34 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17900097 66.36 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17949333 66.35 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17657698 66.39 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:2-4 17766913 66.20 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18609440 63.96 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18525925 63.95 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18608764 63.68 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18715549 63.65 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18425612 63.74 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18495882 63.58 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18329251 63.90 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18658436 63.70 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18719035 63.37 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:4-4 18498043 63.96 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11703066 100.5 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11877261 101.0 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11657257 101.6 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11637147 101.6 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11748008 101.6 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11763586 100.2 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11870013 100.3 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11939428 100.9 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11785178 100.2 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:8-4 11981306 99.89 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11363805 105.0 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11314648 104.5 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11429250 104.7 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11283372 105.0 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11333383 105.0 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11196177 105.3 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11347828 104.4 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11362582 105.5 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11271776 105.0 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:16-4 11284454 105.0 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6192283 193.9 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6158218 191.7 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6271216 191.2 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6267354 191.2 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6239552 191.3 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6244141 191.5 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6233127 191.0 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6233143 190.8 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6180010 192.1 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:32-4 6240558 192.2 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3615486 335.0 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3621332 333.1 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3561956 332.9 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3621782 331.3 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3583698 334.0 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3606801 338.1 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3590862 333.6 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3603951 333.4 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3604306 332.3 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/1:64-4 3629730 332.0 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8425694 140.3 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8529600 140.7 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8484792 141.7 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8357131 140.7 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8565298 140.1 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8571687 141.3 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8641870 140.9 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8516868 140.6 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8630632 140.6 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:1-4 8516055 140.5 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 7131380 169.1 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 7189572 169.1 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 6972795 173.5 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 7000554 173.3 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 6912390 171.3 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 7141254 169.6 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 7006303 170.9 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 6907195 172.7 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 7035792 171.4 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:2-4 7036846 170.6 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7336424 161.5 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7400802 161.3 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7433373 158.3 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7469376 158.9 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7552761 160.6 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7397742 163.0 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7413084 159.4 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7467519 158.1 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7461219 159.1 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:4-4 7476637 159.2 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6197710 193.6 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6170449 199.3 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6011486 199.7 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 5987049 197.8 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6068262 198.1 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6040094 198.1 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6078018 197.3 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6047094 197.5 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6048357 196.4 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:8-4 6195244 195.4 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5734178 205.6 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5815364 206.1 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5779114 206.6 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5765305 205.9 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5864942 204.7 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5716600 203.7 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5770148 204.6 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5851622 206.4 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5799208 206.5 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:16-4 5809838 204.4 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 4055671 295.8 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 4059865 296.1 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 4028918 303.0 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 4036770 299.8 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 4045064 299.2 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 3949416 302.5 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 3923068 301.8 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 3970726 297.0 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 4047655 297.4 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:32-4 4054720 301.4 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2679962 449.2 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2686615 447.4 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2664385 448.7 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2668534 447.0 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2696583 446.7 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2689230 447.5 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2692672 449.0 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2698256 445.4 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2668234 449.7 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/16:64-4 2682618 448.6 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 887112 1350 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 853592 1348 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 882261 1358 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 895423 1369 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 869702 1370 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 879207 1357 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 894007 1379 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 845809 1364 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 874020 1365 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:1-4 854478 1372 ns/op 5 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 860744 1391 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 856288 1414 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 847190 1402 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 845234 1422 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 846357 1401 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 838884 1385 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 863790 1390 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 864108 1381 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 896582 1394 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:2-4 858505 1383 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 852037 1397 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 859096 1382 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 861748 1379 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 829966 1391 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 859164 1378 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 876632 1373 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 868117 1388 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 865128 1383 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 836100 1388 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:4-4 860180 1387 ns/op 8 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 828578 1422 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 798925 1424 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 817696 1422 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 849388 1416 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 844922 1425 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 830886 1419 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 816465 1413 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 808528 1416 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 861614 1430 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:8-4 812254 1423 ns/op 16 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 792728 1499 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 782761 1481 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 804261 1479 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 786765 1497 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 785478 1494 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 802153 1484 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 805171 1486 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 808357 1484 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 791461 1489 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:16-4 819358 1494 ns/op 24 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 681897 1635 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 731101 1643 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 740922 1636 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 709306 1667 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 699582 1662 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 707841 1664 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 721414 1670 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 705730 1636 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 731942 1620 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:32-4 738522 1605 ns/op 48 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 585594 1968 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 601470 1979 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 596544 1971 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 600987 1962 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 583443 1977 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 583118 1970 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 603615 1972 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 604399 1977 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 602168 1968 ns/op 80 B/op 1 allocs/op BenchmarkLastIndexAnyUTF8/256:64-4 576902 1964 ns/op 80 B/op 1 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6309 185858 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6211 186825 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6018 185668 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6300 186371 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6146 184307 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 5997 184156 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6505 185424 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 5989 189257 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6145 185477 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic2-4 6094 184878 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 7791 145493 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 7674 144165 ns/op 65547 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 7790 144584 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 7617 144413 ns/op 65547 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 8250 146240 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 8218 144981 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 7539 145877 ns/op 65547 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 8347 145585 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 7716 145361 ns/op 65547 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic4-4 7659 145437 ns/op 65547 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6193 172475 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6243 173574 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6345 172781 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6270 172559 ns/op 65549 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6301 172356 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6366 171599 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6326 171709 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6313 172920 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6273 173354 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic8-4 6304 172340 ns/op 65548 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8570 125797 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8572 124812 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8878 125002 ns/op 65545 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8800 124901 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8574 125412 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8948 125656 ns/op 65545 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8536 125600 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8587 125341 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8656 125554 ns/op 65546 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic16-4 8880 125185 ns/op 65545 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 12002 99501 ns/op 65544 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 12038 99317 ns/op 65544 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 12026 100076 ns/op 65544 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 12069 99738 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 12049 100427 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 10000 100518 ns/op 65545 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 10000 100655 ns/op 65544 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 10000 100210 ns/op 65545 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 10000 101157 ns/op 65545 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic32-4 12000 99666 ns/op 65544 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13504 88767 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13560 88518 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13520 89106 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13533 88918 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13616 88459 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13579 88226 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13614 89207 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13572 88418 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13617 88751 ns/op 65543 B/op 2 allocs/op BenchmarkIndexPeriodic/IndexPeriodic64-4 13395 88029 ns/op 65543 B/op 2 allocs/op BenchmarkIndexByte_Bytes/10-4 26787108 43.99 ns/op 227.34 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26969005 44.12 ns/op 226.67 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26707672 44.30 ns/op 225.72 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26581590 44.53 ns/op 224.57 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26174823 44.79 ns/op 223.29 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26302893 44.41 ns/op 225.20 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26707292 44.41 ns/op 225.18 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26908200 44.23 ns/op 226.07 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26430884 44.07 ns/op 226.92 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/10-4 26815168 44.29 ns/op 225.77 MB/s 16 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14002276 82.99 ns/op 385.60 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14748238 82.70 ns/op 386.93 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14457662 82.91 ns/op 385.95 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14428222 83.54 ns/op 383.05 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14508082 82.68 ns/op 387.06 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14486888 82.83 ns/op 386.34 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14577798 82.56 ns/op 387.60 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14669842 82.71 ns/op 386.89 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14588811 84.37 ns/op 379.26 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/32-4 14323671 83.85 ns/op 381.62 MB/s 32 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 170301 6780 ns/op 604.10 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 171630 6867 ns/op 596.44 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 167854 6900 ns/op 593.66 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 167344 6903 ns/op 593.40 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 167628 6928 ns/op 591.27 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 173610 6998 ns/op 585.34 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 167101 6906 ns/op 593.10 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 169588 6982 ns/op 586.68 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 160748 6911 ns/op 592.66 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4K-4 167029 6968 ns/op 587.87 MB/s 4096 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 208 5637151 ns/op 744.05 MB/s 4214471 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 204 5762230 ns/op 727.90 MB/s 4214866 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 206 5671492 ns/op 739.54 MB/s 4214670 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 205 5659682 ns/op 741.08 MB/s 4214769 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 204 5671676 ns/op 739.52 MB/s 4214867 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 201 5677758 ns/op 738.73 MB/s 4215172 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 210 5702635 ns/op 735.50 MB/s 4214280 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 210 5761781 ns/op 727.95 MB/s 4214278 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 207 5664213 ns/op 740.49 MB/s 4214568 B/op 1 allocs/op BenchmarkIndexByte_Bytes/4M-4 207 5811353 ns/op 721.74 MB/s 4214568 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 13 94895076 ns/op 707.19 MB/s 72271084 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 12 96799679 ns/op 693.28 MB/s 72701269 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 12 102399620 ns/op 655.36 MB/s 72701269 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 10 102787024 ns/op 652.89 MB/s 73819751 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 10 101315361 ns/op 662.38 MB/s 73819750 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 12 97337118 ns/op 689.45 MB/s 72701270 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 12 98200816 ns/op 683.38 MB/s 72701269 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 12 98506395 ns/op 681.26 MB/s 72701269 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 10 102983914 ns/op 651.64 MB/s 73819750 B/op 1 allocs/op BenchmarkIndexByte_Bytes/64M-4 10 104808174 ns/op 640.30 MB/s 73819750 B/op 1 allocs/op BenchmarkIndexRune_Bytes/10-4 17640981 67.44 ns/op 148.27 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 17734006 67.70 ns/op 147.71 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 17749798 66.69 ns/op 149.95 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 17848814 66.60 ns/op 150.14 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 18097526 66.37 ns/op 150.67 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 17892453 66.40 ns/op 150.60 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 18110190 66.58 ns/op 150.20 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 18003151 67.18 ns/op 148.85 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 17630600 68.15 ns/op 146.74 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/10-4 17842189 67.55 ns/op 148.04 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9585890 123.7 ns/op 258.63 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9550382 123.7 ns/op 258.69 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9870570 122.1 ns/op 262.15 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9832364 123.2 ns/op 259.71 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9765162 123.0 ns/op 260.26 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9781306 123.2 ns/op 259.67 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9741375 122.3 ns/op 261.58 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9766242 123.1 ns/op 259.99 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9906446 122.1 ns/op 262.09 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/32-4 9911974 122.2 ns/op 261.85 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 116248 11173 ns/op 366.58 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 109497 10762 ns/op 380.59 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 115098 10496 ns/op 390.23 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 112206 10467 ns/op 391.31 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 113871 10441 ns/op 392.31 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 111504 10656 ns/op 384.40 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 106864 10536 ns/op 388.76 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 112226 10546 ns/op 388.39 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 112760 10787 ns/op 379.72 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4K-4 115868 11672 ns/op 350.91 MB/s 0 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 106 11086967 ns/op 378.31 MB/s 39568 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 100 10886276 ns/op 385.28 MB/s 41943 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 98 11046087 ns/op 379.71 MB/s 42799 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 100 10948409 ns/op 383.10 MB/s 41943 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 100 10863858 ns/op 386.08 MB/s 41943 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 93 10867290 ns/op 385.96 MB/s 45100 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 100 11085655 ns/op 378.35 MB/s 41943 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 96 11907737 ns/op 352.23 MB/s 43690 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 91 11245795 ns/op 372.97 MB/s 46091 B/op 0 allocs/op BenchmarkIndexRune_Bytes/4M-4 100 11034552 ns/op 380.11 MB/s 41943 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 181929744 ns/op 368.87 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 175944074 ns/op 381.42 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 182203319 ns/op 368.32 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 174013669 ns/op 385.65 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 183693664 ns/op 365.33 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 173946362 ns/op 385.80 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 178726996 ns/op 375.48 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 172282018 ns/op 389.53 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 171561275 ns/op 391.17 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRune_Bytes/64M-4 6 178208557 ns/op 376.57 MB/s 11184810 B/op 0 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 24195577 46.01 ns/op 217.33 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 24549546 46.02 ns/op 217.28 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 24565155 46.07 ns/op 217.05 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 24637315 45.99 ns/op 217.43 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 24647642 46.00 ns/op 217.39 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 24520471 45.92 ns/op 217.78 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 25101836 46.19 ns/op 216.51 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 26573220 46.05 ns/op 217.13 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 24895599 45.85 ns/op 218.09 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/10-4 25183797 46.05 ns/op 217.17 MB/s 16 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13272763 88.97 ns/op 359.67 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13446399 88.94 ns/op 359.78 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13266714 89.06 ns/op 359.31 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13363432 89.70 ns/op 356.73 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 12999669 90.44 ns/op 353.84 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13173206 90.61 ns/op 353.15 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13090488 90.41 ns/op 353.95 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 12955626 87.88 ns/op 364.14 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13238520 88.93 ns/op 359.84 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/32-4 13322964 90.04 ns/op 355.38 MB/s 32 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 146247 7555 ns/op 542.15 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 140098 7620 ns/op 537.52 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 157896 7251 ns/op 564.92 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 139359 7729 ns/op 529.93 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 142383 7837 ns/op 522.68 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 147660 7477 ns/op 547.82 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 132339 7731 ns/op 529.80 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 138416 7873 ns/op 520.29 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 149335 7452 ns/op 549.67 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4K-4 145160 7612 ns/op 538.10 MB/s 4096 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 201 5911755 ns/op 709.49 MB/s 4215171 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 198 5888898 ns/op 712.24 MB/s 4215487 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 198 5959716 ns/op 703.78 MB/s 4215487 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 198 6179041 ns/op 678.80 MB/s 4215488 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 192 6171769 ns/op 679.60 MB/s 4216150 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 193 6248183 ns/op 671.28 MB/s 4216036 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 184 5889696 ns/op 712.14 MB/s 4217099 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 200 5884310 ns/op 712.79 MB/s 4215275 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 200 6004825 ns/op 698.49 MB/s 4215275 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/4M-4 195 5787892 ns/op 724.67 MB/s 4215813 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 10 101088546 ns/op 663.86 MB/s 73819760 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 12 99630556 ns/op 673.58 MB/s 72701269 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 10 107942099 ns/op 621.71 MB/s 73819760 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 10 101621411 ns/op 660.38 MB/s 73819760 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 12 90670423 ns/op 740.14 MB/s 72701277 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 12 99187678 ns/op 676.58 MB/s 72701269 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 12 97848048 ns/op 685.85 MB/s 72701269 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 12 96440701 ns/op 695.86 MB/s 72701277 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 10 106128970 ns/op 632.33 MB/s 73819751 B/op 1 allocs/op BenchmarkIndexRuneASCII_Bytes/64M-4 12 97126475 ns/op 690.94 MB/s 72701269 B/op 1 allocs/op PASS ok github.com/charlievieth/strcase/internal/benchtest 1795.442s strcase-0.0.5/internal/benchtest/results/Platinum-8488C/stdlib.1706567875.txt 0000664 0000000 0000000 00000276761 14720254634 0026137 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Xeon(R) Platinum 8488C BenchmarkIndexRune-4 98620228 12.02 ns/op BenchmarkIndexRune-4 98789864 11.98 ns/op BenchmarkIndexRune-4 99511365 11.92 ns/op BenchmarkIndexRune-4 100000000 11.89 ns/op BenchmarkIndexRune-4 100000000 11.86 ns/op BenchmarkIndexRune-4 100000000 11.90 ns/op BenchmarkIndexRune-4 100000000 11.82 ns/op BenchmarkIndexRune-4 100000000 11.85 ns/op BenchmarkIndexRune-4 100000000 11.89 ns/op BenchmarkIndexRune-4 100000000 11.90 ns/op BenchmarkIndexRuneLongString-4 88483606 13.88 ns/op BenchmarkIndexRuneLongString-4 86343202 14.28 ns/op BenchmarkIndexRuneLongString-4 92318457 14.19 ns/op BenchmarkIndexRuneLongString-4 90454051 13.61 ns/op BenchmarkIndexRuneLongString-4 89355116 13.68 ns/op BenchmarkIndexRuneLongString-4 89681520 14.02 ns/op BenchmarkIndexRuneLongString-4 88298140 13.97 ns/op BenchmarkIndexRuneLongString-4 84949214 14.02 ns/op BenchmarkIndexRuneLongString-4 85626670 13.83 ns/op BenchmarkIndexRuneLongString-4 87697963 13.78 ns/op BenchmarkIndexRuneFastPath-4 357080496 3.430 ns/op BenchmarkIndexRuneFastPath-4 354587020 3.356 ns/op BenchmarkIndexRuneFastPath-4 361517284 3.355 ns/op BenchmarkIndexRuneFastPath-4 357927072 3.375 ns/op BenchmarkIndexRuneFastPath-4 358485302 3.790 ns/op BenchmarkIndexRuneFastPath-4 361952930 3.327 ns/op BenchmarkIndexRuneFastPath-4 356688355 3.325 ns/op BenchmarkIndexRuneFastPath-4 361038852 3.325 ns/op BenchmarkIndexRuneFastPath-4 359686092 3.719 ns/op BenchmarkIndexRuneFastPath-4 352815055 3.337 ns/op BenchmarkIndex-4 294245767 4.240 ns/op BenchmarkIndex-4 311203443 3.802 ns/op BenchmarkIndex-4 291308864 3.806 ns/op BenchmarkIndex-4 300183908 4.159 ns/op BenchmarkIndex-4 302239862 4.174 ns/op BenchmarkIndex-4 296204622 4.124 ns/op BenchmarkIndex-4 302970822 3.825 ns/op BenchmarkIndex-4 307110154 3.910 ns/op BenchmarkIndex-4 309842440 4.048 ns/op BenchmarkIndex-4 276317396 3.773 ns/op BenchmarkLastIndex-4 237509972 5.057 ns/op BenchmarkLastIndex-4 242943592 5.068 ns/op BenchmarkLastIndex-4 237727440 5.063 ns/op BenchmarkLastIndex-4 237991616 5.029 ns/op BenchmarkLastIndex-4 240126140 5.028 ns/op BenchmarkLastIndex-4 242008422 5.064 ns/op BenchmarkLastIndex-4 237862112 5.006 ns/op BenchmarkLastIndex-4 239615516 5.009 ns/op BenchmarkLastIndex-4 239204414 4.985 ns/op BenchmarkLastIndex-4 238041208 4.996 ns/op BenchmarkIndexByte-4 423527113 2.771 ns/op BenchmarkIndexByte-4 426573692 2.772 ns/op BenchmarkIndexByte-4 400808035 2.794 ns/op BenchmarkIndexByte-4 427391864 3.185 ns/op BenchmarkIndexByte-4 424844784 2.816 ns/op BenchmarkIndexByte-4 433550748 2.784 ns/op BenchmarkIndexByte-4 433862804 3.201 ns/op BenchmarkIndexByte-4 421342788 2.769 ns/op BenchmarkIndexByte-4 401654488 2.884 ns/op BenchmarkIndexByte-4 388738502 2.762 ns/op BenchmarkEqualFold/ASCII-4 124854769 9.684 ns/op BenchmarkEqualFold/ASCII-4 124028050 9.690 ns/op BenchmarkEqualFold/ASCII-4 125177359 9.380 ns/op BenchmarkEqualFold/ASCII-4 124154430 9.702 ns/op BenchmarkEqualFold/ASCII-4 123696950 9.593 ns/op BenchmarkEqualFold/ASCII-4 123395906 9.696 ns/op BenchmarkEqualFold/ASCII-4 124901568 9.592 ns/op BenchmarkEqualFold/ASCII-4 123736394 9.683 ns/op BenchmarkEqualFold/ASCII-4 123500900 9.756 ns/op BenchmarkEqualFold/ASCII-4 123416790 9.710 ns/op BenchmarkEqualFold/UnicodePrefix-4 13607595 88.65 ns/op BenchmarkEqualFold/UnicodePrefix-4 13547184 88.14 ns/op BenchmarkEqualFold/UnicodePrefix-4 13522801 88.80 ns/op BenchmarkEqualFold/UnicodePrefix-4 13594484 88.11 ns/op BenchmarkEqualFold/UnicodePrefix-4 13635918 88.52 ns/op BenchmarkEqualFold/UnicodePrefix-4 13633107 88.19 ns/op BenchmarkEqualFold/UnicodePrefix-4 13635171 88.47 ns/op BenchmarkEqualFold/UnicodePrefix-4 13622652 88.64 ns/op BenchmarkEqualFold/UnicodePrefix-4 13566505 88.77 ns/op BenchmarkEqualFold/UnicodePrefix-4 13550842 88.38 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15946285 75.73 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15851532 75.15 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15961711 75.57 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15898246 75.40 ns/op BenchmarkEqualFold/UnicodeSuffix-4 16025923 75.73 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15894139 75.02 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15840960 75.55 ns/op BenchmarkEqualFold/UnicodeSuffix-4 16019559 75.74 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15863584 75.28 ns/op BenchmarkEqualFold/UnicodeSuffix-4 15836858 75.11 ns/op BenchmarkIndexHard1-4 10000 103641 ns/op BenchmarkIndexHard1-4 10000 103830 ns/op BenchmarkIndexHard1-4 10000 103750 ns/op BenchmarkIndexHard1-4 10000 103719 ns/op BenchmarkIndexHard1-4 10000 103785 ns/op BenchmarkIndexHard1-4 10000 103964 ns/op BenchmarkIndexHard1-4 10000 103562 ns/op BenchmarkIndexHard1-4 10000 104104 ns/op BenchmarkIndexHard1-4 10000 104181 ns/op BenchmarkIndexHard1-4 10000 104032 ns/op BenchmarkIndexHard2-4 8194 146065 ns/op BenchmarkIndexHard2-4 6944 146213 ns/op BenchmarkIndexHard2-4 6888 146180 ns/op BenchmarkIndexHard2-4 6818 146780 ns/op BenchmarkIndexHard2-4 8125 145944 ns/op BenchmarkIndexHard2-4 6862 146386 ns/op BenchmarkIndexHard2-4 8214 146090 ns/op BenchmarkIndexHard2-4 8224 145661 ns/op BenchmarkIndexHard2-4 8224 146026 ns/op BenchmarkIndexHard2-4 8222 145544 ns/op BenchmarkIndexHard3-4 2529 444081 ns/op BenchmarkIndexHard3-4 2534 442938 ns/op BenchmarkIndexHard3-4 2547 443760 ns/op BenchmarkIndexHard3-4 2536 446309 ns/op BenchmarkIndexHard3-4 2462 444212 ns/op BenchmarkIndexHard3-4 2526 443682 ns/op BenchmarkIndexHard3-4 2540 443026 ns/op BenchmarkIndexHard3-4 2536 443372 ns/op BenchmarkIndexHard3-4 2523 443874 ns/op BenchmarkIndexHard3-4 2557 444697 ns/op BenchmarkIndexHard4-4 2581 446124 ns/op BenchmarkIndexHard4-4 2592 447519 ns/op BenchmarkIndexHard4-4 2564 446416 ns/op BenchmarkIndexHard4-4 2569 446886 ns/op BenchmarkIndexHard4-4 2500 443757 ns/op BenchmarkIndexHard4-4 2572 445098 ns/op BenchmarkIndexHard4-4 2598 444468 ns/op BenchmarkIndexHard4-4 2578 445143 ns/op BenchmarkIndexHard4-4 2583 446673 ns/op BenchmarkIndexHard4-4 2572 451708 ns/op BenchmarkLastIndexHard1-4 801 1480982 ns/op BenchmarkLastIndexHard1-4 793 1485236 ns/op BenchmarkLastIndexHard1-4 787 1498148 ns/op BenchmarkLastIndexHard1-4 787 1498071 ns/op BenchmarkLastIndexHard1-4 786 1504326 ns/op BenchmarkLastIndexHard1-4 790 1500862 ns/op BenchmarkLastIndexHard1-4 780 1496070 ns/op BenchmarkLastIndexHard1-4 792 1511402 ns/op BenchmarkLastIndexHard1-4 778 1502247 ns/op BenchmarkLastIndexHard1-4 782 1497909 ns/op BenchmarkLastIndexHard2-4 792 1492642 ns/op BenchmarkLastIndexHard2-4 789 1492503 ns/op BenchmarkLastIndexHard2-4 787 1489212 ns/op BenchmarkLastIndexHard2-4 790 1496442 ns/op BenchmarkLastIndexHard2-4 784 1503870 ns/op BenchmarkLastIndexHard2-4 786 1490969 ns/op BenchmarkLastIndexHard2-4 790 1501640 ns/op BenchmarkLastIndexHard2-4 787 1496890 ns/op BenchmarkLastIndexHard2-4 792 1495909 ns/op BenchmarkLastIndexHard2-4 786 1488566 ns/op BenchmarkLastIndexHard3-4 792 1486627 ns/op BenchmarkLastIndexHard3-4 787 1490570 ns/op BenchmarkLastIndexHard3-4 789 1492353 ns/op BenchmarkLastIndexHard3-4 790 1492629 ns/op BenchmarkLastIndexHard3-4 795 1487870 ns/op BenchmarkLastIndexHard3-4 790 1471337 ns/op BenchmarkLastIndexHard3-4 789 1483887 ns/op BenchmarkLastIndexHard3-4 793 1486364 ns/op BenchmarkLastIndexHard3-4 799 1493972 ns/op BenchmarkLastIndexHard3-4 789 1499417 ns/op BenchmarkCountHard1-4 10000 107421 ns/op BenchmarkCountHard1-4 10000 107549 ns/op BenchmarkCountHard1-4 10000 107705 ns/op BenchmarkCountHard1-4 10000 107813 ns/op BenchmarkCountHard1-4 10000 107362 ns/op BenchmarkCountHard1-4 10000 107771 ns/op BenchmarkCountHard1-4 10000 107359 ns/op BenchmarkCountHard1-4 10000 107874 ns/op BenchmarkCountHard1-4 10000 107762 ns/op BenchmarkCountHard1-4 10000 108214 ns/op BenchmarkCountHard2-4 6664 151433 ns/op BenchmarkCountHard2-4 7950 150786 ns/op BenchmarkCountHard2-4 6642 150918 ns/op BenchmarkCountHard2-4 6715 149875 ns/op BenchmarkCountHard2-4 7988 150342 ns/op BenchmarkCountHard2-4 7888 151988 ns/op BenchmarkCountHard2-4 7953 150588 ns/op BenchmarkCountHard2-4 7933 151705 ns/op BenchmarkCountHard2-4 6627 151200 ns/op BenchmarkCountHard2-4 6663 151567 ns/op BenchmarkCountHard3-4 2442 461673 ns/op BenchmarkCountHard3-4 2432 460142 ns/op BenchmarkCountHard3-4 2427 462036 ns/op BenchmarkCountHard3-4 2460 457647 ns/op BenchmarkCountHard3-4 2451 459228 ns/op BenchmarkCountHard3-4 2377 456134 ns/op BenchmarkCountHard3-4 2415 459683 ns/op BenchmarkCountHard3-4 2456 458966 ns/op BenchmarkCountHard3-4 2434 460131 ns/op BenchmarkCountHard3-4 2436 460607 ns/op BenchmarkIndexTorture-4 103442 11619 ns/op BenchmarkIndexTorture-4 103219 11627 ns/op BenchmarkIndexTorture-4 103707 11524 ns/op BenchmarkIndexTorture-4 104850 11364 ns/op BenchmarkIndexTorture-4 104439 11467 ns/op BenchmarkIndexTorture-4 104502 11427 ns/op BenchmarkIndexTorture-4 104203 11470 ns/op BenchmarkIndexTorture-4 105403 11405 ns/op BenchmarkIndexTorture-4 103940 11437 ns/op BenchmarkIndexTorture-4 105034 11458 ns/op BenchmarkCountTorture-4 105558 11416 ns/op BenchmarkCountTorture-4 106081 11496 ns/op BenchmarkCountTorture-4 104522 11469 ns/op BenchmarkCountTorture-4 103663 11453 ns/op BenchmarkCountTorture-4 105006 11388 ns/op BenchmarkCountTorture-4 104976 11430 ns/op BenchmarkCountTorture-4 104570 11435 ns/op BenchmarkCountTorture-4 104508 11506 ns/op BenchmarkCountTorture-4 104569 11425 ns/op BenchmarkCountTorture-4 105060 11488 ns/op BenchmarkCountTortureOverlapping-4 14290 87933 ns/op BenchmarkCountTortureOverlapping-4 13622 87903 ns/op BenchmarkCountTortureOverlapping-4 13615 83171 ns/op BenchmarkCountTortureOverlapping-4 13614 87989 ns/op BenchmarkCountTortureOverlapping-4 13617 88140 ns/op BenchmarkCountTortureOverlapping-4 13640 87829 ns/op BenchmarkCountTortureOverlapping-4 13605 84200 ns/op BenchmarkCountTortureOverlapping-4 13560 83831 ns/op BenchmarkCountTortureOverlapping-4 14278 88095 ns/op BenchmarkCountTortureOverlapping-4 14281 88312 ns/op BenchmarkCountByte/10-4 347760362 3.479 ns/op 2874.72 MB/s BenchmarkCountByte/10-4 354393265 3.444 ns/op 2903.32 MB/s BenchmarkCountByte/10-4 349573328 3.442 ns/op 2905.40 MB/s BenchmarkCountByte/10-4 343717357 3.459 ns/op 2890.69 MB/s BenchmarkCountByte/10-4 345600740 3.476 ns/op 2876.76 MB/s BenchmarkCountByte/10-4 349247840 3.364 ns/op 2972.31 MB/s BenchmarkCountByte/10-4 360847320 3.355 ns/op 2980.29 MB/s BenchmarkCountByte/10-4 362519860 3.334 ns/op 2999.79 MB/s BenchmarkCountByte/10-4 361661438 3.343 ns/op 2990.90 MB/s BenchmarkCountByte/10-4 352537372 3.390 ns/op 2949.51 MB/s BenchmarkCountByte/32-4 239166290 5.013 ns/op 6383.77 MB/s BenchmarkCountByte/32-4 239455836 4.967 ns/op 6442.04 MB/s BenchmarkCountByte/32-4 240238887 5.011 ns/op 6385.62 MB/s BenchmarkCountByte/32-4 240577500 5.025 ns/op 6367.69 MB/s BenchmarkCountByte/32-4 237864747 5.012 ns/op 6384.59 MB/s BenchmarkCountByte/32-4 242134314 4.959 ns/op 6453.22 MB/s BenchmarkCountByte/32-4 241610164 5.005 ns/op 6393.37 MB/s BenchmarkCountByte/32-4 239727040 4.931 ns/op 6488.96 MB/s BenchmarkCountByte/32-4 234593319 5.102 ns/op 6272.48 MB/s BenchmarkCountByte/32-4 235422276 5.057 ns/op 6327.54 MB/s BenchmarkCountByte/4K-4 19934739 60.77 ns/op 67400.86 MB/s BenchmarkCountByte/4K-4 20151394 60.96 ns/op 67188.95 MB/s BenchmarkCountByte/4K-4 20500640 61.66 ns/op 66425.41 MB/s BenchmarkCountByte/4K-4 20432295 59.56 ns/op 68766.46 MB/s BenchmarkCountByte/4K-4 19878181 59.55 ns/op 68788.25 MB/s BenchmarkCountByte/4K-4 20126936 59.51 ns/op 68826.77 MB/s BenchmarkCountByte/4K-4 20016609 61.52 ns/op 66584.92 MB/s BenchmarkCountByte/4K-4 19755640 58.82 ns/op 69638.32 MB/s BenchmarkCountByte/4K-4 20027593 59.70 ns/op 68606.30 MB/s BenchmarkCountByte/4K-4 20064283 59.55 ns/op 68784.42 MB/s BenchmarkCountByte/4M-4 10777 120006 ns/op 34950.82 MB/s BenchmarkCountByte/4M-4 9304 119387 ns/op 35131.86 MB/s BenchmarkCountByte/4M-4 8978 119669 ns/op 35049.19 MB/s BenchmarkCountByte/4M-4 10880 119296 ns/op 35158.65 MB/s BenchmarkCountByte/4M-4 9534 119316 ns/op 35152.77 MB/s BenchmarkCountByte/4M-4 10882 119754 ns/op 35024.27 MB/s BenchmarkCountByte/4M-4 11052 118762 ns/op 35316.89 MB/s BenchmarkCountByte/4M-4 11134 118530 ns/op 35385.91 MB/s BenchmarkCountByte/4M-4 9483 118124 ns/op 35507.61 MB/s BenchmarkCountByte/4M-4 8881 118282 ns/op 35460.20 MB/s BenchmarkCountByte/64M-4 188 5747764 ns/op 11675.65 MB/s BenchmarkCountByte/64M-4 206 5763873 ns/op 11643.02 MB/s BenchmarkCountByte/64M-4 180 5908077 ns/op 11358.83 MB/s BenchmarkCountByte/64M-4 170 5947091 ns/op 11284.32 MB/s BenchmarkCountByte/64M-4 169 6237354 ns/op 10759.19 MB/s BenchmarkCountByte/64M-4 172 6149501 ns/op 10912.90 MB/s BenchmarkCountByte/64M-4 168 6036400 ns/op 11117.37 MB/s BenchmarkCountByte/64M-4 196 5973571 ns/op 11234.30 MB/s BenchmarkCountByte/64M-4 169 6073211 ns/op 11049.98 MB/s BenchmarkCountByte/64M-4 180 5809076 ns/op 11552.42 MB/s BenchmarkIndexAnyASCII/1:1-4 290191106 4.200 ns/op BenchmarkIndexAnyASCII/1:1-4 284814307 4.199 ns/op BenchmarkIndexAnyASCII/1:1-4 289681848 4.239 ns/op BenchmarkIndexAnyASCII/1:1-4 287417277 4.171 ns/op BenchmarkIndexAnyASCII/1:1-4 285172149 4.227 ns/op BenchmarkIndexAnyASCII/1:1-4 286249170 4.143 ns/op BenchmarkIndexAnyASCII/1:1-4 285364036 4.177 ns/op BenchmarkIndexAnyASCII/1:1-4 289407692 4.194 ns/op BenchmarkIndexAnyASCII/1:1-4 287831378 4.185 ns/op BenchmarkIndexAnyASCII/1:1-4 284935206 4.196 ns/op BenchmarkIndexAnyASCII/1:2-4 224141785 5.404 ns/op BenchmarkIndexAnyASCII/1:2-4 221927132 5.386 ns/op BenchmarkIndexAnyASCII/1:2-4 224069047 5.281 ns/op BenchmarkIndexAnyASCII/1:2-4 226636203 5.236 ns/op BenchmarkIndexAnyASCII/1:2-4 226229409 5.307 ns/op BenchmarkIndexAnyASCII/1:2-4 226027221 5.278 ns/op BenchmarkIndexAnyASCII/1:2-4 225299589 5.267 ns/op BenchmarkIndexAnyASCII/1:2-4 224912527 5.390 ns/op BenchmarkIndexAnyASCII/1:2-4 220370524 5.415 ns/op BenchmarkIndexAnyASCII/1:2-4 217866177 5.420 ns/op BenchmarkIndexAnyASCII/1:4-4 218328949 5.454 ns/op BenchmarkIndexAnyASCII/1:4-4 219832988 5.524 ns/op BenchmarkIndexAnyASCII/1:4-4 219329040 5.393 ns/op BenchmarkIndexAnyASCII/1:4-4 223824104 5.489 ns/op BenchmarkIndexAnyASCII/1:4-4 222094755 5.470 ns/op BenchmarkIndexAnyASCII/1:4-4 222706480 5.280 ns/op BenchmarkIndexAnyASCII/1:4-4 222776245 5.330 ns/op BenchmarkIndexAnyASCII/1:4-4 228321098 5.208 ns/op BenchmarkIndexAnyASCII/1:4-4 229805415 5.157 ns/op BenchmarkIndexAnyASCII/1:4-4 234177212 5.205 ns/op BenchmarkIndexAnyASCII/1:8-4 232670805 5.288 ns/op BenchmarkIndexAnyASCII/1:8-4 230426269 5.250 ns/op BenchmarkIndexAnyASCII/1:8-4 229053410 5.135 ns/op BenchmarkIndexAnyASCII/1:8-4 230132200 5.126 ns/op BenchmarkIndexAnyASCII/1:8-4 233753619 5.212 ns/op BenchmarkIndexAnyASCII/1:8-4 228738066 5.211 ns/op BenchmarkIndexAnyASCII/1:8-4 231725030 5.212 ns/op BenchmarkIndexAnyASCII/1:8-4 231195720 5.259 ns/op BenchmarkIndexAnyASCII/1:8-4 231307578 5.116 ns/op BenchmarkIndexAnyASCII/1:8-4 232892258 5.111 ns/op BenchmarkIndexAnyASCII/1:16-4 223989738 5.248 ns/op BenchmarkIndexAnyASCII/1:16-4 227779297 5.290 ns/op BenchmarkIndexAnyASCII/1:16-4 224507542 5.310 ns/op BenchmarkIndexAnyASCII/1:16-4 227169805 5.314 ns/op BenchmarkIndexAnyASCII/1:16-4 225869977 5.262 ns/op BenchmarkIndexAnyASCII/1:16-4 227618875 5.362 ns/op BenchmarkIndexAnyASCII/1:16-4 229271397 5.232 ns/op BenchmarkIndexAnyASCII/1:16-4 228571724 5.237 ns/op BenchmarkIndexAnyASCII/1:16-4 230914914 5.271 ns/op BenchmarkIndexAnyASCII/1:16-4 232189875 5.202 ns/op BenchmarkIndexAnyASCII/1:32-4 211700307 5.691 ns/op BenchmarkIndexAnyASCII/1:32-4 209955372 5.764 ns/op BenchmarkIndexAnyASCII/1:32-4 210437798 5.714 ns/op BenchmarkIndexAnyASCII/1:32-4 209590532 5.671 ns/op BenchmarkIndexAnyASCII/1:32-4 210340442 5.620 ns/op BenchmarkIndexAnyASCII/1:32-4 209715778 5.677 ns/op BenchmarkIndexAnyASCII/1:32-4 207712438 5.652 ns/op BenchmarkIndexAnyASCII/1:32-4 211802650 5.697 ns/op BenchmarkIndexAnyASCII/1:32-4 208843897 5.724 ns/op BenchmarkIndexAnyASCII/1:32-4 206977417 5.743 ns/op BenchmarkIndexAnyASCII/1:64-4 215283313 5.482 ns/op BenchmarkIndexAnyASCII/1:64-4 219064719 5.417 ns/op BenchmarkIndexAnyASCII/1:64-4 218399605 5.386 ns/op BenchmarkIndexAnyASCII/1:64-4 221710022 5.452 ns/op BenchmarkIndexAnyASCII/1:64-4 223972282 5.531 ns/op BenchmarkIndexAnyASCII/1:64-4 215536074 5.501 ns/op BenchmarkIndexAnyASCII/1:64-4 218974162 5.400 ns/op BenchmarkIndexAnyASCII/1:64-4 222454945 5.571 ns/op BenchmarkIndexAnyASCII/1:64-4 217133530 5.491 ns/op BenchmarkIndexAnyASCII/1:64-4 215727284 5.446 ns/op BenchmarkIndexAnyASCII/16:1-4 276962332 4.369 ns/op BenchmarkIndexAnyASCII/16:1-4 280868480 4.351 ns/op BenchmarkIndexAnyASCII/16:1-4 274177759 4.295 ns/op BenchmarkIndexAnyASCII/16:1-4 273293320 4.345 ns/op BenchmarkIndexAnyASCII/16:1-4 278437586 4.316 ns/op BenchmarkIndexAnyASCII/16:1-4 277525678 4.314 ns/op BenchmarkIndexAnyASCII/16:1-4 275799222 4.298 ns/op BenchmarkIndexAnyASCII/16:1-4 276260960 4.330 ns/op BenchmarkIndexAnyASCII/16:1-4 277386387 4.303 ns/op BenchmarkIndexAnyASCII/16:1-4 274213638 4.361 ns/op BenchmarkIndexAnyASCII/16:2-4 91601298 13.18 ns/op BenchmarkIndexAnyASCII/16:2-4 89863266 13.16 ns/op BenchmarkIndexAnyASCII/16:2-4 90170898 13.16 ns/op BenchmarkIndexAnyASCII/16:2-4 91878794 13.10 ns/op BenchmarkIndexAnyASCII/16:2-4 91065661 13.05 ns/op BenchmarkIndexAnyASCII/16:2-4 92068152 13.01 ns/op BenchmarkIndexAnyASCII/16:2-4 92429001 13.00 ns/op BenchmarkIndexAnyASCII/16:2-4 92137952 12.98 ns/op BenchmarkIndexAnyASCII/16:2-4 93986978 12.98 ns/op BenchmarkIndexAnyASCII/16:2-4 91708980 12.99 ns/op BenchmarkIndexAnyASCII/16:4-4 80673922 14.88 ns/op BenchmarkIndexAnyASCII/16:4-4 79440121 14.91 ns/op BenchmarkIndexAnyASCII/16:4-4 79328860 14.98 ns/op BenchmarkIndexAnyASCII/16:4-4 79332165 14.93 ns/op BenchmarkIndexAnyASCII/16:4-4 78925174 14.99 ns/op BenchmarkIndexAnyASCII/16:4-4 78646194 15.05 ns/op BenchmarkIndexAnyASCII/16:4-4 78892999 15.07 ns/op BenchmarkIndexAnyASCII/16:4-4 79882928 14.94 ns/op BenchmarkIndexAnyASCII/16:4-4 79945018 14.87 ns/op BenchmarkIndexAnyASCII/16:4-4 80522542 14.87 ns/op BenchmarkIndexAnyASCII/16:8-4 59883982 20.04 ns/op BenchmarkIndexAnyASCII/16:8-4 60035308 20.03 ns/op BenchmarkIndexAnyASCII/16:8-4 59502186 19.97 ns/op BenchmarkIndexAnyASCII/16:8-4 60222500 20.02 ns/op BenchmarkIndexAnyASCII/16:8-4 59478433 19.96 ns/op BenchmarkIndexAnyASCII/16:8-4 59450775 19.92 ns/op BenchmarkIndexAnyASCII/16:8-4 59949582 19.91 ns/op BenchmarkIndexAnyASCII/16:8-4 59440420 20.03 ns/op BenchmarkIndexAnyASCII/16:8-4 60180049 19.98 ns/op BenchmarkIndexAnyASCII/16:8-4 59821298 20.03 ns/op BenchmarkIndexAnyASCII/16:16-4 49829890 23.91 ns/op BenchmarkIndexAnyASCII/16:16-4 50272891 23.86 ns/op BenchmarkIndexAnyASCII/16:16-4 50099694 23.94 ns/op BenchmarkIndexAnyASCII/16:16-4 49435830 23.93 ns/op BenchmarkIndexAnyASCII/16:16-4 50307927 23.85 ns/op BenchmarkIndexAnyASCII/16:16-4 49865858 23.89 ns/op BenchmarkIndexAnyASCII/16:16-4 49892068 23.95 ns/op BenchmarkIndexAnyASCII/16:16-4 49898118 23.87 ns/op BenchmarkIndexAnyASCII/16:16-4 50139835 23.89 ns/op BenchmarkIndexAnyASCII/16:16-4 50246908 23.87 ns/op BenchmarkIndexAnyASCII/16:32-4 26476162 45.09 ns/op BenchmarkIndexAnyASCII/16:32-4 26623370 45.12 ns/op BenchmarkIndexAnyASCII/16:32-4 26521682 45.24 ns/op BenchmarkIndexAnyASCII/16:32-4 26512046 45.30 ns/op BenchmarkIndexAnyASCII/16:32-4 26531098 45.26 ns/op BenchmarkIndexAnyASCII/16:32-4 26602082 45.24 ns/op BenchmarkIndexAnyASCII/16:32-4 26598878 45.25 ns/op BenchmarkIndexAnyASCII/16:32-4 26531764 45.24 ns/op BenchmarkIndexAnyASCII/16:32-4 26583771 45.18 ns/op BenchmarkIndexAnyASCII/16:32-4 26803304 45.20 ns/op BenchmarkIndexAnyASCII/16:64-4 13697294 86.92 ns/op BenchmarkIndexAnyASCII/16:64-4 13794974 86.76 ns/op BenchmarkIndexAnyASCII/16:64-4 13851326 86.98 ns/op BenchmarkIndexAnyASCII/16:64-4 13774726 86.96 ns/op BenchmarkIndexAnyASCII/16:64-4 13802716 86.96 ns/op BenchmarkIndexAnyASCII/16:64-4 13794736 87.02 ns/op BenchmarkIndexAnyASCII/16:64-4 13671637 87.11 ns/op BenchmarkIndexAnyASCII/16:64-4 13750458 87.08 ns/op BenchmarkIndexAnyASCII/16:64-4 13760277 87.25 ns/op BenchmarkIndexAnyASCII/16:64-4 13746162 87.10 ns/op BenchmarkIndexAnyASCII/256:1-4 163938352 7.465 ns/op BenchmarkIndexAnyASCII/256:1-4 166299223 7.272 ns/op BenchmarkIndexAnyASCII/256:1-4 162488030 7.305 ns/op BenchmarkIndexAnyASCII/256:1-4 159858907 7.420 ns/op BenchmarkIndexAnyASCII/256:1-4 159323878 7.336 ns/op BenchmarkIndexAnyASCII/256:1-4 161010706 7.492 ns/op BenchmarkIndexAnyASCII/256:1-4 160523078 7.645 ns/op BenchmarkIndexAnyASCII/256:1-4 157342689 7.556 ns/op BenchmarkIndexAnyASCII/256:1-4 159395761 7.520 ns/op BenchmarkIndexAnyASCII/256:1-4 157843972 7.495 ns/op BenchmarkIndexAnyASCII/256:2-4 7604512 156.1 ns/op BenchmarkIndexAnyASCII/256:2-4 7737038 153.7 ns/op BenchmarkIndexAnyASCII/256:2-4 7926663 151.7 ns/op BenchmarkIndexAnyASCII/256:2-4 7553006 152.2 ns/op BenchmarkIndexAnyASCII/256:2-4 7811088 151.6 ns/op BenchmarkIndexAnyASCII/256:2-4 7856992 154.9 ns/op BenchmarkIndexAnyASCII/256:2-4 7872232 152.8 ns/op BenchmarkIndexAnyASCII/256:2-4 7487236 152.5 ns/op BenchmarkIndexAnyASCII/256:2-4 7866748 153.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7471974 154.2 ns/op BenchmarkIndexAnyASCII/256:4-4 7735042 155.3 ns/op BenchmarkIndexAnyASCII/256:4-4 7752036 155.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7716351 155.2 ns/op BenchmarkIndexAnyASCII/256:4-4 7752681 155.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7668490 155.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7736090 155.3 ns/op BenchmarkIndexAnyASCII/256:4-4 7728116 154.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7767597 153.7 ns/op BenchmarkIndexAnyASCII/256:4-4 7804728 154.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7765824 153.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7739128 154.0 ns/op BenchmarkIndexAnyASCII/256:8-4 7757869 154.3 ns/op BenchmarkIndexAnyASCII/256:8-4 7793168 154.4 ns/op BenchmarkIndexAnyASCII/256:8-4 7751988 154.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7781571 154.3 ns/op BenchmarkIndexAnyASCII/256:8-4 7821824 154.4 ns/op BenchmarkIndexAnyASCII/256:8-4 7786173 154.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7790684 154.3 ns/op BenchmarkIndexAnyASCII/256:8-4 7782586 154.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7760282 154.4 ns/op BenchmarkIndexAnyASCII/256:16-4 7455901 160.9 ns/op BenchmarkIndexAnyASCII/256:16-4 7502752 160.4 ns/op BenchmarkIndexAnyASCII/256:16-4 7477563 160.3 ns/op BenchmarkIndexAnyASCII/256:16-4 7493673 161.3 ns/op BenchmarkIndexAnyASCII/256:16-4 7453417 161.1 ns/op BenchmarkIndexAnyASCII/256:16-4 7452330 161.3 ns/op BenchmarkIndexAnyASCII/256:16-4 7431996 161.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7369825 163.8 ns/op BenchmarkIndexAnyASCII/256:16-4 7253902 165.2 ns/op BenchmarkIndexAnyASCII/256:16-4 7291316 163.9 ns/op BenchmarkIndexAnyASCII/256:32-4 6335703 188.9 ns/op BenchmarkIndexAnyASCII/256:32-4 6375919 189.0 ns/op BenchmarkIndexAnyASCII/256:32-4 6364753 188.6 ns/op BenchmarkIndexAnyASCII/256:32-4 6359724 188.0 ns/op BenchmarkIndexAnyASCII/256:32-4 6411568 188.0 ns/op BenchmarkIndexAnyASCII/256:32-4 6296970 188.6 ns/op BenchmarkIndexAnyASCII/256:32-4 6314606 188.3 ns/op BenchmarkIndexAnyASCII/256:32-4 6349443 188.9 ns/op BenchmarkIndexAnyASCII/256:32-4 6373579 188.0 ns/op BenchmarkIndexAnyASCII/256:32-4 6375476 188.1 ns/op BenchmarkIndexAnyASCII/256:64-4 5278185 225.6 ns/op BenchmarkIndexAnyASCII/256:64-4 5321866 225.5 ns/op BenchmarkIndexAnyASCII/256:64-4 5331920 226.0 ns/op BenchmarkIndexAnyASCII/256:64-4 5328460 225.2 ns/op BenchmarkIndexAnyASCII/256:64-4 5323221 225.5 ns/op BenchmarkIndexAnyASCII/256:64-4 5336050 224.9 ns/op BenchmarkIndexAnyASCII/256:64-4 5313084 225.5 ns/op BenchmarkIndexAnyASCII/256:64-4 5307880 227.0 ns/op BenchmarkIndexAnyASCII/256:64-4 5288491 226.5 ns/op BenchmarkIndexAnyASCII/256:64-4 5308302 227.1 ns/op BenchmarkIndexAnyUTF8/1:1-4 337456352 3.571 ns/op BenchmarkIndexAnyUTF8/1:1-4 336251988 3.559 ns/op BenchmarkIndexAnyUTF8/1:1-4 336231584 3.562 ns/op BenchmarkIndexAnyUTF8/1:1-4 340015657 3.532 ns/op BenchmarkIndexAnyUTF8/1:1-4 341147965 3.533 ns/op BenchmarkIndexAnyUTF8/1:1-4 339607584 3.554 ns/op BenchmarkIndexAnyUTF8/1:1-4 341680502 3.557 ns/op BenchmarkIndexAnyUTF8/1:1-4 338898481 3.518 ns/op BenchmarkIndexAnyUTF8/1:1-4 338174197 3.547 ns/op BenchmarkIndexAnyUTF8/1:1-4 335849324 3.531 ns/op BenchmarkIndexAnyUTF8/1:2-4 233777788 5.137 ns/op BenchmarkIndexAnyUTF8/1:2-4 232202902 5.147 ns/op BenchmarkIndexAnyUTF8/1:2-4 232069252 5.127 ns/op BenchmarkIndexAnyUTF8/1:2-4 233442277 5.138 ns/op BenchmarkIndexAnyUTF8/1:2-4 232568298 5.150 ns/op BenchmarkIndexAnyUTF8/1:2-4 234405686 5.113 ns/op BenchmarkIndexAnyUTF8/1:2-4 235027648 5.054 ns/op BenchmarkIndexAnyUTF8/1:2-4 234038364 5.053 ns/op BenchmarkIndexAnyUTF8/1:2-4 234702709 5.056 ns/op BenchmarkIndexAnyUTF8/1:2-4 237883304 5.083 ns/op BenchmarkIndexAnyUTF8/1:4-4 236103829 5.105 ns/op BenchmarkIndexAnyUTF8/1:4-4 236672935 5.123 ns/op BenchmarkIndexAnyUTF8/1:4-4 234877618 5.113 ns/op BenchmarkIndexAnyUTF8/1:4-4 234853657 5.122 ns/op BenchmarkIndexAnyUTF8/1:4-4 234822956 5.061 ns/op BenchmarkIndexAnyUTF8/1:4-4 235591056 5.158 ns/op BenchmarkIndexAnyUTF8/1:4-4 234146517 5.136 ns/op BenchmarkIndexAnyUTF8/1:4-4 234988405 5.172 ns/op BenchmarkIndexAnyUTF8/1:4-4 236204263 5.103 ns/op BenchmarkIndexAnyUTF8/1:4-4 234731451 5.137 ns/op BenchmarkIndexAnyUTF8/1:8-4 234254017 5.161 ns/op BenchmarkIndexAnyUTF8/1:8-4 234517735 5.148 ns/op BenchmarkIndexAnyUTF8/1:8-4 233297088 5.124 ns/op BenchmarkIndexAnyUTF8/1:8-4 234410175 5.154 ns/op BenchmarkIndexAnyUTF8/1:8-4 235078765 5.180 ns/op BenchmarkIndexAnyUTF8/1:8-4 232938706 5.166 ns/op BenchmarkIndexAnyUTF8/1:8-4 232930078 5.124 ns/op BenchmarkIndexAnyUTF8/1:8-4 234768934 5.182 ns/op BenchmarkIndexAnyUTF8/1:8-4 233884538 5.132 ns/op BenchmarkIndexAnyUTF8/1:8-4 235722912 5.139 ns/op BenchmarkIndexAnyUTF8/1:16-4 230730338 5.253 ns/op BenchmarkIndexAnyUTF8/1:16-4 228490992 5.203 ns/op BenchmarkIndexAnyUTF8/1:16-4 229989861 5.176 ns/op BenchmarkIndexAnyUTF8/1:16-4 230724926 5.166 ns/op BenchmarkIndexAnyUTF8/1:16-4 229423450 5.188 ns/op BenchmarkIndexAnyUTF8/1:16-4 230342635 5.184 ns/op BenchmarkIndexAnyUTF8/1:16-4 232133547 5.213 ns/op BenchmarkIndexAnyUTF8/1:16-4 231311374 5.146 ns/op BenchmarkIndexAnyUTF8/1:16-4 230558037 5.228 ns/op BenchmarkIndexAnyUTF8/1:16-4 230184049 5.253 ns/op BenchmarkIndexAnyUTF8/1:32-4 211241103 5.702 ns/op BenchmarkIndexAnyUTF8/1:32-4 212209017 5.583 ns/op BenchmarkIndexAnyUTF8/1:32-4 213735144 5.718 ns/op BenchmarkIndexAnyUTF8/1:32-4 210990856 5.603 ns/op BenchmarkIndexAnyUTF8/1:32-4 214485318 5.618 ns/op BenchmarkIndexAnyUTF8/1:32-4 212793916 5.656 ns/op BenchmarkIndexAnyUTF8/1:32-4 214392092 5.630 ns/op BenchmarkIndexAnyUTF8/1:32-4 210021258 5.678 ns/op BenchmarkIndexAnyUTF8/1:32-4 210717223 5.674 ns/op BenchmarkIndexAnyUTF8/1:32-4 211919200 5.615 ns/op BenchmarkIndexAnyUTF8/1:64-4 221908591 5.412 ns/op BenchmarkIndexAnyUTF8/1:64-4 220644579 5.413 ns/op BenchmarkIndexAnyUTF8/1:64-4 218002364 5.433 ns/op BenchmarkIndexAnyUTF8/1:64-4 220853648 5.507 ns/op BenchmarkIndexAnyUTF8/1:64-4 219839936 5.403 ns/op BenchmarkIndexAnyUTF8/1:64-4 219290786 5.450 ns/op BenchmarkIndexAnyUTF8/1:64-4 220110682 5.449 ns/op BenchmarkIndexAnyUTF8/1:64-4 216941791 5.450 ns/op BenchmarkIndexAnyUTF8/1:64-4 219059010 5.587 ns/op BenchmarkIndexAnyUTF8/1:64-4 217406344 5.526 ns/op BenchmarkIndexAnyUTF8/16:1-4 95795992 12.56 ns/op BenchmarkIndexAnyUTF8/16:1-4 95452674 12.58 ns/op BenchmarkIndexAnyUTF8/16:1-4 94670335 12.64 ns/op BenchmarkIndexAnyUTF8/16:1-4 93386870 12.69 ns/op BenchmarkIndexAnyUTF8/16:1-4 94753078 12.51 ns/op BenchmarkIndexAnyUTF8/16:1-4 94981072 12.53 ns/op BenchmarkIndexAnyUTF8/16:1-4 96378171 12.44 ns/op BenchmarkIndexAnyUTF8/16:1-4 95500243 12.62 ns/op BenchmarkIndexAnyUTF8/16:1-4 96407060 12.49 ns/op BenchmarkIndexAnyUTF8/16:1-4 95666857 12.50 ns/op BenchmarkIndexAnyUTF8/16:2-4 23308791 51.81 ns/op BenchmarkIndexAnyUTF8/16:2-4 22885254 52.14 ns/op BenchmarkIndexAnyUTF8/16:2-4 23075804 52.34 ns/op BenchmarkIndexAnyUTF8/16:2-4 22769077 51.97 ns/op BenchmarkIndexAnyUTF8/16:2-4 22745028 52.24 ns/op BenchmarkIndexAnyUTF8/16:2-4 22843531 52.44 ns/op BenchmarkIndexAnyUTF8/16:2-4 23068720 51.90 ns/op BenchmarkIndexAnyUTF8/16:2-4 23114290 51.97 ns/op BenchmarkIndexAnyUTF8/16:2-4 23193980 51.94 ns/op BenchmarkIndexAnyUTF8/16:2-4 23225256 51.70 ns/op BenchmarkIndexAnyUTF8/16:4-4 23066702 51.88 ns/op BenchmarkIndexAnyUTF8/16:4-4 23223642 52.03 ns/op BenchmarkIndexAnyUTF8/16:4-4 23007339 51.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 23108523 52.09 ns/op BenchmarkIndexAnyUTF8/16:4-4 23083372 51.92 ns/op BenchmarkIndexAnyUTF8/16:4-4 23051043 51.95 ns/op BenchmarkIndexAnyUTF8/16:4-4 23044863 51.93 ns/op BenchmarkIndexAnyUTF8/16:4-4 23194579 52.00 ns/op BenchmarkIndexAnyUTF8/16:4-4 23250968 51.96 ns/op BenchmarkIndexAnyUTF8/16:4-4 22989562 51.86 ns/op BenchmarkIndexAnyUTF8/16:8-4 23217843 51.84 ns/op BenchmarkIndexAnyUTF8/16:8-4 23399740 51.96 ns/op BenchmarkIndexAnyUTF8/16:8-4 23168364 52.03 ns/op BenchmarkIndexAnyUTF8/16:8-4 23197078 51.87 ns/op BenchmarkIndexAnyUTF8/16:8-4 23057620 51.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 23341298 51.81 ns/op BenchmarkIndexAnyUTF8/16:8-4 22982422 52.26 ns/op BenchmarkIndexAnyUTF8/16:8-4 23317971 51.93 ns/op BenchmarkIndexAnyUTF8/16:8-4 23385153 51.68 ns/op BenchmarkIndexAnyUTF8/16:8-4 23147742 51.79 ns/op BenchmarkIndexAnyUTF8/16:16-4 22808925 52.30 ns/op BenchmarkIndexAnyUTF8/16:16-4 23066764 52.05 ns/op BenchmarkIndexAnyUTF8/16:16-4 22947237 52.13 ns/op BenchmarkIndexAnyUTF8/16:16-4 23143426 52.38 ns/op BenchmarkIndexAnyUTF8/16:16-4 22812486 52.73 ns/op BenchmarkIndexAnyUTF8/16:16-4 22367102 52.43 ns/op BenchmarkIndexAnyUTF8/16:16-4 22758042 52.50 ns/op BenchmarkIndexAnyUTF8/16:16-4 22919360 52.88 ns/op BenchmarkIndexAnyUTF8/16:16-4 22801114 52.61 ns/op BenchmarkIndexAnyUTF8/16:16-4 22830186 52.46 ns/op BenchmarkIndexAnyUTF8/16:32-4 19444263 61.58 ns/op BenchmarkIndexAnyUTF8/16:32-4 19265584 61.93 ns/op BenchmarkIndexAnyUTF8/16:32-4 19450581 61.82 ns/op BenchmarkIndexAnyUTF8/16:32-4 19371924 61.77 ns/op BenchmarkIndexAnyUTF8/16:32-4 19187151 62.01 ns/op BenchmarkIndexAnyUTF8/16:32-4 19276296 61.89 ns/op BenchmarkIndexAnyUTF8/16:32-4 19238270 62.48 ns/op BenchmarkIndexAnyUTF8/16:32-4 19472691 61.20 ns/op BenchmarkIndexAnyUTF8/16:32-4 19536637 60.92 ns/op BenchmarkIndexAnyUTF8/16:32-4 19831009 60.63 ns/op BenchmarkIndexAnyUTF8/16:64-4 21161000 57.12 ns/op BenchmarkIndexAnyUTF8/16:64-4 21120458 57.69 ns/op BenchmarkIndexAnyUTF8/16:64-4 21005310 57.38 ns/op BenchmarkIndexAnyUTF8/16:64-4 20545354 58.31 ns/op BenchmarkIndexAnyUTF8/16:64-4 20526051 58.09 ns/op BenchmarkIndexAnyUTF8/16:64-4 20972164 57.80 ns/op BenchmarkIndexAnyUTF8/16:64-4 20830308 58.33 ns/op BenchmarkIndexAnyUTF8/16:64-4 20451692 57.48 ns/op BenchmarkIndexAnyUTF8/16:64-4 20875281 57.64 ns/op BenchmarkIndexAnyUTF8/16:64-4 20892555 57.38 ns/op BenchmarkIndexAnyUTF8/256:1-4 7763284 154.2 ns/op BenchmarkIndexAnyUTF8/256:1-4 7781116 155.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 7769277 155.3 ns/op BenchmarkIndexAnyUTF8/256:1-4 7730694 154.6 ns/op BenchmarkIndexAnyUTF8/256:1-4 7778718 154.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 7749945 154.7 ns/op BenchmarkIndexAnyUTF8/256:1-4 7813566 154.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 7809163 154.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 7787875 154.5 ns/op BenchmarkIndexAnyUTF8/256:1-4 7790324 154.4 ns/op BenchmarkIndexAnyUTF8/256:2-4 1544564 776.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1548400 774.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1546869 776.0 ns/op BenchmarkIndexAnyUTF8/256:2-4 1551846 778.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 1522592 775.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 1560812 773.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1563703 767.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 1560802 775.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 1547492 770.2 ns/op BenchmarkIndexAnyUTF8/256:2-4 1556721 766.0 ns/op BenchmarkIndexAnyUTF8/256:4-4 1559371 764.4 ns/op BenchmarkIndexAnyUTF8/256:4-4 1572891 768.3 ns/op BenchmarkIndexAnyUTF8/256:4-4 1570896 766.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 1552890 766.2 ns/op BenchmarkIndexAnyUTF8/256:4-4 1557237 767.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 1566637 767.7 ns/op BenchmarkIndexAnyUTF8/256:4-4 1556769 768.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 1567489 765.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 1551075 769.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 1551744 768.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 1559077 776.5 ns/op BenchmarkIndexAnyUTF8/256:8-4 1552502 771.3 ns/op BenchmarkIndexAnyUTF8/256:8-4 1549702 770.9 ns/op BenchmarkIndexAnyUTF8/256:8-4 1562146 772.2 ns/op BenchmarkIndexAnyUTF8/256:8-4 1560190 772.0 ns/op BenchmarkIndexAnyUTF8/256:8-4 1543780 771.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 1554957 767.3 ns/op BenchmarkIndexAnyUTF8/256:8-4 1570322 772.9 ns/op BenchmarkIndexAnyUTF8/256:8-4 1548703 772.4 ns/op BenchmarkIndexAnyUTF8/256:8-4 1548487 769.8 ns/op BenchmarkIndexAnyUTF8/256:16-4 1516773 790.7 ns/op BenchmarkIndexAnyUTF8/256:16-4 1515228 792.0 ns/op BenchmarkIndexAnyUTF8/256:16-4 1516612 793.8 ns/op BenchmarkIndexAnyUTF8/256:16-4 1515222 793.0 ns/op BenchmarkIndexAnyUTF8/256:16-4 1508391 795.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 1506858 795.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1504492 796.6 ns/op BenchmarkIndexAnyUTF8/256:16-4 1506112 801.3 ns/op BenchmarkIndexAnyUTF8/256:16-4 1494750 798.1 ns/op BenchmarkIndexAnyUTF8/256:16-4 1509925 798.3 ns/op BenchmarkIndexAnyUTF8/256:32-4 1297618 922.7 ns/op BenchmarkIndexAnyUTF8/256:32-4 1304085 919.6 ns/op BenchmarkIndexAnyUTF8/256:32-4 1305571 915.0 ns/op BenchmarkIndexAnyUTF8/256:32-4 1300990 911.0 ns/op BenchmarkIndexAnyUTF8/256:32-4 1307895 909.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 1309554 922.2 ns/op BenchmarkIndexAnyUTF8/256:32-4 1318198 915.8 ns/op BenchmarkIndexAnyUTF8/256:32-4 1313119 917.6 ns/op BenchmarkIndexAnyUTF8/256:32-4 1315165 918.8 ns/op BenchmarkIndexAnyUTF8/256:32-4 1303665 921.6 ns/op BenchmarkIndexAnyUTF8/256:64-4 1356931 889.1 ns/op BenchmarkIndexAnyUTF8/256:64-4 1366698 878.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 1356681 877.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 1370170 885.4 ns/op BenchmarkIndexAnyUTF8/256:64-4 1354312 880.0 ns/op BenchmarkIndexAnyUTF8/256:64-4 1365619 866.3 ns/op BenchmarkIndexAnyUTF8/256:64-4 1385331 873.5 ns/op BenchmarkIndexAnyUTF8/256:64-4 1371159 877.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 1374177 871.8 ns/op BenchmarkIndexAnyUTF8/256:64-4 1368765 876.0 ns/op BenchmarkLastIndexAnyASCII/1:1-4 306673519 3.989 ns/op BenchmarkLastIndexAnyASCII/1:1-4 303132276 4.006 ns/op BenchmarkLastIndexAnyASCII/1:1-4 302131603 3.966 ns/op BenchmarkLastIndexAnyASCII/1:1-4 305276919 3.969 ns/op BenchmarkLastIndexAnyASCII/1:1-4 305604326 3.992 ns/op BenchmarkLastIndexAnyASCII/1:1-4 302776387 3.943 ns/op BenchmarkLastIndexAnyASCII/1:1-4 303694876 3.937 ns/op BenchmarkLastIndexAnyASCII/1:1-4 303267865 3.944 ns/op BenchmarkLastIndexAnyASCII/1:1-4 304641495 3.967 ns/op BenchmarkLastIndexAnyASCII/1:1-4 300241924 3.942 ns/op BenchmarkLastIndexAnyASCII/1:2-4 300876123 3.931 ns/op BenchmarkLastIndexAnyASCII/1:2-4 303721104 3.985 ns/op BenchmarkLastIndexAnyASCII/1:2-4 302382142 3.978 ns/op BenchmarkLastIndexAnyASCII/1:2-4 305077960 3.965 ns/op BenchmarkLastIndexAnyASCII/1:2-4 300742177 3.930 ns/op BenchmarkLastIndexAnyASCII/1:2-4 301243868 3.939 ns/op BenchmarkLastIndexAnyASCII/1:2-4 302929737 3.976 ns/op BenchmarkLastIndexAnyASCII/1:2-4 305337877 3.922 ns/op BenchmarkLastIndexAnyASCII/1:2-4 301766637 3.927 ns/op BenchmarkLastIndexAnyASCII/1:2-4 302443507 3.894 ns/op BenchmarkLastIndexAnyASCII/1:4-4 301831656 3.921 ns/op BenchmarkLastIndexAnyASCII/1:4-4 305438194 3.986 ns/op BenchmarkLastIndexAnyASCII/1:4-4 305714061 3.976 ns/op BenchmarkLastIndexAnyASCII/1:4-4 299734922 3.959 ns/op BenchmarkLastIndexAnyASCII/1:4-4 303372781 3.948 ns/op BenchmarkLastIndexAnyASCII/1:4-4 301768191 4.000 ns/op BenchmarkLastIndexAnyASCII/1:4-4 299122434 3.964 ns/op BenchmarkLastIndexAnyASCII/1:4-4 302352435 3.990 ns/op BenchmarkLastIndexAnyASCII/1:4-4 303675028 3.989 ns/op BenchmarkLastIndexAnyASCII/1:4-4 302271423 4.086 ns/op BenchmarkLastIndexAnyASCII/1:8-4 298883126 4.004 ns/op BenchmarkLastIndexAnyASCII/1:8-4 296831181 4.052 ns/op BenchmarkLastIndexAnyASCII/1:8-4 293902266 4.041 ns/op BenchmarkLastIndexAnyASCII/1:8-4 296168778 4.088 ns/op BenchmarkLastIndexAnyASCII/1:8-4 295610593 4.103 ns/op BenchmarkLastIndexAnyASCII/1:8-4 294421302 4.068 ns/op BenchmarkLastIndexAnyASCII/1:8-4 296721636 4.128 ns/op BenchmarkLastIndexAnyASCII/1:8-4 293951156 4.003 ns/op BenchmarkLastIndexAnyASCII/1:8-4 296405764 4.037 ns/op BenchmarkLastIndexAnyASCII/1:8-4 296756986 4.043 ns/op BenchmarkLastIndexAnyASCII/1:16-4 286168582 4.150 ns/op BenchmarkLastIndexAnyASCII/1:16-4 287010651 4.205 ns/op BenchmarkLastIndexAnyASCII/1:16-4 284768275 4.161 ns/op BenchmarkLastIndexAnyASCII/1:16-4 285859665 4.106 ns/op BenchmarkLastIndexAnyASCII/1:16-4 291255369 4.066 ns/op BenchmarkLastIndexAnyASCII/1:16-4 292072944 4.059 ns/op BenchmarkLastIndexAnyASCII/1:16-4 293358879 4.066 ns/op BenchmarkLastIndexAnyASCII/1:16-4 291639517 4.093 ns/op BenchmarkLastIndexAnyASCII/1:16-4 291312211 4.115 ns/op BenchmarkLastIndexAnyASCII/1:16-4 290339818 4.110 ns/op BenchmarkLastIndexAnyASCII/1:32-4 268184826 4.437 ns/op BenchmarkLastIndexAnyASCII/1:32-4 265916552 4.467 ns/op BenchmarkLastIndexAnyASCII/1:32-4 265896442 4.488 ns/op BenchmarkLastIndexAnyASCII/1:32-4 270826176 4.502 ns/op BenchmarkLastIndexAnyASCII/1:32-4 269961992 4.563 ns/op BenchmarkLastIndexAnyASCII/1:32-4 260878806 4.571 ns/op BenchmarkLastIndexAnyASCII/1:32-4 263377936 4.450 ns/op BenchmarkLastIndexAnyASCII/1:32-4 270869833 4.494 ns/op BenchmarkLastIndexAnyASCII/1:32-4 265222924 4.472 ns/op BenchmarkLastIndexAnyASCII/1:32-4 268466862 4.456 ns/op BenchmarkLastIndexAnyASCII/1:64-4 268822406 4.493 ns/op BenchmarkLastIndexAnyASCII/1:64-4 271697233 4.509 ns/op BenchmarkLastIndexAnyASCII/1:64-4 267213145 4.467 ns/op BenchmarkLastIndexAnyASCII/1:64-4 274278036 4.475 ns/op BenchmarkLastIndexAnyASCII/1:64-4 262059229 4.568 ns/op BenchmarkLastIndexAnyASCII/1:64-4 263424800 4.528 ns/op BenchmarkLastIndexAnyASCII/1:64-4 262252725 4.546 ns/op BenchmarkLastIndexAnyASCII/1:64-4 263646897 4.515 ns/op BenchmarkLastIndexAnyASCII/1:64-4 264911106 4.491 ns/op BenchmarkLastIndexAnyASCII/1:64-4 265708366 4.553 ns/op BenchmarkLastIndexAnyASCII/16:1-4 91933191 13.15 ns/op BenchmarkLastIndexAnyASCII/16:1-4 92301955 13.13 ns/op BenchmarkLastIndexAnyASCII/16:1-4 90071527 13.20 ns/op BenchmarkLastIndexAnyASCII/16:1-4 91626315 13.14 ns/op BenchmarkLastIndexAnyASCII/16:1-4 91229569 13.15 ns/op BenchmarkLastIndexAnyASCII/16:1-4 91412272 12.97 ns/op BenchmarkLastIndexAnyASCII/16:1-4 90755548 13.07 ns/op BenchmarkLastIndexAnyASCII/16:1-4 92929526 13.10 ns/op BenchmarkLastIndexAnyASCII/16:1-4 88544672 13.01 ns/op BenchmarkLastIndexAnyASCII/16:1-4 92246056 13.04 ns/op BenchmarkLastIndexAnyASCII/16:2-4 88155001 13.30 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89633403 13.37 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89086052 13.33 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89127969 13.34 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89348343 13.38 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89385008 13.39 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89206774 13.38 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89441344 13.35 ns/op BenchmarkLastIndexAnyASCII/16:2-4 89297998 13.41 ns/op BenchmarkLastIndexAnyASCII/16:2-4 86887357 13.50 ns/op BenchmarkLastIndexAnyASCII/16:4-4 75890320 15.45 ns/op BenchmarkLastIndexAnyASCII/16:4-4 78923565 15.32 ns/op BenchmarkLastIndexAnyASCII/16:4-4 80290538 15.22 ns/op BenchmarkLastIndexAnyASCII/16:4-4 77543272 15.42 ns/op BenchmarkLastIndexAnyASCII/16:4-4 77518011 15.33 ns/op BenchmarkLastIndexAnyASCII/16:4-4 77063534 15.36 ns/op BenchmarkLastIndexAnyASCII/16:4-4 78675740 15.37 ns/op BenchmarkLastIndexAnyASCII/16:4-4 79277941 15.22 ns/op BenchmarkLastIndexAnyASCII/16:4-4 78181513 15.47 ns/op BenchmarkLastIndexAnyASCII/16:4-4 77242608 15.53 ns/op BenchmarkLastIndexAnyASCII/16:8-4 56537568 20.60 ns/op BenchmarkLastIndexAnyASCII/16:8-4 57374200 20.49 ns/op BenchmarkLastIndexAnyASCII/16:8-4 57975372 20.37 ns/op BenchmarkLastIndexAnyASCII/16:8-4 57919580 20.66 ns/op BenchmarkLastIndexAnyASCII/16:8-4 58655845 20.34 ns/op BenchmarkLastIndexAnyASCII/16:8-4 59302846 20.38 ns/op BenchmarkLastIndexAnyASCII/16:8-4 57208442 20.37 ns/op BenchmarkLastIndexAnyASCII/16:8-4 59120079 20.40 ns/op BenchmarkLastIndexAnyASCII/16:8-4 58060617 20.44 ns/op BenchmarkLastIndexAnyASCII/16:8-4 58772238 20.41 ns/op BenchmarkLastIndexAnyASCII/16:16-4 49448884 24.22 ns/op BenchmarkLastIndexAnyASCII/16:16-4 48820456 24.51 ns/op BenchmarkLastIndexAnyASCII/16:16-4 48783118 24.38 ns/op BenchmarkLastIndexAnyASCII/16:16-4 48974881 24.31 ns/op BenchmarkLastIndexAnyASCII/16:16-4 49295498 24.39 ns/op BenchmarkLastIndexAnyASCII/16:16-4 49285996 24.47 ns/op BenchmarkLastIndexAnyASCII/16:16-4 48771622 24.66 ns/op BenchmarkLastIndexAnyASCII/16:16-4 47860074 24.50 ns/op BenchmarkLastIndexAnyASCII/16:16-4 49620894 24.41 ns/op BenchmarkLastIndexAnyASCII/16:16-4 49344003 24.50 ns/op BenchmarkLastIndexAnyASCII/16:32-4 25896019 46.10 ns/op BenchmarkLastIndexAnyASCII/16:32-4 25751218 45.90 ns/op BenchmarkLastIndexAnyASCII/16:32-4 25917885 45.42 ns/op BenchmarkLastIndexAnyASCII/16:32-4 26103880 46.03 ns/op BenchmarkLastIndexAnyASCII/16:32-4 26126647 45.94 ns/op BenchmarkLastIndexAnyASCII/16:32-4 26129257 45.94 ns/op BenchmarkLastIndexAnyASCII/16:32-4 26302148 45.58 ns/op BenchmarkLastIndexAnyASCII/16:32-4 26068106 45.82 ns/op BenchmarkLastIndexAnyASCII/16:32-4 26153901 45.90 ns/op BenchmarkLastIndexAnyASCII/16:32-4 26168791 46.13 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13564160 88.53 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13568840 88.47 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13575649 88.64 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13470190 88.06 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13589130 88.18 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13569013 87.61 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13593512 88.36 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13564890 88.27 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13622253 88.03 ns/op BenchmarkLastIndexAnyASCII/16:64-4 13642729 88.27 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7841648 152.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7837597 152.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7850312 153.4 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7797282 152.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7832030 152.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7847617 152.6 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7879830 152.3 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7866832 152.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7839738 151.4 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7920909 152.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7532955 153.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7404766 152.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7337258 155.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7789177 154.5 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7701552 154.1 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7215813 155.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7693532 155.1 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7682523 156.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7768219 155.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7717861 155.3 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7679978 156.7 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7695535 155.3 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7687887 155.6 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7722313 155.3 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7717054 155.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7727736 154.5 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7794484 155.6 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7580164 157.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7610149 157.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7598571 158.0 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7510842 158.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7662195 156.9 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7719403 159.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7541264 159.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7524854 159.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7492078 159.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7532875 160.2 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7448439 159.2 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7538166 157.4 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7628779 157.9 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7347200 163.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7296368 163.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7356459 162.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7371188 161.6 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7404015 163.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7297778 162.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7355145 162.1 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7381022 161.9 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7373940 163.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7331408 162.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6448365 186.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6442082 187.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6421904 187.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6419509 185.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6470324 185.7 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6437676 186.7 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6461018 185.6 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6442804 185.7 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6486925 186.2 ns/op BenchmarkLastIndexAnyASCII/256:32-4 6370308 187.0 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5328208 225.2 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5323486 225.8 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5305586 226.3 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5312437 225.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5315833 225.8 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5326862 225.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5313400 225.7 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5322169 224.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5330655 224.8 ns/op BenchmarkLastIndexAnyASCII/256:64-4 5352918 224.8 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 304864486 3.940 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 298132162 3.939 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 307280301 4.012 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 305468877 3.920 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 305920872 4.006 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 300220525 3.968 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 300657790 4.002 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 301612254 3.998 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 301445704 3.982 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 300017665 3.975 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 303124665 3.977 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 309605308 3.885 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 301330951 3.904 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 305555530 3.936 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 306580747 3.915 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 301218511 3.995 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 299976927 3.996 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 296329868 3.973 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 301716046 4.017 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 294751377 4.037 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 300776016 4.064 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 295578932 4.054 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 297652560 3.999 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 302198379 4.017 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 300311712 4.014 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 301773049 3.938 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 301273911 3.916 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 305926279 3.967 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 294235000 3.945 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 305395484 3.905 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 307907683 3.920 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 305817159 3.932 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 303950161 3.928 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 306906559 3.946 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 305426790 3.903 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 304373851 3.898 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 307466493 3.910 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 304776997 3.926 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 307034089 3.946 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 304891472 3.941 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 294275866 4.106 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 292019078 4.064 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 295041912 4.058 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 291278487 4.058 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 295797232 4.124 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 289672210 4.070 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 292926852 4.081 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 294909324 4.068 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 294551422 4.044 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 295448026 4.105 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 270928047 4.422 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 268058691 4.444 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 271191738 4.487 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 268543059 4.432 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 270369454 4.422 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 273796747 4.408 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 267400221 4.409 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 268998798 4.409 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 270809694 4.454 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 270044032 4.433 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 271243644 4.289 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 272413402 4.327 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 271986141 4.260 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 270289390 4.330 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 271853953 4.433 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 267967906 4.386 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 272070958 4.284 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 270976786 4.302 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 269279880 4.303 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 274878380 4.443 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 46421264 27.11 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 43050794 27.37 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 45714568 26.39 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 45686640 26.80 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 46286622 27.25 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 47307187 26.91 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 47651146 26.96 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 46491064 26.52 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 44505030 26.76 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 44500214 26.88 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18366055 64.87 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18176722 64.88 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18496644 64.78 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18898980 64.80 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18518716 64.41 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18217440 64.57 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18430250 64.56 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18414434 65.35 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18572431 65.41 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 18508950 65.30 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18722175 65.18 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18581622 64.64 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18634398 65.19 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18608209 65.03 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18895233 64.57 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18607077 65.14 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18641008 65.54 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18671343 64.90 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18656550 64.72 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 18700087 64.46 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18687366 64.97 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18655174 64.64 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18469705 64.86 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18434697 64.73 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18663871 64.46 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18751050 64.53 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18874586 64.77 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18654544 64.67 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18747842 64.37 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 18361570 64.35 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17796507 69.16 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17201768 68.82 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17614282 68.73 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17658405 68.92 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17371845 68.95 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17575470 68.69 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17459930 68.86 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17203929 69.17 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17336611 69.42 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 17183418 69.38 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15876848 75.43 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15761816 75.91 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15750864 75.85 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15835665 75.38 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15884731 75.92 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15783416 75.83 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15682646 75.70 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15735006 75.49 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15870349 75.41 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 15997168 75.35 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 15946453 74.10 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16456092 73.43 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16551074 73.12 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16776868 73.14 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16213212 73.12 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16359230 73.02 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16573326 72.91 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16286893 72.52 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16481683 73.04 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 16352833 73.25 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3171232 383.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3109518 380.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3083013 379.9 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3118711 382.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3121496 380.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3102895 381.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3143236 381.9 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3203874 382.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3130585 381.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 3133689 381.7 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1091 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1085 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1090 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1098 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1092 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1089 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1101 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1088 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1087 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 1000000 1093 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1096 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1095 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1091 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1091 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1089 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1095 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1090 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1087 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1088 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 1000000 1085 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1091 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1082 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1086 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1086 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1085 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1090 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1090 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1084 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1092 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 1000000 1090 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1098 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1094 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1106 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1093 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1093 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1078 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1092 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1092 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1096 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 1000000 1100 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 995578 1172 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1164 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1168 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1175 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1172 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1169 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1170 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1168 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1124 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1134 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1127 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1132 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1139 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1146 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1152 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1153 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1147 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 1000000 1179 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 181555 6658 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 179178 6656 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 178315 6677 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 179610 6678 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 181794 6649 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 180487 6627 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 181005 6586 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 183584 6574 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 181586 6548 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 180987 6560 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 181957 6563 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 183164 6609 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 181597 6530 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 183218 6490 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 184330 6557 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 181485 6619 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 179312 6595 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 179550 6643 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 182432 6586 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 182514 6596 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18384 64928 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18433 65120 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18225 65216 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18386 65113 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18446 65322 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18415 64955 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18238 65381 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18330 65368 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18522 64953 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 18364 65161 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36759 32733 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36344 32961 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36608 32662 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36436 32762 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36830 32445 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36673 32777 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36753 32967 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36637 32718 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 36463 33092 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 35887 32897 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 71510 16325 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 73072 16342 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 73190 16352 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 73618 16378 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 73314 16421 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 73396 16448 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 72967 16408 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 73545 16434 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 72852 16566 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 72289 16525 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 134043 8869 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 134911 8936 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 134355 8934 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 131595 8899 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 135823 8838 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 134949 8905 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 135602 8819 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 134406 8830 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 133287 8907 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 136094 8914 ns/op BenchmarkIndexByte_Bytes/10-4 418040704 2.924 ns/op 3420.29 MB/s BenchmarkIndexByte_Bytes/10-4 414025584 2.879 ns/op 3473.19 MB/s BenchmarkIndexByte_Bytes/10-4 422509503 2.846 ns/op 3514.28 MB/s BenchmarkIndexByte_Bytes/10-4 422339523 2.890 ns/op 3460.44 MB/s BenchmarkIndexByte_Bytes/10-4 422826595 2.882 ns/op 3469.51 MB/s BenchmarkIndexByte_Bytes/10-4 419618208 2.833 ns/op 3529.32 MB/s BenchmarkIndexByte_Bytes/10-4 416644021 2.833 ns/op 3530.42 MB/s BenchmarkIndexByte_Bytes/10-4 417897789 2.895 ns/op 3453.72 MB/s BenchmarkIndexByte_Bytes/10-4 427989423 2.796 ns/op 3576.64 MB/s BenchmarkIndexByte_Bytes/10-4 422315816 2.851 ns/op 3507.77 MB/s BenchmarkIndexByte_Bytes/32-4 352413164 3.855 ns/op 8300.39 MB/s BenchmarkIndexByte_Bytes/32-4 352065795 3.398 ns/op 9417.05 MB/s BenchmarkIndexByte_Bytes/32-4 349957298 3.393 ns/op 9431.58 MB/s BenchmarkIndexByte_Bytes/32-4 356260590 3.401 ns/op 9408.26 MB/s BenchmarkIndexByte_Bytes/32-4 343066803 3.427 ns/op 9337.97 MB/s BenchmarkIndexByte_Bytes/32-4 346530116 3.463 ns/op 9240.72 MB/s BenchmarkIndexByte_Bytes/32-4 353135506 3.914 ns/op 8176.72 MB/s BenchmarkIndexByte_Bytes/32-4 346900456 3.428 ns/op 9333.71 MB/s BenchmarkIndexByte_Bytes/32-4 353981617 3.415 ns/op 9370.89 MB/s BenchmarkIndexByte_Bytes/32-4 353885715 3.376 ns/op 9478.54 MB/s BenchmarkIndexByte_Bytes/4K-4 19415484 60.82 ns/op 67349.51 MB/s BenchmarkIndexByte_Bytes/4K-4 20080586 60.19 ns/op 68049.26 MB/s BenchmarkIndexByte_Bytes/4K-4 19732370 60.83 ns/op 67335.34 MB/s BenchmarkIndexByte_Bytes/4K-4 19933006 59.71 ns/op 68602.49 MB/s BenchmarkIndexByte_Bytes/4K-4 19911212 59.96 ns/op 68316.72 MB/s BenchmarkIndexByte_Bytes/4K-4 19493006 60.28 ns/op 67944.15 MB/s BenchmarkIndexByte_Bytes/4K-4 20267787 60.54 ns/op 67653.08 MB/s BenchmarkIndexByte_Bytes/4K-4 19849533 60.53 ns/op 67667.31 MB/s BenchmarkIndexByte_Bytes/4K-4 20077830 61.39 ns/op 66716.35 MB/s BenchmarkIndexByte_Bytes/4K-4 19464200 61.38 ns/op 66731.80 MB/s BenchmarkIndexByte_Bytes/4M-4 9301 118933 ns/op 35266.17 MB/s BenchmarkIndexByte_Bytes/4M-4 8853 118784 ns/op 35310.36 MB/s BenchmarkIndexByte_Bytes/4M-4 9278 118802 ns/op 35304.90 MB/s BenchmarkIndexByte_Bytes/4M-4 9255 125515 ns/op 33416.81 MB/s BenchmarkIndexByte_Bytes/4M-4 8725 125130 ns/op 33519.68 MB/s BenchmarkIndexByte_Bytes/4M-4 9037 118889 ns/op 35279.15 MB/s BenchmarkIndexByte_Bytes/4M-4 9213 118364 ns/op 35435.58 MB/s BenchmarkIndexByte_Bytes/4M-4 8778 118775 ns/op 35313.01 MB/s BenchmarkIndexByte_Bytes/4M-4 8841 118748 ns/op 35320.99 MB/s BenchmarkIndexByte_Bytes/4M-4 8814 125430 ns/op 33439.36 MB/s BenchmarkIndexByte_Bytes/64M-4 183 5756694 ns/op 11657.54 MB/s BenchmarkIndexByte_Bytes/64M-4 200 6056341 ns/op 11080.76 MB/s BenchmarkIndexByte_Bytes/64M-4 190 6218449 ns/op 10791.90 MB/s BenchmarkIndexByte_Bytes/64M-4 204 6080394 ns/op 11036.93 MB/s BenchmarkIndexByte_Bytes/64M-4 196 5956325 ns/op 11266.82 MB/s BenchmarkIndexByte_Bytes/64M-4 193 6096387 ns/op 11007.97 MB/s BenchmarkIndexByte_Bytes/64M-4 200 5763512 ns/op 11643.74 MB/s BenchmarkIndexByte_Bytes/64M-4 194 5737902 ns/op 11695.71 MB/s BenchmarkIndexByte_Bytes/64M-4 204 5340163 ns/op 12566.82 MB/s BenchmarkIndexByte_Bytes/64M-4 207 5579533 ns/op 12027.68 MB/s BenchmarkIndexRune_Bytes/10-4 88960768 13.52 ns/op 739.63 MB/s BenchmarkIndexRune_Bytes/10-4 87237007 13.40 ns/op 746.14 MB/s BenchmarkIndexRune_Bytes/10-4 90540555 13.44 ns/op 744.17 MB/s BenchmarkIndexRune_Bytes/10-4 89587959 13.37 ns/op 747.78 MB/s BenchmarkIndexRune_Bytes/10-4 91194424 13.33 ns/op 750.13 MB/s BenchmarkIndexRune_Bytes/10-4 91082782 13.36 ns/op 748.54 MB/s BenchmarkIndexRune_Bytes/10-4 90999738 13.47 ns/op 742.60 MB/s BenchmarkIndexRune_Bytes/10-4 90321908 13.34 ns/op 749.88 MB/s BenchmarkIndexRune_Bytes/10-4 91764614 13.49 ns/op 741.03 MB/s BenchmarkIndexRune_Bytes/10-4 90177823 13.42 ns/op 745.15 MB/s BenchmarkIndexRune_Bytes/32-4 96168740 12.52 ns/op 2555.17 MB/s BenchmarkIndexRune_Bytes/32-4 91624112 12.54 ns/op 2552.16 MB/s BenchmarkIndexRune_Bytes/32-4 95226055 12.49 ns/op 2561.52 MB/s BenchmarkIndexRune_Bytes/32-4 95437042 12.45 ns/op 2569.97 MB/s BenchmarkIndexRune_Bytes/32-4 96188906 12.47 ns/op 2566.97 MB/s BenchmarkIndexRune_Bytes/32-4 95555398 12.47 ns/op 2566.13 MB/s BenchmarkIndexRune_Bytes/32-4 95933352 12.48 ns/op 2564.60 MB/s BenchmarkIndexRune_Bytes/32-4 94639321 12.68 ns/op 2522.81 MB/s BenchmarkIndexRune_Bytes/32-4 94852212 12.54 ns/op 2551.27 MB/s BenchmarkIndexRune_Bytes/32-4 97097606 12.68 ns/op 2522.87 MB/s BenchmarkIndexRune_Bytes/4K-4 16062399 74.00 ns/op 55349.04 MB/s BenchmarkIndexRune_Bytes/4K-4 15849020 72.64 ns/op 56385.68 MB/s BenchmarkIndexRune_Bytes/4K-4 15706916 72.98 ns/op 56123.11 MB/s BenchmarkIndexRune_Bytes/4K-4 16111741 72.69 ns/op 56348.56 MB/s BenchmarkIndexRune_Bytes/4K-4 15805790 73.01 ns/op 56102.51 MB/s BenchmarkIndexRune_Bytes/4K-4 16522185 75.25 ns/op 54430.06 MB/s BenchmarkIndexRune_Bytes/4K-4 15988674 73.24 ns/op 55925.06 MB/s BenchmarkIndexRune_Bytes/4K-4 16582246 75.49 ns/op 54255.87 MB/s BenchmarkIndexRune_Bytes/4K-4 16608152 73.13 ns/op 56008.79 MB/s BenchmarkIndexRune_Bytes/4K-4 15917522 75.81 ns/op 54031.35 MB/s BenchmarkIndexRune_Bytes/4M-4 8464 128404 ns/op 32664.88 MB/s BenchmarkIndexRune_Bytes/4M-4 8793 132338 ns/op 31693.96 MB/s BenchmarkIndexRune_Bytes/4M-4 8608 132054 ns/op 31762.11 MB/s BenchmarkIndexRune_Bytes/4M-4 8448 128138 ns/op 32732.70 MB/s BenchmarkIndexRune_Bytes/4M-4 8620 131520 ns/op 31891.01 MB/s BenchmarkIndexRune_Bytes/4M-4 8500 125923 ns/op 33308.45 MB/s BenchmarkIndexRune_Bytes/4M-4 8730 130631 ns/op 32108.01 MB/s BenchmarkIndexRune_Bytes/4M-4 8638 130749 ns/op 32078.95 MB/s BenchmarkIndexRune_Bytes/4M-4 8679 125918 ns/op 33309.73 MB/s BenchmarkIndexRune_Bytes/4M-4 8529 131232 ns/op 31960.88 MB/s BenchmarkIndexRune_Bytes/64M-4 183 6263152 ns/op 10714.87 MB/s BenchmarkIndexRune_Bytes/64M-4 181 6296237 ns/op 10658.57 MB/s BenchmarkIndexRune_Bytes/64M-4 180 6300230 ns/op 10651.81 MB/s BenchmarkIndexRune_Bytes/64M-4 192 6234397 ns/op 10764.29 MB/s BenchmarkIndexRune_Bytes/64M-4 188 6186059 ns/op 10848.40 MB/s BenchmarkIndexRune_Bytes/64M-4 188 6305526 ns/op 10642.87 MB/s BenchmarkIndexRune_Bytes/64M-4 184 6421353 ns/op 10450.89 MB/s BenchmarkIndexRune_Bytes/64M-4 181 6320137 ns/op 10618.26 MB/s BenchmarkIndexRune_Bytes/64M-4 189 6292192 ns/op 10665.42 MB/s BenchmarkIndexRune_Bytes/64M-4 183 6353609 ns/op 10562.32 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 395426502 3.102 ns/op 3223.69 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 385172726 3.092 ns/op 3234.51 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 384336756 3.047 ns/op 3281.53 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 387971332 3.154 ns/op 3170.25 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 382539704 3.081 ns/op 3245.90 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 381732502 3.063 ns/op 3265.30 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 397159488 3.077 ns/op 3249.88 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 393518539 3.076 ns/op 3250.99 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 392842790 3.113 ns/op 3212.15 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 394120153 3.094 ns/op 3231.98 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 302166918 3.830 ns/op 8354.28 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 307686076 4.150 ns/op 7710.61 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 312367543 4.456 ns/op 7181.51 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 315255229 4.212 ns/op 7596.64 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 310884272 4.121 ns/op 7764.85 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 314572354 3.932 ns/op 8139.22 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 303755618 4.365 ns/op 7330.92 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 300716166 3.818 ns/op 8380.45 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 302130896 3.979 ns/op 8042.47 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 293768257 3.965 ns/op 8070.30 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19631967 60.36 ns/op 67853.91 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19177605 61.96 ns/op 66108.79 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19379580 61.09 ns/op 67045.76 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19742971 60.71 ns/op 67468.00 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19161819 61.83 ns/op 66250.81 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19385629 61.05 ns/op 67097.60 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19510441 60.93 ns/op 67221.74 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19096447 61.92 ns/op 66145.94 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 18914914 61.48 ns/op 66624.62 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 19466989 61.45 ns/op 66652.50 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9193 125813 ns/op 33337.69 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8769 125559 ns/op 33405.13 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8779 119666 ns/op 35050.20 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9240 125771 ns/op 33348.73 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8805 119725 ns/op 35032.77 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9273 125593 ns/op 33396.08 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9225 125580 ns/op 33399.38 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9134 125780 ns/op 33346.34 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9141 125946 ns/op 33302.34 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9324 125683 ns/op 33371.99 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 184 6127727 ns/op 10951.67 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 205 5790641 ns/op 11589.19 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 199 6022406 ns/op 11143.20 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 186 6094029 ns/op 11012.23 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 200 6033073 ns/op 11123.50 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 200 5999232 ns/op 11186.24 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 208 5851760 ns/op 11468.15 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 196 5827573 ns/op 11515.75 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 201 5995878 ns/op 11192.50 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 198 5711651 ns/op 11749.47 MB/s BenchmarkIndexNonASCII_Bytes/10-4 228712656 5.353 ns/op 1868.23 MB/s BenchmarkIndexNonASCII_Bytes/10-4 229168770 5.218 ns/op 1916.38 MB/s BenchmarkIndexNonASCII_Bytes/10-4 234157359 5.241 ns/op 1908.01 MB/s BenchmarkIndexNonASCII_Bytes/10-4 242518917 5.127 ns/op 1950.60 MB/s BenchmarkIndexNonASCII_Bytes/10-4 238474202 5.369 ns/op 1862.51 MB/s BenchmarkIndexNonASCII_Bytes/10-4 225133825 4.669 ns/op 2141.93 MB/s BenchmarkIndexNonASCII_Bytes/10-4 231438352 4.779 ns/op 2092.65 MB/s BenchmarkIndexNonASCII_Bytes/10-4 257582688 4.959 ns/op 2016.51 MB/s BenchmarkIndexNonASCII_Bytes/10-4 237128852 5.150 ns/op 1941.80 MB/s BenchmarkIndexNonASCII_Bytes/10-4 242991541 5.316 ns/op 1881.21 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.40 ns/op 3077.75 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.65 ns/op 3003.43 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.58 ns/op 3025.23 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.55 ns/op 3034.42 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.79 ns/op 2965.62 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 11.44 ns/op 2796.87 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 13.31 ns/op 2403.91 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 11.58 ns/op 2763.55 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.51 ns/op 3045.10 MB/s BenchmarkIndexNonASCII_Bytes/32-4 100000000 10.69 ns/op 2992.82 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1172 ns/op 3495.54 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1177 ns/op 3481.22 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1173 ns/op 3490.97 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1170 ns/op 3499.63 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1180 ns/op 3472.62 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1171 ns/op 3499.08 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1175 ns/op 3484.88 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1163 ns/op 3523.06 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1170 ns/op 3500.19 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 1000000 1161 ns/op 3526.98 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1014 1192077 ns/op 3518.48 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 999 1196612 ns/op 3505.15 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1000 1193807 ns/op 3513.39 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 997 1189719 ns/op 3525.46 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1002 1188642 ns/op 3528.65 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1002 1183151 ns/op 3545.03 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1000 1192253 ns/op 3517.96 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1004 1180928 ns/op 3551.70 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1008 1183580 ns/op 3543.74 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 1021 1177740 ns/op 3561.32 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 58 19733059 ns/op 3400.83 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 60 19763927 ns/op 3395.52 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 60 19881719 ns/op 3375.41 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 60 19870558 ns/op 3377.30 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 58 19849514 ns/op 3380.88 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 60 19858914 ns/op 3379.28 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 60 19895685 ns/op 3373.04 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 58 20014326 ns/op 3353.04 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 58 19873225 ns/op 3376.85 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 60 19840103 ns/op 3382.49 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 1990.237s strcase-0.0.5/internal/benchtest/results/Platinum-8488C/strcase.1706567875.txt 0000664 0000000 0000000 00000276610 14720254634 0026313 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Xeon(R) Platinum 8488C BenchmarkIndexRune-4 100000000 11.37 ns/op BenchmarkIndexRune-4 100000000 11.57 ns/op BenchmarkIndexRune-4 100000000 11.47 ns/op BenchmarkIndexRune-4 100000000 11.33 ns/op BenchmarkIndexRune-4 100000000 11.56 ns/op BenchmarkIndexRune-4 100000000 11.38 ns/op BenchmarkIndexRune-4 98452668 11.37 ns/op BenchmarkIndexRune-4 100000000 11.44 ns/op BenchmarkIndexRune-4 100000000 11.50 ns/op BenchmarkIndexRune-4 100000000 11.54 ns/op BenchmarkIndexRuneLongString-4 85588824 13.93 ns/op BenchmarkIndexRuneLongString-4 85707183 14.05 ns/op BenchmarkIndexRuneLongString-4 83889338 14.04 ns/op BenchmarkIndexRuneLongString-4 85698192 14.14 ns/op BenchmarkIndexRuneLongString-4 85898284 13.98 ns/op BenchmarkIndexRuneLongString-4 87142267 14.05 ns/op BenchmarkIndexRuneLongString-4 86390674 14.30 ns/op BenchmarkIndexRuneLongString-4 84005275 13.86 ns/op BenchmarkIndexRuneLongString-4 83348694 13.76 ns/op BenchmarkIndexRuneLongString-4 87766915 13.94 ns/op BenchmarkIndexRuneFastPath-4 236117904 5.109 ns/op BenchmarkIndexRuneFastPath-4 234566484 5.104 ns/op BenchmarkIndexRuneFastPath-4 232287385 5.080 ns/op BenchmarkIndexRuneFastPath-4 235979314 5.073 ns/op BenchmarkIndexRuneFastPath-4 233388974 5.136 ns/op BenchmarkIndexRuneFastPath-4 236583349 5.337 ns/op BenchmarkIndexRuneFastPath-4 235444742 5.118 ns/op BenchmarkIndexRuneFastPath-4 233712034 5.121 ns/op BenchmarkIndexRuneFastPath-4 235769158 5.095 ns/op BenchmarkIndexRuneFastPath-4 235083033 5.304 ns/op BenchmarkIndex-4 229788811 5.350 ns/op BenchmarkIndex-4 227504595 5.438 ns/op BenchmarkIndex-4 226030903 5.440 ns/op BenchmarkIndex-4 222607545 5.565 ns/op BenchmarkIndex-4 226733859 5.536 ns/op BenchmarkIndex-4 227707713 5.230 ns/op BenchmarkIndex-4 226098421 5.447 ns/op BenchmarkIndex-4 225520732 5.296 ns/op BenchmarkIndex-4 226262281 5.422 ns/op BenchmarkIndex-4 226345236 5.302 ns/op BenchmarkLastIndex-4 184703929 6.405 ns/op BenchmarkLastIndex-4 188363828 6.378 ns/op BenchmarkLastIndex-4 184611037 6.355 ns/op BenchmarkLastIndex-4 188369427 6.350 ns/op BenchmarkLastIndex-4 189828554 6.400 ns/op BenchmarkLastIndex-4 190816060 6.382 ns/op BenchmarkLastIndex-4 187095483 6.427 ns/op BenchmarkLastIndex-4 188510640 6.371 ns/op BenchmarkLastIndex-4 187569933 6.350 ns/op BenchmarkLastIndex-4 187899236 6.390 ns/op BenchmarkIndexByte-4 300167949 4.002 ns/op BenchmarkIndexByte-4 299012757 3.976 ns/op BenchmarkIndexByte-4 302986965 3.967 ns/op BenchmarkIndexByte-4 302114421 3.957 ns/op BenchmarkIndexByte-4 296320642 3.955 ns/op BenchmarkIndexByte-4 306993298 3.942 ns/op BenchmarkIndexByte-4 306003099 3.918 ns/op BenchmarkIndexByte-4 305867668 4.000 ns/op BenchmarkIndexByte-4 306027230 3.915 ns/op BenchmarkIndexByte-4 300105238 3.950 ns/op BenchmarkEqualFold/ASCII-4 130356086 9.181 ns/op BenchmarkEqualFold/ASCII-4 130820527 9.187 ns/op BenchmarkEqualFold/ASCII-4 132051805 9.123 ns/op BenchmarkEqualFold/ASCII-4 130760374 9.152 ns/op BenchmarkEqualFold/ASCII-4 130439056 9.223 ns/op BenchmarkEqualFold/ASCII-4 130483491 9.167 ns/op BenchmarkEqualFold/ASCII-4 131171076 9.138 ns/op BenchmarkEqualFold/ASCII-4 130957675 9.175 ns/op BenchmarkEqualFold/ASCII-4 131236052 9.198 ns/op BenchmarkEqualFold/ASCII-4 129818514 9.222 ns/op BenchmarkEqualFold/UnicodePrefix-4 34551746 34.47 ns/op BenchmarkEqualFold/UnicodePrefix-4 35035840 34.52 ns/op BenchmarkEqualFold/UnicodePrefix-4 34318836 34.50 ns/op BenchmarkEqualFold/UnicodePrefix-4 35094585 34.53 ns/op BenchmarkEqualFold/UnicodePrefix-4 35001838 34.42 ns/op BenchmarkEqualFold/UnicodePrefix-4 35165132 34.24 ns/op BenchmarkEqualFold/UnicodePrefix-4 34972717 34.22 ns/op BenchmarkEqualFold/UnicodePrefix-4 34959264 34.13 ns/op BenchmarkEqualFold/UnicodePrefix-4 34430282 34.20 ns/op BenchmarkEqualFold/UnicodePrefix-4 34572399 34.19 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47661100 25.00 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47861338 24.92 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47247520 25.04 ns/op BenchmarkEqualFold/UnicodeSuffix-4 48152421 24.99 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47504884 25.11 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47527801 25.19 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47421555 25.23 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47547942 25.09 ns/op BenchmarkEqualFold/UnicodeSuffix-4 48149179 25.02 ns/op BenchmarkEqualFold/UnicodeSuffix-4 47730544 25.07 ns/op BenchmarkIndexHard1-4 10000 103843 ns/op BenchmarkIndexHard1-4 10000 103638 ns/op BenchmarkIndexHard1-4 10000 103704 ns/op BenchmarkIndexHard1-4 10000 103733 ns/op BenchmarkIndexHard1-4 10000 103681 ns/op BenchmarkIndexHard1-4 10000 102937 ns/op BenchmarkIndexHard1-4 10000 102845 ns/op BenchmarkIndexHard1-4 10000 102956 ns/op BenchmarkIndexHard1-4 10000 102671 ns/op BenchmarkIndexHard1-4 10000 102953 ns/op BenchmarkIndexHard2-4 440 2699707 ns/op BenchmarkIndexHard2-4 441 2698238 ns/op BenchmarkIndexHard2-4 436 2708286 ns/op BenchmarkIndexHard2-4 438 2711799 ns/op BenchmarkIndexHard2-4 435 2723094 ns/op BenchmarkIndexHard2-4 441 2712298 ns/op BenchmarkIndexHard2-4 434 2731211 ns/op BenchmarkIndexHard2-4 435 2729546 ns/op BenchmarkIndexHard2-4 435 2734782 ns/op BenchmarkIndexHard2-4 432 2727523 ns/op BenchmarkIndexHard3-4 462 2560535 ns/op BenchmarkIndexHard3-4 465 2553922 ns/op BenchmarkIndexHard3-4 465 2551166 ns/op BenchmarkIndexHard3-4 469 2568451 ns/op BenchmarkIndexHard3-4 462 2543225 ns/op BenchmarkIndexHard3-4 470 2539214 ns/op BenchmarkIndexHard3-4 463 2540343 ns/op BenchmarkIndexHard3-4 465 2555256 ns/op BenchmarkIndexHard3-4 471 2528320 ns/op BenchmarkIndexHard3-4 469 2537138 ns/op BenchmarkIndexHard4-4 822 1453645 ns/op BenchmarkIndexHard4-4 812 1457291 ns/op BenchmarkIndexHard4-4 813 1456442 ns/op BenchmarkIndexHard4-4 814 1462863 ns/op BenchmarkIndexHard4-4 811 1459990 ns/op BenchmarkIndexHard4-4 811 1467037 ns/op BenchmarkIndexHard4-4 808 1467136 ns/op BenchmarkIndexHard4-4 808 1474197 ns/op BenchmarkIndexHard4-4 805 1469803 ns/op BenchmarkIndexHard4-4 804 1472208 ns/op BenchmarkLastIndexHard1-4 802 1471011 ns/op BenchmarkLastIndexHard1-4 799 1472949 ns/op BenchmarkLastIndexHard1-4 795 1472790 ns/op BenchmarkLastIndexHard1-4 801 1465614 ns/op BenchmarkLastIndexHard1-4 804 1464291 ns/op BenchmarkLastIndexHard1-4 800 1469227 ns/op BenchmarkLastIndexHard1-4 801 1469726 ns/op BenchmarkLastIndexHard1-4 796 1464578 ns/op BenchmarkLastIndexHard1-4 804 1467155 ns/op BenchmarkLastIndexHard1-4 804 1454641 ns/op BenchmarkLastIndexHard2-4 807 1473485 ns/op BenchmarkLastIndexHard2-4 812 1469495 ns/op BenchmarkLastIndexHard2-4 799 1460005 ns/op BenchmarkLastIndexHard2-4 801 1464879 ns/op BenchmarkLastIndexHard2-4 799 1468244 ns/op BenchmarkLastIndexHard2-4 800 1469238 ns/op BenchmarkLastIndexHard2-4 800 1472283 ns/op BenchmarkLastIndexHard2-4 794 1479698 ns/op BenchmarkLastIndexHard2-4 790 1486079 ns/op BenchmarkLastIndexHard2-4 789 1489074 ns/op BenchmarkLastIndexHard3-4 789 1484325 ns/op BenchmarkLastIndexHard3-4 796 1475460 ns/op BenchmarkLastIndexHard3-4 798 1472916 ns/op BenchmarkLastIndexHard3-4 808 1464580 ns/op BenchmarkLastIndexHard3-4 806 1474268 ns/op BenchmarkLastIndexHard3-4 802 1482066 ns/op BenchmarkLastIndexHard3-4 790 1478589 ns/op BenchmarkLastIndexHard3-4 800 1486940 ns/op BenchmarkLastIndexHard3-4 796 1489356 ns/op BenchmarkLastIndexHard3-4 799 1482031 ns/op BenchmarkCountHard1-4 10000 104814 ns/op BenchmarkCountHard1-4 10000 104333 ns/op BenchmarkCountHard1-4 10000 104419 ns/op BenchmarkCountHard1-4 10000 104633 ns/op BenchmarkCountHard1-4 10000 104424 ns/op BenchmarkCountHard1-4 10000 104941 ns/op BenchmarkCountHard1-4 10000 104612 ns/op BenchmarkCountHard1-4 10000 104970 ns/op BenchmarkCountHard1-4 10000 104996 ns/op BenchmarkCountHard1-4 10000 104536 ns/op BenchmarkCountHard2-4 432 2730203 ns/op BenchmarkCountHard2-4 435 2730101 ns/op BenchmarkCountHard2-4 433 2737212 ns/op BenchmarkCountHard2-4 435 2744713 ns/op BenchmarkCountHard2-4 430 2752013 ns/op BenchmarkCountHard2-4 427 2742305 ns/op BenchmarkCountHard2-4 433 2742209 ns/op BenchmarkCountHard2-4 433 2738475 ns/op BenchmarkCountHard2-4 430 2736724 ns/op BenchmarkCountHard2-4 434 2738307 ns/op BenchmarkCountHard3-4 463 2570966 ns/op BenchmarkCountHard3-4 460 2570349 ns/op BenchmarkCountHard3-4 464 2565612 ns/op BenchmarkCountHard3-4 462 2571420 ns/op BenchmarkCountHard3-4 459 2570054 ns/op BenchmarkCountHard3-4 460 2577029 ns/op BenchmarkCountHard3-4 463 2572621 ns/op BenchmarkCountHard3-4 462 2564881 ns/op BenchmarkCountHard3-4 460 2568354 ns/op BenchmarkCountHard3-4 462 2567129 ns/op BenchmarkIndexTorture-4 64480 18570 ns/op BenchmarkIndexTorture-4 65054 18347 ns/op BenchmarkIndexTorture-4 65449 18435 ns/op BenchmarkIndexTorture-4 65260 18395 ns/op BenchmarkIndexTorture-4 64899 18386 ns/op BenchmarkIndexTorture-4 65184 18400 ns/op BenchmarkIndexTorture-4 64965 18427 ns/op BenchmarkIndexTorture-4 65194 18406 ns/op BenchmarkIndexTorture-4 64063 18327 ns/op BenchmarkIndexTorture-4 65304 18378 ns/op BenchmarkCountTorture-4 59592 20103 ns/op BenchmarkCountTorture-4 59463 20155 ns/op BenchmarkCountTorture-4 59880 20006 ns/op BenchmarkCountTorture-4 60100 20053 ns/op BenchmarkCountTorture-4 60138 20206 ns/op BenchmarkCountTorture-4 59642 20097 ns/op BenchmarkCountTorture-4 59674 20066 ns/op BenchmarkCountTorture-4 59786 20028 ns/op BenchmarkCountTorture-4 59863 20013 ns/op BenchmarkCountTorture-4 60786 20184 ns/op BenchmarkCountTortureOverlapping-4 280 4171149 ns/op BenchmarkCountTortureOverlapping-4 283 4206185 ns/op BenchmarkCountTortureOverlapping-4 284 4177828 ns/op BenchmarkCountTortureOverlapping-4 282 4202330 ns/op BenchmarkCountTortureOverlapping-4 286 4183279 ns/op BenchmarkCountTortureOverlapping-4 286 4203368 ns/op BenchmarkCountTortureOverlapping-4 284 4156589 ns/op BenchmarkCountTortureOverlapping-4 285 4187806 ns/op BenchmarkCountTortureOverlapping-4 279 4177089 ns/op BenchmarkCountTortureOverlapping-4 280 4210823 ns/op BenchmarkCountByte/10-4 121831670 9.574 ns/op 1044.44 MB/s BenchmarkCountByte/10-4 122285775 9.557 ns/op 1046.34 MB/s BenchmarkCountByte/10-4 122972586 9.310 ns/op 1074.14 MB/s BenchmarkCountByte/10-4 123360202 9.436 ns/op 1059.79 MB/s BenchmarkCountByte/10-4 125263468 9.460 ns/op 1057.07 MB/s BenchmarkCountByte/10-4 124756447 9.566 ns/op 1045.35 MB/s BenchmarkCountByte/10-4 123429498 9.417 ns/op 1061.88 MB/s BenchmarkCountByte/10-4 123855526 9.422 ns/op 1061.34 MB/s BenchmarkCountByte/10-4 124683481 9.697 ns/op 1031.21 MB/s BenchmarkCountByte/10-4 124387825 9.517 ns/op 1050.80 MB/s BenchmarkCountByte/32-4 61003572 19.41 ns/op 1648.58 MB/s BenchmarkCountByte/32-4 64097266 20.17 ns/op 1586.44 MB/s BenchmarkCountByte/32-4 62277206 18.86 ns/op 1697.02 MB/s BenchmarkCountByte/32-4 60713041 18.79 ns/op 1703.29 MB/s BenchmarkCountByte/32-4 57753648 19.16 ns/op 1670.36 MB/s BenchmarkCountByte/32-4 63969904 18.97 ns/op 1687.26 MB/s BenchmarkCountByte/32-4 57133590 19.55 ns/op 1637.04 MB/s BenchmarkCountByte/32-4 59581137 19.32 ns/op 1656.37 MB/s BenchmarkCountByte/32-4 64062688 19.10 ns/op 1675.70 MB/s BenchmarkCountByte/32-4 56975635 18.98 ns/op 1685.96 MB/s BenchmarkCountByte/4K-4 611139 1780 ns/op 2301.71 MB/s BenchmarkCountByte/4K-4 626954 1840 ns/op 2225.88 MB/s BenchmarkCountByte/4K-4 713382 1815 ns/op 2257.08 MB/s BenchmarkCountByte/4K-4 677163 1728 ns/op 2370.44 MB/s BenchmarkCountByte/4K-4 681652 1793 ns/op 2284.98 MB/s BenchmarkCountByte/4K-4 585062 1769 ns/op 2315.61 MB/s BenchmarkCountByte/4K-4 667666 1836 ns/op 2231.30 MB/s BenchmarkCountByte/4K-4 660165 1807 ns/op 2267.14 MB/s BenchmarkCountByte/4K-4 679761 1848 ns/op 2216.79 MB/s BenchmarkCountByte/4K-4 599508 1856 ns/op 2207.25 MB/s BenchmarkCountByte/4M-4 708 1682737 ns/op 2492.55 MB/s BenchmarkCountByte/4M-4 710 1796992 ns/op 2334.07 MB/s BenchmarkCountByte/4M-4 669 1767277 ns/op 2373.31 MB/s BenchmarkCountByte/4M-4 633 1897599 ns/op 2210.32 MB/s BenchmarkCountByte/4M-4 753 1716070 ns/op 2444.13 MB/s BenchmarkCountByte/4M-4 626 1660002 ns/op 2526.69 MB/s BenchmarkCountByte/4M-4 668 1861787 ns/op 2252.84 MB/s BenchmarkCountByte/4M-4 669 1939182 ns/op 2162.92 MB/s BenchmarkCountByte/4M-4 618 1918275 ns/op 2186.50 MB/s BenchmarkCountByte/4M-4 681 1946640 ns/op 2154.64 MB/s BenchmarkCountByte/64M-4 49 23208071 ns/op 2891.62 MB/s BenchmarkCountByte/64M-4 49 23643169 ns/op 2838.40 MB/s BenchmarkCountByte/64M-4 49 23535452 ns/op 2851.39 MB/s BenchmarkCountByte/64M-4 50 23401789 ns/op 2867.68 MB/s BenchmarkCountByte/64M-4 49 23471244 ns/op 2859.19 MB/s BenchmarkCountByte/64M-4 49 23347179 ns/op 2874.39 MB/s BenchmarkCountByte/64M-4 48 23522071 ns/op 2853.02 MB/s BenchmarkCountByte/64M-4 49 23383963 ns/op 2869.87 MB/s BenchmarkCountByte/64M-4 49 23655915 ns/op 2836.87 MB/s BenchmarkCountByte/64M-4 49 23584460 ns/op 2845.47 MB/s BenchmarkIndexAnyASCII/1:1-4 226720408 5.367 ns/op BenchmarkIndexAnyASCII/1:1-4 225658285 5.363 ns/op BenchmarkIndexAnyASCII/1:1-4 225109626 5.328 ns/op BenchmarkIndexAnyASCII/1:1-4 224164341 5.341 ns/op BenchmarkIndexAnyASCII/1:1-4 225283957 5.326 ns/op BenchmarkIndexAnyASCII/1:1-4 224495738 5.361 ns/op BenchmarkIndexAnyASCII/1:1-4 223416112 5.298 ns/op BenchmarkIndexAnyASCII/1:1-4 225946701 5.372 ns/op BenchmarkIndexAnyASCII/1:1-4 224987844 5.325 ns/op BenchmarkIndexAnyASCII/1:1-4 225224188 5.300 ns/op BenchmarkIndexAnyASCII/1:2-4 167495052 7.167 ns/op BenchmarkIndexAnyASCII/1:2-4 167461641 7.132 ns/op BenchmarkIndexAnyASCII/1:2-4 167535283 7.135 ns/op BenchmarkIndexAnyASCII/1:2-4 168279969 7.159 ns/op BenchmarkIndexAnyASCII/1:2-4 167559428 7.129 ns/op BenchmarkIndexAnyASCII/1:2-4 166238510 7.116 ns/op BenchmarkIndexAnyASCII/1:2-4 167033630 7.163 ns/op BenchmarkIndexAnyASCII/1:2-4 166826658 7.067 ns/op BenchmarkIndexAnyASCII/1:2-4 169609372 7.127 ns/op BenchmarkIndexAnyASCII/1:2-4 167996893 7.187 ns/op BenchmarkIndexAnyASCII/1:4-4 167748184 7.114 ns/op BenchmarkIndexAnyASCII/1:4-4 167816587 7.163 ns/op BenchmarkIndexAnyASCII/1:4-4 167955258 7.266 ns/op BenchmarkIndexAnyASCII/1:4-4 167805000 7.153 ns/op BenchmarkIndexAnyASCII/1:4-4 168191110 7.124 ns/op BenchmarkIndexAnyASCII/1:4-4 166919900 7.185 ns/op BenchmarkIndexAnyASCII/1:4-4 168871383 7.179 ns/op BenchmarkIndexAnyASCII/1:4-4 168420292 7.113 ns/op BenchmarkIndexAnyASCII/1:4-4 168211270 7.160 ns/op BenchmarkIndexAnyASCII/1:4-4 167634441 7.122 ns/op BenchmarkIndexAnyASCII/1:8-4 168986578 7.145 ns/op BenchmarkIndexAnyASCII/1:8-4 169641428 7.059 ns/op BenchmarkIndexAnyASCII/1:8-4 168025130 7.138 ns/op BenchmarkIndexAnyASCII/1:8-4 167607300 7.146 ns/op BenchmarkIndexAnyASCII/1:8-4 169390203 7.152 ns/op BenchmarkIndexAnyASCII/1:8-4 168338146 7.175 ns/op BenchmarkIndexAnyASCII/1:8-4 167943610 7.144 ns/op BenchmarkIndexAnyASCII/1:8-4 167134064 7.160 ns/op BenchmarkIndexAnyASCII/1:8-4 167879410 7.169 ns/op BenchmarkIndexAnyASCII/1:8-4 167768577 7.203 ns/op BenchmarkIndexAnyASCII/1:16-4 171127635 6.844 ns/op BenchmarkIndexAnyASCII/1:16-4 177387409 6.868 ns/op BenchmarkIndexAnyASCII/1:16-4 174814128 6.909 ns/op BenchmarkIndexAnyASCII/1:16-4 175737709 6.910 ns/op BenchmarkIndexAnyASCII/1:16-4 174426664 6.867 ns/op BenchmarkIndexAnyASCII/1:16-4 176452506 6.901 ns/op BenchmarkIndexAnyASCII/1:16-4 173705829 6.876 ns/op BenchmarkIndexAnyASCII/1:16-4 174527325 6.885 ns/op BenchmarkIndexAnyASCII/1:16-4 175444934 6.866 ns/op BenchmarkIndexAnyASCII/1:16-4 174077659 6.920 ns/op BenchmarkIndexAnyASCII/1:32-4 165634945 7.240 ns/op BenchmarkIndexAnyASCII/1:32-4 163535934 7.290 ns/op BenchmarkIndexAnyASCII/1:32-4 162363706 7.273 ns/op BenchmarkIndexAnyASCII/1:32-4 165900612 7.254 ns/op BenchmarkIndexAnyASCII/1:32-4 167270660 7.171 ns/op BenchmarkIndexAnyASCII/1:32-4 164965682 7.266 ns/op BenchmarkIndexAnyASCII/1:32-4 165255244 7.226 ns/op BenchmarkIndexAnyASCII/1:32-4 165282578 7.257 ns/op BenchmarkIndexAnyASCII/1:32-4 166120410 7.237 ns/op BenchmarkIndexAnyASCII/1:32-4 167663660 7.253 ns/op BenchmarkIndexAnyASCII/1:64-4 163031582 7.336 ns/op BenchmarkIndexAnyASCII/1:64-4 163416364 7.360 ns/op BenchmarkIndexAnyASCII/1:64-4 165443263 7.390 ns/op BenchmarkIndexAnyASCII/1:64-4 162193807 7.328 ns/op BenchmarkIndexAnyASCII/1:64-4 163269212 7.324 ns/op BenchmarkIndexAnyASCII/1:64-4 162175978 7.324 ns/op BenchmarkIndexAnyASCII/1:64-4 164360770 7.323 ns/op BenchmarkIndexAnyASCII/1:64-4 162775084 7.265 ns/op BenchmarkIndexAnyASCII/1:64-4 160467262 7.440 ns/op BenchmarkIndexAnyASCII/1:64-4 162920982 7.327 ns/op BenchmarkIndexAnyASCII/16:1-4 243109723 4.876 ns/op BenchmarkIndexAnyASCII/16:1-4 245940468 4.958 ns/op BenchmarkIndexAnyASCII/16:1-4 244222808 4.896 ns/op BenchmarkIndexAnyASCII/16:1-4 245413398 4.882 ns/op BenchmarkIndexAnyASCII/16:1-4 240066157 4.959 ns/op BenchmarkIndexAnyASCII/16:1-4 240823395 4.904 ns/op BenchmarkIndexAnyASCII/16:1-4 246983786 4.881 ns/op BenchmarkIndexAnyASCII/16:1-4 244798747 4.984 ns/op BenchmarkIndexAnyASCII/16:1-4 241668126 4.891 ns/op BenchmarkIndexAnyASCII/16:1-4 238663128 4.926 ns/op BenchmarkIndexAnyASCII/16:2-4 67372100 17.71 ns/op BenchmarkIndexAnyASCII/16:2-4 68699665 17.68 ns/op BenchmarkIndexAnyASCII/16:2-4 67540224 17.70 ns/op BenchmarkIndexAnyASCII/16:2-4 67986769 17.64 ns/op BenchmarkIndexAnyASCII/16:2-4 65883627 17.73 ns/op BenchmarkIndexAnyASCII/16:2-4 68336491 17.89 ns/op BenchmarkIndexAnyASCII/16:2-4 67228837 17.77 ns/op BenchmarkIndexAnyASCII/16:2-4 68819059 17.74 ns/op BenchmarkIndexAnyASCII/16:2-4 67798069 17.78 ns/op BenchmarkIndexAnyASCII/16:2-4 65197254 17.70 ns/op BenchmarkIndexAnyASCII/16:4-4 65069838 18.39 ns/op BenchmarkIndexAnyASCII/16:4-4 64416882 18.34 ns/op BenchmarkIndexAnyASCII/16:4-4 64644378 18.42 ns/op BenchmarkIndexAnyASCII/16:4-4 65057187 18.48 ns/op BenchmarkIndexAnyASCII/16:4-4 64427264 18.41 ns/op BenchmarkIndexAnyASCII/16:4-4 65361014 18.36 ns/op BenchmarkIndexAnyASCII/16:4-4 65867104 18.39 ns/op BenchmarkIndexAnyASCII/16:4-4 65084000 18.29 ns/op BenchmarkIndexAnyASCII/16:4-4 65720721 18.35 ns/op BenchmarkIndexAnyASCII/16:4-4 64675947 18.43 ns/op BenchmarkIndexAnyASCII/16:8-4 51454986 23.25 ns/op BenchmarkIndexAnyASCII/16:8-4 50962022 23.43 ns/op BenchmarkIndexAnyASCII/16:8-4 50681192 24.00 ns/op BenchmarkIndexAnyASCII/16:8-4 49210866 23.69 ns/op BenchmarkIndexAnyASCII/16:8-4 50305142 23.78 ns/op BenchmarkIndexAnyASCII/16:8-4 50489830 23.36 ns/op BenchmarkIndexAnyASCII/16:8-4 51880142 23.40 ns/op BenchmarkIndexAnyASCII/16:8-4 50048863 23.47 ns/op BenchmarkIndexAnyASCII/16:8-4 49981596 23.74 ns/op BenchmarkIndexAnyASCII/16:8-4 49836212 23.61 ns/op BenchmarkIndexAnyASCII/16:16-4 36746943 32.02 ns/op BenchmarkIndexAnyASCII/16:16-4 37738128 32.37 ns/op BenchmarkIndexAnyASCII/16:16-4 36644386 32.28 ns/op BenchmarkIndexAnyASCII/16:16-4 36821206 31.95 ns/op BenchmarkIndexAnyASCII/16:16-4 37739287 31.80 ns/op BenchmarkIndexAnyASCII/16:16-4 37465885 31.88 ns/op BenchmarkIndexAnyASCII/16:16-4 37888354 32.16 ns/op BenchmarkIndexAnyASCII/16:16-4 37471254 31.94 ns/op BenchmarkIndexAnyASCII/16:16-4 36578438 32.02 ns/op BenchmarkIndexAnyASCII/16:16-4 37481047 31.97 ns/op BenchmarkIndexAnyASCII/16:32-4 20121484 58.80 ns/op BenchmarkIndexAnyASCII/16:32-4 20454420 58.60 ns/op BenchmarkIndexAnyASCII/16:32-4 20656359 58.47 ns/op BenchmarkIndexAnyASCII/16:32-4 20358355 58.30 ns/op BenchmarkIndexAnyASCII/16:32-4 20804712 58.72 ns/op BenchmarkIndexAnyASCII/16:32-4 20122438 59.46 ns/op BenchmarkIndexAnyASCII/16:32-4 20415810 59.08 ns/op BenchmarkIndexAnyASCII/16:32-4 20224813 58.97 ns/op BenchmarkIndexAnyASCII/16:32-4 20469259 59.01 ns/op BenchmarkIndexAnyASCII/16:32-4 20187579 59.15 ns/op BenchmarkIndexAnyASCII/16:64-4 11674719 101.8 ns/op BenchmarkIndexAnyASCII/16:64-4 11789780 101.7 ns/op BenchmarkIndexAnyASCII/16:64-4 11827470 102.6 ns/op BenchmarkIndexAnyASCII/16:64-4 11653512 104.0 ns/op BenchmarkIndexAnyASCII/16:64-4 11400006 103.8 ns/op BenchmarkIndexAnyASCII/16:64-4 11819577 101.8 ns/op BenchmarkIndexAnyASCII/16:64-4 11691900 102.6 ns/op BenchmarkIndexAnyASCII/16:64-4 11681822 102.1 ns/op BenchmarkIndexAnyASCII/16:64-4 11762040 102.4 ns/op BenchmarkIndexAnyASCII/16:64-4 11574680 102.8 ns/op BenchmarkIndexAnyASCII/256:1-4 142752967 8.379 ns/op BenchmarkIndexAnyASCII/256:1-4 139685762 8.431 ns/op BenchmarkIndexAnyASCII/256:1-4 138781048 8.922 ns/op BenchmarkIndexAnyASCII/256:1-4 138115668 8.884 ns/op BenchmarkIndexAnyASCII/256:1-4 139530340 9.008 ns/op BenchmarkIndexAnyASCII/256:1-4 141829350 8.866 ns/op BenchmarkIndexAnyASCII/256:1-4 135549763 8.700 ns/op BenchmarkIndexAnyASCII/256:1-4 137856216 8.736 ns/op BenchmarkIndexAnyASCII/256:1-4 134378252 8.944 ns/op BenchmarkIndexAnyASCII/256:1-4 139292678 8.686 ns/op BenchmarkIndexAnyASCII/256:2-4 7523380 159.3 ns/op BenchmarkIndexAnyASCII/256:2-4 7557238 158.7 ns/op BenchmarkIndexAnyASCII/256:2-4 7641573 158.3 ns/op BenchmarkIndexAnyASCII/256:2-4 7562433 158.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7593235 158.4 ns/op BenchmarkIndexAnyASCII/256:2-4 7645868 156.5 ns/op BenchmarkIndexAnyASCII/256:2-4 7560913 157.0 ns/op BenchmarkIndexAnyASCII/256:2-4 7675833 157.5 ns/op BenchmarkIndexAnyASCII/256:2-4 7676529 156.9 ns/op BenchmarkIndexAnyASCII/256:2-4 7550304 157.8 ns/op BenchmarkIndexAnyASCII/256:4-4 7532008 158.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7567452 158.1 ns/op BenchmarkIndexAnyASCII/256:4-4 7584464 158.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7564521 158.4 ns/op BenchmarkIndexAnyASCII/256:4-4 7486738 159.2 ns/op BenchmarkIndexAnyASCII/256:4-4 7534855 158.6 ns/op BenchmarkIndexAnyASCII/256:4-4 7640326 158.0 ns/op BenchmarkIndexAnyASCII/256:4-4 7589170 158.7 ns/op BenchmarkIndexAnyASCII/256:4-4 7537698 158.9 ns/op BenchmarkIndexAnyASCII/256:4-4 7558244 159.0 ns/op BenchmarkIndexAnyASCII/256:8-4 7276959 163.4 ns/op BenchmarkIndexAnyASCII/256:8-4 7394109 165.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7409379 163.6 ns/op BenchmarkIndexAnyASCII/256:8-4 7141660 165.5 ns/op BenchmarkIndexAnyASCII/256:8-4 7296205 164.1 ns/op BenchmarkIndexAnyASCII/256:8-4 7268020 165.2 ns/op BenchmarkIndexAnyASCII/256:8-4 7265038 164.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7295827 165.8 ns/op BenchmarkIndexAnyASCII/256:8-4 7270815 165.9 ns/op BenchmarkIndexAnyASCII/256:8-4 7233831 164.6 ns/op BenchmarkIndexAnyASCII/256:16-4 6933991 174.8 ns/op BenchmarkIndexAnyASCII/256:16-4 6888553 174.7 ns/op BenchmarkIndexAnyASCII/256:16-4 6854581 173.4 ns/op BenchmarkIndexAnyASCII/256:16-4 6888447 173.9 ns/op BenchmarkIndexAnyASCII/256:16-4 6983670 171.4 ns/op BenchmarkIndexAnyASCII/256:16-4 6941445 174.1 ns/op BenchmarkIndexAnyASCII/256:16-4 6907071 172.0 ns/op BenchmarkIndexAnyASCII/256:16-4 6909910 172.0 ns/op BenchmarkIndexAnyASCII/256:16-4 6961479 171.5 ns/op BenchmarkIndexAnyASCII/256:16-4 6949664 173.2 ns/op BenchmarkIndexAnyASCII/256:32-4 3643611 328.8 ns/op BenchmarkIndexAnyASCII/256:32-4 3689454 327.4 ns/op BenchmarkIndexAnyASCII/256:32-4 3689073 328.6 ns/op BenchmarkIndexAnyASCII/256:32-4 3663238 327.6 ns/op BenchmarkIndexAnyASCII/256:32-4 3658058 326.8 ns/op BenchmarkIndexAnyASCII/256:32-4 3672174 325.6 ns/op BenchmarkIndexAnyASCII/256:32-4 3695314 326.2 ns/op BenchmarkIndexAnyASCII/256:32-4 3686391 325.6 ns/op BenchmarkIndexAnyASCII/256:32-4 3673220 327.9 ns/op BenchmarkIndexAnyASCII/256:32-4 3648004 328.8 ns/op BenchmarkIndexAnyASCII/256:64-4 3207646 373.3 ns/op BenchmarkIndexAnyASCII/256:64-4 3195505 374.2 ns/op BenchmarkIndexAnyASCII/256:64-4 3175550 372.9 ns/op BenchmarkIndexAnyASCII/256:64-4 3225535 372.7 ns/op BenchmarkIndexAnyASCII/256:64-4 3235888 372.3 ns/op BenchmarkIndexAnyASCII/256:64-4 3237662 369.1 ns/op BenchmarkIndexAnyASCII/256:64-4 3216730 369.8 ns/op BenchmarkIndexAnyASCII/256:64-4 3234015 372.0 ns/op BenchmarkIndexAnyASCII/256:64-4 3225212 371.7 ns/op BenchmarkIndexAnyASCII/256:64-4 3199816 372.2 ns/op BenchmarkIndexAnyUTF8/1:1-4 367448174 3.237 ns/op BenchmarkIndexAnyUTF8/1:1-4 371524574 3.138 ns/op BenchmarkIndexAnyUTF8/1:1-4 380733598 3.268 ns/op BenchmarkIndexAnyUTF8/1:1-4 370413376 3.178 ns/op BenchmarkIndexAnyUTF8/1:1-4 374403297 3.267 ns/op BenchmarkIndexAnyUTF8/1:1-4 377433878 3.212 ns/op BenchmarkIndexAnyUTF8/1:1-4 373621886 3.264 ns/op BenchmarkIndexAnyUTF8/1:1-4 373135108 3.253 ns/op BenchmarkIndexAnyUTF8/1:1-4 381425744 3.245 ns/op BenchmarkIndexAnyUTF8/1:1-4 375018002 3.166 ns/op BenchmarkIndexAnyUTF8/1:2-4 163782506 7.347 ns/op BenchmarkIndexAnyUTF8/1:2-4 163383313 7.360 ns/op BenchmarkIndexAnyUTF8/1:2-4 162320320 7.384 ns/op BenchmarkIndexAnyUTF8/1:2-4 163886276 7.336 ns/op BenchmarkIndexAnyUTF8/1:2-4 164835523 7.313 ns/op BenchmarkIndexAnyUTF8/1:2-4 163226541 7.340 ns/op BenchmarkIndexAnyUTF8/1:2-4 163451955 7.297 ns/op BenchmarkIndexAnyUTF8/1:2-4 162005898 7.387 ns/op BenchmarkIndexAnyUTF8/1:2-4 162050530 7.296 ns/op BenchmarkIndexAnyUTF8/1:2-4 163473073 7.345 ns/op BenchmarkIndexAnyUTF8/1:4-4 162870808 7.308 ns/op BenchmarkIndexAnyUTF8/1:4-4 164732395 7.347 ns/op BenchmarkIndexAnyUTF8/1:4-4 163386096 7.422 ns/op BenchmarkIndexAnyUTF8/1:4-4 164299086 7.357 ns/op BenchmarkIndexAnyUTF8/1:4-4 162051512 7.360 ns/op BenchmarkIndexAnyUTF8/1:4-4 160329271 7.366 ns/op BenchmarkIndexAnyUTF8/1:4-4 163265768 7.332 ns/op BenchmarkIndexAnyUTF8/1:4-4 162869060 7.329 ns/op BenchmarkIndexAnyUTF8/1:4-4 162485394 7.327 ns/op BenchmarkIndexAnyUTF8/1:4-4 163926963 7.276 ns/op BenchmarkIndexAnyUTF8/1:8-4 163162902 7.341 ns/op BenchmarkIndexAnyUTF8/1:8-4 162586141 7.401 ns/op BenchmarkIndexAnyUTF8/1:8-4 165432231 7.311 ns/op BenchmarkIndexAnyUTF8/1:8-4 165971486 7.288 ns/op BenchmarkIndexAnyUTF8/1:8-4 164178705 7.323 ns/op BenchmarkIndexAnyUTF8/1:8-4 165388268 7.418 ns/op BenchmarkIndexAnyUTF8/1:8-4 161885589 7.334 ns/op BenchmarkIndexAnyUTF8/1:8-4 161399898 7.277 ns/op BenchmarkIndexAnyUTF8/1:8-4 163817170 7.320 ns/op BenchmarkIndexAnyUTF8/1:8-4 163077991 7.370 ns/op BenchmarkIndexAnyUTF8/1:16-4 170142726 6.996 ns/op BenchmarkIndexAnyUTF8/1:16-4 171156199 6.984 ns/op BenchmarkIndexAnyUTF8/1:16-4 169288399 7.042 ns/op BenchmarkIndexAnyUTF8/1:16-4 169317937 7.046 ns/op BenchmarkIndexAnyUTF8/1:16-4 171888930 7.011 ns/op BenchmarkIndexAnyUTF8/1:16-4 170474148 7.080 ns/op BenchmarkIndexAnyUTF8/1:16-4 169165054 7.106 ns/op BenchmarkIndexAnyUTF8/1:16-4 171448614 7.038 ns/op BenchmarkIndexAnyUTF8/1:16-4 169010007 7.068 ns/op BenchmarkIndexAnyUTF8/1:16-4 170469115 7.073 ns/op BenchmarkIndexAnyUTF8/1:32-4 161559048 7.452 ns/op BenchmarkIndexAnyUTF8/1:32-4 161044410 7.371 ns/op BenchmarkIndexAnyUTF8/1:32-4 161834725 7.355 ns/op BenchmarkIndexAnyUTF8/1:32-4 162309062 7.489 ns/op BenchmarkIndexAnyUTF8/1:32-4 162154075 7.395 ns/op BenchmarkIndexAnyUTF8/1:32-4 161152761 7.405 ns/op BenchmarkIndexAnyUTF8/1:32-4 163052514 7.488 ns/op BenchmarkIndexAnyUTF8/1:32-4 160818459 7.378 ns/op BenchmarkIndexAnyUTF8/1:32-4 162024772 7.342 ns/op BenchmarkIndexAnyUTF8/1:32-4 164522389 7.287 ns/op BenchmarkIndexAnyUTF8/1:64-4 159130533 7.490 ns/op BenchmarkIndexAnyUTF8/1:64-4 159958807 7.496 ns/op BenchmarkIndexAnyUTF8/1:64-4 159723066 7.482 ns/op BenchmarkIndexAnyUTF8/1:64-4 159995438 7.452 ns/op BenchmarkIndexAnyUTF8/1:64-4 161495624 7.345 ns/op BenchmarkIndexAnyUTF8/1:64-4 160950289 7.535 ns/op BenchmarkIndexAnyUTF8/1:64-4 160203490 7.660 ns/op BenchmarkIndexAnyUTF8/1:64-4 157689246 7.619 ns/op BenchmarkIndexAnyUTF8/1:64-4 158328655 7.580 ns/op BenchmarkIndexAnyUTF8/1:64-4 158658882 7.483 ns/op BenchmarkIndexAnyUTF8/16:1-4 99245132 12.26 ns/op BenchmarkIndexAnyUTF8/16:1-4 98729068 12.30 ns/op BenchmarkIndexAnyUTF8/16:1-4 97761649 12.24 ns/op BenchmarkIndexAnyUTF8/16:1-4 96475981 12.27 ns/op BenchmarkIndexAnyUTF8/16:1-4 94235430 12.27 ns/op BenchmarkIndexAnyUTF8/16:1-4 98621533 12.33 ns/op BenchmarkIndexAnyUTF8/16:1-4 99462438 12.40 ns/op BenchmarkIndexAnyUTF8/16:1-4 96801024 12.35 ns/op BenchmarkIndexAnyUTF8/16:1-4 99747729 12.32 ns/op BenchmarkIndexAnyUTF8/16:1-4 96920206 12.36 ns/op BenchmarkIndexAnyUTF8/16:2-4 37322146 32.23 ns/op BenchmarkIndexAnyUTF8/16:2-4 36651453 32.62 ns/op BenchmarkIndexAnyUTF8/16:2-4 36706048 32.42 ns/op BenchmarkIndexAnyUTF8/16:2-4 36891038 32.19 ns/op BenchmarkIndexAnyUTF8/16:2-4 37218740 31.93 ns/op BenchmarkIndexAnyUTF8/16:2-4 37378885 31.80 ns/op BenchmarkIndexAnyUTF8/16:2-4 37786947 31.83 ns/op BenchmarkIndexAnyUTF8/16:2-4 37768350 31.66 ns/op BenchmarkIndexAnyUTF8/16:2-4 37654938 31.85 ns/op BenchmarkIndexAnyUTF8/16:2-4 37522672 31.66 ns/op BenchmarkIndexAnyUTF8/16:4-4 36174969 32.47 ns/op BenchmarkIndexAnyUTF8/16:4-4 37414608 32.51 ns/op BenchmarkIndexAnyUTF8/16:4-4 36386294 32.94 ns/op BenchmarkIndexAnyUTF8/16:4-4 36250258 32.70 ns/op BenchmarkIndexAnyUTF8/16:4-4 37314460 32.81 ns/op BenchmarkIndexAnyUTF8/16:4-4 36959503 32.79 ns/op BenchmarkIndexAnyUTF8/16:4-4 36517863 32.85 ns/op BenchmarkIndexAnyUTF8/16:4-4 35889040 32.79 ns/op BenchmarkIndexAnyUTF8/16:4-4 36976131 32.22 ns/op BenchmarkIndexAnyUTF8/16:4-4 36432493 32.87 ns/op BenchmarkIndexAnyUTF8/16:8-4 14085800 84.09 ns/op BenchmarkIndexAnyUTF8/16:8-4 14242081 83.71 ns/op BenchmarkIndexAnyUTF8/16:8-4 14179545 83.54 ns/op BenchmarkIndexAnyUTF8/16:8-4 14456431 83.81 ns/op BenchmarkIndexAnyUTF8/16:8-4 14336720 83.62 ns/op BenchmarkIndexAnyUTF8/16:8-4 14333260 83.88 ns/op BenchmarkIndexAnyUTF8/16:8-4 14083288 83.94 ns/op BenchmarkIndexAnyUTF8/16:8-4 14324235 85.12 ns/op BenchmarkIndexAnyUTF8/16:8-4 13913616 85.76 ns/op BenchmarkIndexAnyUTF8/16:8-4 14041717 84.95 ns/op BenchmarkIndexAnyUTF8/16:16-4 14130171 86.05 ns/op BenchmarkIndexAnyUTF8/16:16-4 14114790 86.82 ns/op BenchmarkIndexAnyUTF8/16:16-4 14033799 85.88 ns/op BenchmarkIndexAnyUTF8/16:16-4 13925751 86.07 ns/op BenchmarkIndexAnyUTF8/16:16-4 13973246 85.65 ns/op BenchmarkIndexAnyUTF8/16:16-4 14025874 85.54 ns/op BenchmarkIndexAnyUTF8/16:16-4 14059316 85.19 ns/op BenchmarkIndexAnyUTF8/16:16-4 14160988 85.78 ns/op BenchmarkIndexAnyUTF8/16:16-4 13963035 85.76 ns/op BenchmarkIndexAnyUTF8/16:16-4 14073928 86.12 ns/op BenchmarkIndexAnyUTF8/16:32-4 12713636 94.48 ns/op BenchmarkIndexAnyUTF8/16:32-4 12771103 93.45 ns/op BenchmarkIndexAnyUTF8/16:32-4 12926622 93.66 ns/op BenchmarkIndexAnyUTF8/16:32-4 12907455 93.63 ns/op BenchmarkIndexAnyUTF8/16:32-4 12743197 93.17 ns/op BenchmarkIndexAnyUTF8/16:32-4 12972241 93.38 ns/op BenchmarkIndexAnyUTF8/16:32-4 12824220 93.66 ns/op BenchmarkIndexAnyUTF8/16:32-4 12892394 94.88 ns/op BenchmarkIndexAnyUTF8/16:32-4 12613926 95.21 ns/op BenchmarkIndexAnyUTF8/16:32-4 12739621 93.47 ns/op BenchmarkIndexAnyUTF8/16:64-4 12816597 94.24 ns/op BenchmarkIndexAnyUTF8/16:64-4 12785748 93.83 ns/op BenchmarkIndexAnyUTF8/16:64-4 12712752 95.19 ns/op BenchmarkIndexAnyUTF8/16:64-4 12627381 95.04 ns/op BenchmarkIndexAnyUTF8/16:64-4 12597691 95.67 ns/op BenchmarkIndexAnyUTF8/16:64-4 12610041 94.98 ns/op BenchmarkIndexAnyUTF8/16:64-4 12472526 96.20 ns/op BenchmarkIndexAnyUTF8/16:64-4 12513303 94.66 ns/op BenchmarkIndexAnyUTF8/16:64-4 12811491 94.87 ns/op BenchmarkIndexAnyUTF8/16:64-4 12634515 94.56 ns/op BenchmarkIndexAnyUTF8/256:1-4 7804826 154.1 ns/op BenchmarkIndexAnyUTF8/256:1-4 7764234 154.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 7763590 154.3 ns/op BenchmarkIndexAnyUTF8/256:1-4 7784995 154.6 ns/op BenchmarkIndexAnyUTF8/256:1-4 7764218 154.0 ns/op BenchmarkIndexAnyUTF8/256:1-4 7776648 153.4 ns/op BenchmarkIndexAnyUTF8/256:1-4 7778578 154.6 ns/op BenchmarkIndexAnyUTF8/256:1-4 7734276 153.9 ns/op BenchmarkIndexAnyUTF8/256:1-4 7788991 154.3 ns/op BenchmarkIndexAnyUTF8/256:1-4 7754185 153.8 ns/op BenchmarkIndexAnyUTF8/256:2-4 3697072 322.7 ns/op BenchmarkIndexAnyUTF8/256:2-4 3708939 322.6 ns/op BenchmarkIndexAnyUTF8/256:2-4 3709850 323.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 3704206 324.5 ns/op BenchmarkIndexAnyUTF8/256:2-4 3700239 323.9 ns/op BenchmarkIndexAnyUTF8/256:2-4 3727009 322.7 ns/op BenchmarkIndexAnyUTF8/256:2-4 3720198 324.4 ns/op BenchmarkIndexAnyUTF8/256:2-4 3715272 329.3 ns/op BenchmarkIndexAnyUTF8/256:2-4 3707769 324.7 ns/op BenchmarkIndexAnyUTF8/256:2-4 3707534 325.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 6695282 179.3 ns/op BenchmarkIndexAnyUTF8/256:4-4 6677976 178.9 ns/op BenchmarkIndexAnyUTF8/256:4-4 6752260 178.2 ns/op BenchmarkIndexAnyUTF8/256:4-4 6733365 178.3 ns/op BenchmarkIndexAnyUTF8/256:4-4 6733540 177.6 ns/op BenchmarkIndexAnyUTF8/256:4-4 6680594 178.5 ns/op BenchmarkIndexAnyUTF8/256:4-4 6737114 176.8 ns/op BenchmarkIndexAnyUTF8/256:4-4 6753367 177.8 ns/op BenchmarkIndexAnyUTF8/256:4-4 6733600 178.1 ns/op BenchmarkIndexAnyUTF8/256:4-4 6702028 178.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 3347865 358.4 ns/op BenchmarkIndexAnyUTF8/256:8-4 3355600 356.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 3370768 357.6 ns/op BenchmarkIndexAnyUTF8/256:8-4 3359487 356.2 ns/op BenchmarkIndexAnyUTF8/256:8-4 3349743 357.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 3369074 356.0 ns/op BenchmarkIndexAnyUTF8/256:8-4 3358518 354.2 ns/op BenchmarkIndexAnyUTF8/256:8-4 3397814 354.8 ns/op BenchmarkIndexAnyUTF8/256:8-4 3374571 356.7 ns/op BenchmarkIndexAnyUTF8/256:8-4 3383634 352.2 ns/op BenchmarkIndexAnyUTF8/256:16-4 3407713 351.2 ns/op BenchmarkIndexAnyUTF8/256:16-4 3398396 354.0 ns/op BenchmarkIndexAnyUTF8/256:16-4 3372016 361.5 ns/op BenchmarkIndexAnyUTF8/256:16-4 3354355 357.8 ns/op BenchmarkIndexAnyUTF8/256:16-4 3328047 357.4 ns/op BenchmarkIndexAnyUTF8/256:16-4 3310650 357.8 ns/op BenchmarkIndexAnyUTF8/256:16-4 3348742 357.0 ns/op BenchmarkIndexAnyUTF8/256:16-4 3344188 357.2 ns/op BenchmarkIndexAnyUTF8/256:16-4 3343431 356.4 ns/op BenchmarkIndexAnyUTF8/256:16-4 3337807 356.9 ns/op BenchmarkIndexAnyUTF8/256:32-4 679086 1760 ns/op BenchmarkIndexAnyUTF8/256:32-4 662227 1755 ns/op BenchmarkIndexAnyUTF8/256:32-4 673471 1760 ns/op BenchmarkIndexAnyUTF8/256:32-4 668898 1761 ns/op BenchmarkIndexAnyUTF8/256:32-4 687274 1774 ns/op BenchmarkIndexAnyUTF8/256:32-4 687974 1763 ns/op BenchmarkIndexAnyUTF8/256:32-4 681153 1755 ns/op BenchmarkIndexAnyUTF8/256:32-4 681406 1761 ns/op BenchmarkIndexAnyUTF8/256:32-4 678176 1758 ns/op BenchmarkIndexAnyUTF8/256:32-4 675374 1772 ns/op BenchmarkIndexAnyUTF8/256:64-4 391473 3050 ns/op BenchmarkIndexAnyUTF8/256:64-4 389346 3040 ns/op BenchmarkIndexAnyUTF8/256:64-4 393422 3039 ns/op BenchmarkIndexAnyUTF8/256:64-4 394010 3036 ns/op BenchmarkIndexAnyUTF8/256:64-4 392383 3036 ns/op BenchmarkIndexAnyUTF8/256:64-4 392623 3032 ns/op BenchmarkIndexAnyUTF8/256:64-4 393217 3032 ns/op BenchmarkIndexAnyUTF8/256:64-4 394797 3021 ns/op BenchmarkIndexAnyUTF8/256:64-4 391646 3044 ns/op BenchmarkIndexAnyUTF8/256:64-4 393207 3047 ns/op BenchmarkLastIndexAnyASCII/1:1-4 213349287 5.649 ns/op BenchmarkLastIndexAnyASCII/1:1-4 213161896 5.675 ns/op BenchmarkLastIndexAnyASCII/1:1-4 213530779 5.692 ns/op BenchmarkLastIndexAnyASCII/1:1-4 213478705 5.612 ns/op BenchmarkLastIndexAnyASCII/1:1-4 214813790 5.605 ns/op BenchmarkLastIndexAnyASCII/1:1-4 214408125 5.632 ns/op BenchmarkLastIndexAnyASCII/1:1-4 211773001 5.582 ns/op BenchmarkLastIndexAnyASCII/1:1-4 215843719 5.591 ns/op BenchmarkLastIndexAnyASCII/1:1-4 216563630 5.583 ns/op BenchmarkLastIndexAnyASCII/1:1-4 214070596 5.654 ns/op BenchmarkLastIndexAnyASCII/1:2-4 213521222 5.529 ns/op BenchmarkLastIndexAnyASCII/1:2-4 215392605 5.673 ns/op BenchmarkLastIndexAnyASCII/1:2-4 214693657 5.662 ns/op BenchmarkLastIndexAnyASCII/1:2-4 212284774 5.591 ns/op BenchmarkLastIndexAnyASCII/1:2-4 214351730 5.602 ns/op BenchmarkLastIndexAnyASCII/1:2-4 213222814 5.622 ns/op BenchmarkLastIndexAnyASCII/1:2-4 215559832 5.664 ns/op BenchmarkLastIndexAnyASCII/1:2-4 212238092 5.571 ns/op BenchmarkLastIndexAnyASCII/1:2-4 212734646 5.661 ns/op BenchmarkLastIndexAnyASCII/1:2-4 212489701 5.630 ns/op BenchmarkLastIndexAnyASCII/1:4-4 212804616 5.629 ns/op BenchmarkLastIndexAnyASCII/1:4-4 212707797 5.630 ns/op BenchmarkLastIndexAnyASCII/1:4-4 211714288 5.652 ns/op BenchmarkLastIndexAnyASCII/1:4-4 215919684 5.582 ns/op BenchmarkLastIndexAnyASCII/1:4-4 212934806 5.648 ns/op BenchmarkLastIndexAnyASCII/1:4-4 213006387 5.642 ns/op BenchmarkLastIndexAnyASCII/1:4-4 214514641 5.610 ns/op BenchmarkLastIndexAnyASCII/1:4-4 211453453 5.624 ns/op BenchmarkLastIndexAnyASCII/1:4-4 210002922 5.674 ns/op BenchmarkLastIndexAnyASCII/1:4-4 209678956 5.624 ns/op BenchmarkLastIndexAnyASCII/1:8-4 214743279 5.673 ns/op BenchmarkLastIndexAnyASCII/1:8-4 214008039 5.640 ns/op BenchmarkLastIndexAnyASCII/1:8-4 212985813 5.634 ns/op BenchmarkLastIndexAnyASCII/1:8-4 211366285 5.630 ns/op BenchmarkLastIndexAnyASCII/1:8-4 215065075 5.553 ns/op BenchmarkLastIndexAnyASCII/1:8-4 215848976 5.616 ns/op BenchmarkLastIndexAnyASCII/1:8-4 215530837 5.705 ns/op BenchmarkLastIndexAnyASCII/1:8-4 211745221 5.713 ns/op BenchmarkLastIndexAnyASCII/1:8-4 214657150 5.601 ns/op BenchmarkLastIndexAnyASCII/1:8-4 210378793 5.633 ns/op BenchmarkLastIndexAnyASCII/1:16-4 220236060 5.439 ns/op BenchmarkLastIndexAnyASCII/1:16-4 220719669 5.486 ns/op BenchmarkLastIndexAnyASCII/1:16-4 219765162 5.491 ns/op BenchmarkLastIndexAnyASCII/1:16-4 218365131 5.483 ns/op BenchmarkLastIndexAnyASCII/1:16-4 220178407 5.464 ns/op BenchmarkLastIndexAnyASCII/1:16-4 220151569 5.482 ns/op BenchmarkLastIndexAnyASCII/1:16-4 218767647 5.456 ns/op BenchmarkLastIndexAnyASCII/1:16-4 218925472 5.508 ns/op BenchmarkLastIndexAnyASCII/1:16-4 219625016 5.491 ns/op BenchmarkLastIndexAnyASCII/1:16-4 218117580 5.477 ns/op BenchmarkLastIndexAnyASCII/1:32-4 204507775 5.812 ns/op BenchmarkLastIndexAnyASCII/1:32-4 206480667 5.814 ns/op BenchmarkLastIndexAnyASCII/1:32-4 208081384 5.896 ns/op BenchmarkLastIndexAnyASCII/1:32-4 205541772 5.897 ns/op BenchmarkLastIndexAnyASCII/1:32-4 204889315 5.786 ns/op BenchmarkLastIndexAnyASCII/1:32-4 203838303 5.861 ns/op BenchmarkLastIndexAnyASCII/1:32-4 207318584 5.895 ns/op BenchmarkLastIndexAnyASCII/1:32-4 207535243 5.809 ns/op BenchmarkLastIndexAnyASCII/1:32-4 205784410 5.829 ns/op BenchmarkLastIndexAnyASCII/1:32-4 201685183 5.844 ns/op BenchmarkLastIndexAnyASCII/1:64-4 200946309 5.950 ns/op BenchmarkLastIndexAnyASCII/1:64-4 204039092 5.839 ns/op BenchmarkLastIndexAnyASCII/1:64-4 203758862 5.943 ns/op BenchmarkLastIndexAnyASCII/1:64-4 204840207 5.912 ns/op BenchmarkLastIndexAnyASCII/1:64-4 203206804 5.917 ns/op BenchmarkLastIndexAnyASCII/1:64-4 203775075 5.863 ns/op BenchmarkLastIndexAnyASCII/1:64-4 202801502 5.933 ns/op BenchmarkLastIndexAnyASCII/1:64-4 202819635 5.842 ns/op BenchmarkLastIndexAnyASCII/1:64-4 202975254 5.861 ns/op BenchmarkLastIndexAnyASCII/1:64-4 201841527 5.841 ns/op BenchmarkLastIndexAnyASCII/16:1-4 72456403 16.41 ns/op BenchmarkLastIndexAnyASCII/16:1-4 71931237 16.46 ns/op BenchmarkLastIndexAnyASCII/16:1-4 73306329 16.48 ns/op BenchmarkLastIndexAnyASCII/16:1-4 73750123 16.46 ns/op BenchmarkLastIndexAnyASCII/16:1-4 73002020 16.45 ns/op BenchmarkLastIndexAnyASCII/16:1-4 72982392 16.52 ns/op BenchmarkLastIndexAnyASCII/16:1-4 72108814 16.49 ns/op BenchmarkLastIndexAnyASCII/16:1-4 72551863 16.56 ns/op BenchmarkLastIndexAnyASCII/16:1-4 72523305 16.68 ns/op BenchmarkLastIndexAnyASCII/16:1-4 72549271 16.74 ns/op BenchmarkLastIndexAnyASCII/16:2-4 69371640 17.05 ns/op BenchmarkLastIndexAnyASCII/16:2-4 70018976 17.05 ns/op BenchmarkLastIndexAnyASCII/16:2-4 69399021 17.23 ns/op BenchmarkLastIndexAnyASCII/16:2-4 68912968 17.23 ns/op BenchmarkLastIndexAnyASCII/16:2-4 69929670 17.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 67451388 17.24 ns/op BenchmarkLastIndexAnyASCII/16:2-4 69880819 17.23 ns/op BenchmarkLastIndexAnyASCII/16:2-4 69508393 17.25 ns/op BenchmarkLastIndexAnyASCII/16:2-4 67855942 17.17 ns/op BenchmarkLastIndexAnyASCII/16:2-4 69579810 17.20 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67808899 17.86 ns/op BenchmarkLastIndexAnyASCII/16:4-4 66616171 18.01 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67176844 17.94 ns/op BenchmarkLastIndexAnyASCII/16:4-4 66049324 17.85 ns/op BenchmarkLastIndexAnyASCII/16:4-4 66789882 17.86 ns/op BenchmarkLastIndexAnyASCII/16:4-4 66943746 18.01 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67408603 17.92 ns/op BenchmarkLastIndexAnyASCII/16:4-4 66074716 17.86 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67426381 17.93 ns/op BenchmarkLastIndexAnyASCII/16:4-4 67207845 17.85 ns/op BenchmarkLastIndexAnyASCII/16:8-4 52116837 23.01 ns/op BenchmarkLastIndexAnyASCII/16:8-4 51859544 23.00 ns/op BenchmarkLastIndexAnyASCII/16:8-4 53401924 22.79 ns/op BenchmarkLastIndexAnyASCII/16:8-4 51661927 22.96 ns/op BenchmarkLastIndexAnyASCII/16:8-4 51333219 23.33 ns/op BenchmarkLastIndexAnyASCII/16:8-4 51813728 23.09 ns/op BenchmarkLastIndexAnyASCII/16:8-4 51083451 23.59 ns/op BenchmarkLastIndexAnyASCII/16:8-4 51577833 22.93 ns/op BenchmarkLastIndexAnyASCII/16:8-4 52422506 23.04 ns/op BenchmarkLastIndexAnyASCII/16:8-4 51672255 22.93 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37518723 31.91 ns/op BenchmarkLastIndexAnyASCII/16:16-4 36513046 31.87 ns/op BenchmarkLastIndexAnyASCII/16:16-4 38151932 32.00 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37769672 31.89 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37255534 32.02 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37665850 31.87 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37637685 32.01 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37350746 31.80 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37389886 31.67 ns/op BenchmarkLastIndexAnyASCII/16:16-4 37582297 31.58 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20656623 57.69 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20873781 57.64 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20799900 57.51 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20837804 57.84 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20726590 57.88 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20763025 57.87 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20855688 57.90 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20413236 58.20 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20696858 57.68 ns/op BenchmarkLastIndexAnyASCII/16:32-4 20467336 57.52 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11948529 101.3 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11649492 101.6 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11802944 101.2 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11800627 100.9 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11943804 100.8 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11928615 101.0 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11754229 101.0 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11856619 101.1 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11830726 101.4 ns/op BenchmarkLastIndexAnyASCII/16:64-4 11889447 101.6 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7781673 153.8 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7830602 153.1 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7877118 152.9 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7822994 154.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7766632 154.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7788201 153.2 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7787068 153.5 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7727466 154.8 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7723964 155.3 ns/op BenchmarkLastIndexAnyASCII/256:1-4 7727478 155.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7728603 156.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7567026 158.5 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7610649 155.9 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7761855 155.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7780030 155.2 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7718018 155.4 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7759591 154.8 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7710354 155.6 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7715665 154.7 ns/op BenchmarkLastIndexAnyASCII/256:2-4 7753298 155.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7696544 157.0 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7656950 156.4 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7639204 157.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7572043 157.8 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7588983 158.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7594182 158.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7627552 158.2 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7621452 157.3 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7618220 157.3 ns/op BenchmarkLastIndexAnyASCII/256:4-4 7684718 157.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7544750 158.6 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7546824 159.5 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7545104 158.8 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7555820 158.6 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7600522 158.3 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7583842 159.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7458942 160.1 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7562914 159.7 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7465587 160.6 ns/op BenchmarkLastIndexAnyASCII/256:8-4 7485356 161.2 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6969084 171.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7024378 171.4 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7026894 170.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6986412 171.6 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7028848 170.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7019817 170.7 ns/op BenchmarkLastIndexAnyASCII/256:16-4 6990738 171.5 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7011860 171.1 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7033303 169.8 ns/op BenchmarkLastIndexAnyASCII/256:16-4 7165718 169.3 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3702772 322.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3765780 323.5 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3718062 326.0 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3664005 325.6 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3650131 326.6 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3602997 326.8 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3637239 328.6 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3650714 327.9 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3691927 323.7 ns/op BenchmarkLastIndexAnyASCII/256:32-4 3705590 324.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3259080 370.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3269029 367.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3284139 363.6 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3298640 363.4 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3292528 364.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3316774 363.4 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3295266 365.2 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3279872 369.9 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3233280 368.1 ns/op BenchmarkLastIndexAnyASCII/256:64-4 3270889 368.2 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 208149452 5.785 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 205211137 5.812 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 207138477 5.766 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 204457126 5.811 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 211034253 5.841 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 204228728 5.832 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 205041433 5.809 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 207405259 5.856 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 203992531 5.926 ns/op BenchmarkLastIndexAnyUTF8/1:1-4 204722326 5.897 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 204010231 5.825 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 206433795 5.814 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 207166330 5.879 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 204489687 5.815 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 208068332 5.765 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 207245917 5.702 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 211940203 5.669 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 209911062 5.793 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 208288191 5.827 ns/op BenchmarkLastIndexAnyUTF8/1:2-4 205962420 5.782 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 205903802 5.795 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 206826180 5.882 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 203520614 5.875 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 207754646 5.745 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 206330451 5.825 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 205199088 5.839 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 205761069 5.801 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 206756133 5.787 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 208619354 5.789 ns/op BenchmarkLastIndexAnyUTF8/1:4-4 206554455 5.781 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 205114972 5.762 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 208082677 5.802 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 206317358 5.728 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 209302575 5.807 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 205831068 5.775 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 208073564 5.781 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 209274993 5.793 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 207274621 5.710 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 208584240 5.858 ns/op BenchmarkLastIndexAnyUTF8/1:8-4 207185286 5.848 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 216971197 5.457 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 217411381 5.548 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 216579075 5.557 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 218584564 5.497 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 219750584 5.507 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 218137256 5.492 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 216005376 5.561 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 214403856 5.515 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 214909537 5.551 ns/op BenchmarkLastIndexAnyUTF8/1:16-4 217723437 5.542 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 203534749 5.948 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 204050635 5.861 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 203672511 5.910 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 200302084 5.883 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 198382143 5.956 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 203200358 5.971 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 202364769 5.904 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 202534430 5.925 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 201447306 5.898 ns/op BenchmarkLastIndexAnyUTF8/1:32-4 201975728 5.940 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 201164610 6.018 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 201118386 5.962 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 201219208 5.929 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 202806670 5.915 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 201792966 6.097 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 196914032 6.043 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 202230868 5.902 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 200943610 5.976 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 202067636 6.054 ns/op BenchmarkLastIndexAnyUTF8/1:64-4 202214032 5.946 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 41514872 28.85 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 40411114 29.06 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 43512002 28.97 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 40956474 29.36 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 39768946 28.92 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 41351960 28.81 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 39703540 29.56 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 41587653 29.69 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 41636371 29.72 ns/op BenchmarkLastIndexAnyUTF8/16:1-4 41464179 29.06 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12436532 97.44 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12296280 98.63 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12285632 98.41 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12248257 96.78 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12289300 97.82 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12226275 97.96 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12241212 98.01 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12082050 98.38 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12439148 97.66 ns/op BenchmarkLastIndexAnyUTF8/16:2-4 12158992 99.23 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12025638 98.67 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12381656 97.76 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12130172 98.38 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12208495 98.05 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12226718 99.21 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12289521 98.22 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12136078 98.52 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12039886 99.40 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 12062478 100.4 ns/op BenchmarkLastIndexAnyUTF8/16:4-4 11807324 100.7 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11621660 100.0 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 12039676 99.29 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 12115628 98.28 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 12156879 99.10 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 12004111 99.92 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11989741 99.81 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 12084704 98.89 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11970084 99.56 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 11954858 99.76 ns/op BenchmarkLastIndexAnyUTF8/16:8-4 12009657 99.50 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12251072 98.78 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12261298 97.49 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12291964 96.49 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12614074 96.79 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12352227 97.63 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12504132 97.27 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12494391 97.14 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 11997556 97.53 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12241996 97.37 ns/op BenchmarkLastIndexAnyUTF8/16:16-4 12264444 98.23 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11212015 108.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11135569 107.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11181566 107.9 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11150443 106.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11306209 107.4 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11172334 108.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11207886 105.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11471586 106.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11411659 105.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-4 11377770 105.2 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11510000 104.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11492449 104.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11423523 103.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11634207 104.2 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11299663 105.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11454160 104.6 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11453071 104.3 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11594166 105.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11263408 104.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-4 11380696 104.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2704492 442.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2710766 439.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2685855 444.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2719083 447.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2715340 438.9 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2719107 434.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2747950 438.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2750533 434.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2760498 436.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-4 2789443 437.8 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 870865 1362 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 816085 1379 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 855817 1365 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 881022 1363 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 861735 1388 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 866179 1390 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 860067 1379 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 850317 1409 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 878014 1400 ns/op BenchmarkLastIndexAnyUTF8/256:2-4 874656 1449 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 847348 1412 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 846810 1476 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 845150 1418 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 850485 1416 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 855579 1402 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 840148 1375 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 849282 1375 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 845010 1388 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 855110 1390 ns/op BenchmarkLastIndexAnyUTF8/256:4-4 849975 1403 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 876820 1435 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 868020 1407 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 804769 1435 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 821774 1410 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 867249 1412 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 853346 1449 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 828186 1401 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 842750 1407 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 862532 1443 ns/op BenchmarkLastIndexAnyUTF8/256:8-4 846918 1398 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 870837 1359 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 897324 1378 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 861764 1355 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 893203 1386 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 879202 1365 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 868172 1371 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 886108 1411 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 880387 1360 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 860342 1360 ns/op BenchmarkLastIndexAnyUTF8/256:16-4 897181 1363 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 818233 1485 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 818511 1481 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 802188 1477 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 822333 1478 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 815131 1479 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 814606 1478 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 805116 1472 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 837696 1469 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 812582 1455 ns/op BenchmarkLastIndexAnyUTF8/256:32-4 840634 1442 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 801792 1526 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 794512 1522 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 791367 1520 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 783937 1514 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 796934 1523 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 787250 1519 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 780154 1517 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 787501 1514 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 782020 1521 ns/op BenchmarkLastIndexAnyUTF8/256:64-4 787383 1528 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16198 73976 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16309 73751 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16318 73648 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16314 73546 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16352 74134 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16310 73683 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16335 73722 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16285 73580 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16257 73858 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-4 16292 73638 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17166 69741 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17228 69990 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17109 69848 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17230 69740 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17265 69686 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17186 70270 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17042 70038 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17143 70007 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17263 69981 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-4 17120 70159 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1137 1040785 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1146 1036844 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1149 1035705 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1146 1030846 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1147 1035605 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1152 1031243 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1148 1038587 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1141 1039795 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1147 1034652 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-4 1153 1034890 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2293 520236 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2292 517294 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2308 519839 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2263 520269 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2275 521901 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2266 526676 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2247 532404 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2223 534095 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2229 532221 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-4 2210 531020 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4430 265724 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4462 265018 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4510 261842 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4532 262736 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4545 262284 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4502 264600 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4480 264267 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4492 265284 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4504 264050 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-4 4506 265437 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8937 133272 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8989 133094 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8931 132688 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8908 134064 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8852 132843 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8938 131401 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 9076 132737 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8946 133853 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8890 133242 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-4 8904 133540 ns/op BenchmarkIndexByte_Bytes/10-4 308601648 3.870 ns/op 2584.29 MB/s BenchmarkIndexByte_Bytes/10-4 316592614 3.860 ns/op 2590.55 MB/s BenchmarkIndexByte_Bytes/10-4 317508435 3.758 ns/op 2660.67 MB/s BenchmarkIndexByte_Bytes/10-4 314282900 3.769 ns/op 2653.24 MB/s BenchmarkIndexByte_Bytes/10-4 315032674 3.829 ns/op 2611.50 MB/s BenchmarkIndexByte_Bytes/10-4 314805966 3.861 ns/op 2589.74 MB/s BenchmarkIndexByte_Bytes/10-4 316369594 3.828 ns/op 2612.56 MB/s BenchmarkIndexByte_Bytes/10-4 313893997 3.838 ns/op 2605.86 MB/s BenchmarkIndexByte_Bytes/10-4 309036663 3.838 ns/op 2605.80 MB/s BenchmarkIndexByte_Bytes/10-4 314203512 3.820 ns/op 2617.63 MB/s BenchmarkIndexByte_Bytes/32-4 262665067 4.550 ns/op 7032.54 MB/s BenchmarkIndexByte_Bytes/32-4 260885023 4.610 ns/op 6941.00 MB/s BenchmarkIndexByte_Bytes/32-4 252631092 4.589 ns/op 6973.85 MB/s BenchmarkIndexByte_Bytes/32-4 257769498 4.905 ns/op 6524.00 MB/s BenchmarkIndexByte_Bytes/32-4 259372536 4.585 ns/op 6979.93 MB/s BenchmarkIndexByte_Bytes/32-4 259840440 4.640 ns/op 6896.81 MB/s BenchmarkIndexByte_Bytes/32-4 260865331 4.570 ns/op 7002.77 MB/s BenchmarkIndexByte_Bytes/32-4 262023477 4.551 ns/op 7031.78 MB/s BenchmarkIndexByte_Bytes/32-4 261706549 4.602 ns/op 6953.37 MB/s BenchmarkIndexByte_Bytes/32-4 261139029 4.525 ns/op 7072.28 MB/s BenchmarkIndexByte_Bytes/4K-4 6316160 192.0 ns/op 21329.92 MB/s BenchmarkIndexByte_Bytes/4K-4 6194665 191.6 ns/op 21378.52 MB/s BenchmarkIndexByte_Bytes/4K-4 6269240 190.8 ns/op 21470.14 MB/s BenchmarkIndexByte_Bytes/4K-4 6334610 191.4 ns/op 21401.54 MB/s BenchmarkIndexByte_Bytes/4K-4 6260992 190.9 ns/op 21452.29 MB/s BenchmarkIndexByte_Bytes/4K-4 6320272 190.8 ns/op 21466.15 MB/s BenchmarkIndexByte_Bytes/4K-4 6318027 192.7 ns/op 21256.54 MB/s BenchmarkIndexByte_Bytes/4K-4 6283890 192.7 ns/op 21252.87 MB/s BenchmarkIndexByte_Bytes/4K-4 6251769 192.2 ns/op 21309.41 MB/s BenchmarkIndexByte_Bytes/4K-4 6265736 191.7 ns/op 21365.82 MB/s BenchmarkIndexByte_Bytes/4M-4 8876 125912 ns/op 33311.44 MB/s BenchmarkIndexByte_Bytes/4M-4 8655 126075 ns/op 33268.20 MB/s BenchmarkIndexByte_Bytes/4M-4 8761 119899 ns/op 34982.09 MB/s BenchmarkIndexByte_Bytes/4M-4 9169 126605 ns/op 33128.96 MB/s BenchmarkIndexByte_Bytes/4M-4 8798 120495 ns/op 34808.89 MB/s BenchmarkIndexByte_Bytes/4M-4 8818 120342 ns/op 34853.09 MB/s BenchmarkIndexByte_Bytes/4M-4 9223 120059 ns/op 34935.39 MB/s BenchmarkIndexByte_Bytes/4M-4 9240 126575 ns/op 33136.92 MB/s BenchmarkIndexByte_Bytes/4M-4 9304 126149 ns/op 33248.70 MB/s BenchmarkIndexByte_Bytes/4M-4 8769 120487 ns/op 34811.34 MB/s BenchmarkIndexByte_Bytes/64M-4 285 4375901 ns/op 15336.01 MB/s BenchmarkIndexByte_Bytes/64M-4 267 4614855 ns/op 14541.92 MB/s BenchmarkIndexByte_Bytes/64M-4 253 4692510 ns/op 14301.27 MB/s BenchmarkIndexByte_Bytes/64M-4 238 4572324 ns/op 14677.19 MB/s BenchmarkIndexByte_Bytes/64M-4 262 4181276 ns/op 16049.85 MB/s BenchmarkIndexByte_Bytes/64M-4 290 4071185 ns/op 16483.87 MB/s BenchmarkIndexByte_Bytes/64M-4 291 4303612 ns/op 15593.61 MB/s BenchmarkIndexByte_Bytes/64M-4 280 4009632 ns/op 16736.92 MB/s BenchmarkIndexByte_Bytes/64M-4 289 4353875 ns/op 15413.60 MB/s BenchmarkIndexByte_Bytes/64M-4 295 4006643 ns/op 16749.40 MB/s BenchmarkIndexRune_Bytes/10-4 98964990 11.64 ns/op 858.95 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.48 ns/op 871.11 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.75 ns/op 851.41 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.64 ns/op 858.89 MB/s BenchmarkIndexRune_Bytes/10-4 96886815 11.67 ns/op 857.15 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.62 ns/op 860.88 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.43 ns/op 874.98 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.42 ns/op 875.89 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.80 ns/op 847.19 MB/s BenchmarkIndexRune_Bytes/10-4 100000000 11.62 ns/op 860.89 MB/s BenchmarkIndexRune_Bytes/32-4 96765055 12.50 ns/op 2560.76 MB/s BenchmarkIndexRune_Bytes/32-4 94570338 12.72 ns/op 2516.17 MB/s BenchmarkIndexRune_Bytes/32-4 91551574 12.66 ns/op 2526.82 MB/s BenchmarkIndexRune_Bytes/32-4 96153714 12.67 ns/op 2525.65 MB/s BenchmarkIndexRune_Bytes/32-4 94680158 12.40 ns/op 2581.54 MB/s BenchmarkIndexRune_Bytes/32-4 96683037 13.10 ns/op 2443.01 MB/s BenchmarkIndexRune_Bytes/32-4 88936017 12.67 ns/op 2526.59 MB/s BenchmarkIndexRune_Bytes/32-4 95149183 12.33 ns/op 2595.89 MB/s BenchmarkIndexRune_Bytes/32-4 97908087 12.62 ns/op 2535.00 MB/s BenchmarkIndexRune_Bytes/32-4 93741277 12.46 ns/op 2568.84 MB/s BenchmarkIndexRune_Bytes/4K-4 16904479 69.49 ns/op 58944.77 MB/s BenchmarkIndexRune_Bytes/4K-4 17505962 69.36 ns/op 59057.29 MB/s BenchmarkIndexRune_Bytes/4K-4 17274105 69.34 ns/op 59072.94 MB/s BenchmarkIndexRune_Bytes/4K-4 17245180 70.23 ns/op 58320.86 MB/s BenchmarkIndexRune_Bytes/4K-4 17124037 70.49 ns/op 58109.26 MB/s BenchmarkIndexRune_Bytes/4K-4 17053286 70.58 ns/op 58037.11 MB/s BenchmarkIndexRune_Bytes/4K-4 16920739 70.11 ns/op 58424.83 MB/s BenchmarkIndexRune_Bytes/4K-4 17281160 69.43 ns/op 58992.07 MB/s BenchmarkIndexRune_Bytes/4K-4 17160890 69.91 ns/op 58591.69 MB/s BenchmarkIndexRune_Bytes/4K-4 17149532 69.45 ns/op 58979.12 MB/s BenchmarkIndexRune_Bytes/4M-4 8983 129540 ns/op 32378.50 MB/s BenchmarkIndexRune_Bytes/4M-4 8652 129747 ns/op 32326.88 MB/s BenchmarkIndexRune_Bytes/4M-4 9016 130002 ns/op 32263.30 MB/s BenchmarkIndexRune_Bytes/4M-4 8907 130153 ns/op 32226.05 MB/s BenchmarkIndexRune_Bytes/4M-4 8798 130158 ns/op 32224.79 MB/s BenchmarkIndexRune_Bytes/4M-4 9033 130982 ns/op 32021.89 MB/s BenchmarkIndexRune_Bytes/4M-4 8599 125668 ns/op 33375.95 MB/s BenchmarkIndexRune_Bytes/4M-4 8775 130753 ns/op 32078.05 MB/s BenchmarkIndexRune_Bytes/4M-4 8566 125068 ns/op 33536.28 MB/s BenchmarkIndexRune_Bytes/4M-4 8956 124995 ns/op 33555.89 MB/s BenchmarkIndexRune_Bytes/64M-4 284 4433191 ns/op 15137.82 MB/s BenchmarkIndexRune_Bytes/64M-4 286 4023760 ns/op 16678.15 MB/s BenchmarkIndexRune_Bytes/64M-4 265 4478945 ns/op 14983.19 MB/s BenchmarkIndexRune_Bytes/64M-4 271 4310776 ns/op 15567.70 MB/s BenchmarkIndexRune_Bytes/64M-4 267 4215156 ns/op 15920.85 MB/s BenchmarkIndexRune_Bytes/64M-4 268 4003599 ns/op 16762.14 MB/s BenchmarkIndexRune_Bytes/64M-4 297 4230410 ns/op 15863.44 MB/s BenchmarkIndexRune_Bytes/64M-4 261 4051657 ns/op 16563.31 MB/s BenchmarkIndexRune_Bytes/64M-4 295 4081694 ns/op 16441.43 MB/s BenchmarkIndexRune_Bytes/64M-4 296 4152053 ns/op 16162.82 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 223213959 5.440 ns/op 1838.21 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 222337954 5.463 ns/op 1830.66 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 220321926 5.396 ns/op 1853.22 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 219058436 5.545 ns/op 1803.53 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 216161122 5.613 ns/op 1781.56 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 219116576 5.490 ns/op 1821.40 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 220798828 5.387 ns/op 1856.27 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 224671738 5.386 ns/op 1856.67 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 221981064 5.476 ns/op 1826.01 MB/s BenchmarkIndexRuneASCII_Bytes/10-4 223391528 5.427 ns/op 1842.58 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 205443639 5.847 ns/op 5473.12 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 208006819 5.793 ns/op 5524.34 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 205543657 5.869 ns/op 5452.63 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 200307357 5.951 ns/op 5377.08 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 202777658 6.003 ns/op 5330.36 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 198748777 5.904 ns/op 5419.86 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 202236429 5.955 ns/op 5373.33 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 195489699 5.948 ns/op 5379.75 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 200862180 5.971 ns/op 5359.18 MB/s BenchmarkIndexRuneASCII_Bytes/32-4 202985462 6.039 ns/op 5298.71 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6118863 196.2 ns/op 20872.23 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6094120 194.6 ns/op 21050.26 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6159303 195.6 ns/op 20943.32 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6143768 195.5 ns/op 20954.79 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6070218 197.6 ns/op 20725.28 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6140962 197.8 ns/op 20707.16 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6004750 199.1 ns/op 20569.16 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6050067 200.1 ns/op 20473.41 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 6098901 198.3 ns/op 20659.01 MB/s BenchmarkIndexRuneASCII_Bytes/4K-4 5956344 196.5 ns/op 20842.40 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8672 127302 ns/op 32947.65 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9061 120969 ns/op 34672.63 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9135 121430 ns/op 34540.96 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9044 127382 ns/op 32926.99 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9141 127294 ns/op 32949.65 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8728 121060 ns/op 34646.45 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8745 127199 ns/op 32974.44 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 9130 120800 ns/op 34721.00 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8734 120893 ns/op 34694.26 MB/s BenchmarkIndexRuneASCII_Bytes/4M-4 8760 127223 ns/op 32968.21 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 210 5276083 ns/op 12719.45 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 223 4859026 ns/op 13811.17 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 219 8486276 ns/op 7907.93 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 207 5184107 ns/op 12945.11 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 217 5467882 ns/op 12273.28 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 273 4541684 ns/op 14776.21 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 213 5008741 ns/op 13398.35 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 244 4804126 ns/op 13969.00 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 232 4915189 ns/op 13653.36 MB/s BenchmarkIndexRuneASCII_Bytes/64M-4 230 5104410 ns/op 13147.23 MB/s BenchmarkIndexNonASCII_Bytes/10-4 427567017 2.851 ns/op 3507.40 MB/s BenchmarkIndexNonASCII_Bytes/10-4 429479708 2.776 ns/op 3602.84 MB/s BenchmarkIndexNonASCII_Bytes/10-4 428970250 2.793 ns/op 3580.86 MB/s BenchmarkIndexNonASCII_Bytes/10-4 423335910 2.748 ns/op 3638.47 MB/s BenchmarkIndexNonASCII_Bytes/10-4 427339192 2.848 ns/op 3510.94 MB/s BenchmarkIndexNonASCII_Bytes/10-4 429265365 2.753 ns/op 3632.64 MB/s BenchmarkIndexNonASCII_Bytes/10-4 432860770 2.768 ns/op 3612.60 MB/s BenchmarkIndexNonASCII_Bytes/10-4 438103026 2.791 ns/op 3582.32 MB/s BenchmarkIndexNonASCII_Bytes/10-4 439050146 2.755 ns/op 3630.15 MB/s BenchmarkIndexNonASCII_Bytes/10-4 439420621 2.810 ns/op 3559.17 MB/s BenchmarkIndexNonASCII_Bytes/32-4 384357870 3.162 ns/op 10120.35 MB/s BenchmarkIndexNonASCII_Bytes/32-4 384107456 3.163 ns/op 10117.31 MB/s BenchmarkIndexNonASCII_Bytes/32-4 379469894 3.130 ns/op 10223.29 MB/s BenchmarkIndexNonASCII_Bytes/32-4 383573041 3.161 ns/op 10123.71 MB/s BenchmarkIndexNonASCII_Bytes/32-4 391943283 3.117 ns/op 10265.23 MB/s BenchmarkIndexNonASCII_Bytes/32-4 387214220 3.187 ns/op 10040.55 MB/s BenchmarkIndexNonASCII_Bytes/32-4 378832660 3.112 ns/op 10282.50 MB/s BenchmarkIndexNonASCII_Bytes/32-4 377009042 3.210 ns/op 9969.37 MB/s BenchmarkIndexNonASCII_Bytes/32-4 378824594 3.181 ns/op 10060.74 MB/s BenchmarkIndexNonASCII_Bytes/32-4 374315745 3.180 ns/op 10063.29 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6254173 191.8 ns/op 21350.73 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6064935 193.4 ns/op 21174.17 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6223749 195.4 ns/op 20965.69 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6375896 193.2 ns/op 21198.75 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6156193 193.9 ns/op 21128.93 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6220135 194.5 ns/op 21055.48 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6168667 191.1 ns/op 21430.58 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6163107 195.0 ns/op 21002.09 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6132080 193.1 ns/op 21214.86 MB/s BenchmarkIndexNonASCII_Bytes/4K-4 6148101 197.1 ns/op 20780.38 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8784 120496 ns/op 34808.72 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 9468 120366 ns/op 34846.38 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8672 120441 ns/op 34824.43 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 9154 126816 ns/op 33073.98 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8666 120552 ns/op 34792.48 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8750 121015 ns/op 34659.37 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8719 120607 ns/op 34776.53 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8672 120132 ns/op 34914.13 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8763 126730 ns/op 33096.47 MB/s BenchmarkIndexNonASCII_Bytes/4M-4 8827 126490 ns/op 33159.16 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 193 5694848 ns/op 11784.14 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 217 5146957 ns/op 13038.55 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 210 5140719 ns/op 13054.37 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 219 5045081 ns/op 13301.84 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 218 5371154 ns/op 12494.31 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 205 5365593 ns/op 12507.26 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 214 5372923 ns/op 12490.20 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 204 5281119 ns/op 12707.32 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 219 5544103 ns/op 12104.55 MB/s BenchmarkIndexNonASCII_Bytes/64M-4 224 5157231 ns/op 13012.58 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2030.912s strcase-0.0.5/internal/benchtest/results/i9-9900K/ 0000775 0000000 0000000 00000000000 14720254634 0021516 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.21/ 0000775 0000000 0000000 00000000000 14720254634 0022246 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.21/cpu.1706904187.07e88bec.txt 0000664 0000000 0000000 00000005146 14720254634 0026121 0 ustar 00root root 0000000 0000000 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 43 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Vendor ID: GenuineIntel Model name: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz CPU family: 6 Model: 158 Thread(s) per core: 1 Core(s) per socket: 8 Socket(s): 1 Stepping: 12 BogoMIPS: 7199.99 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xsaves arat md_clear flush_l1d arch_capabilities Hypervisor vendor: VMware Virtualization type: full L1d cache: 256 KiB (8 instances) L1i cache: 256 KiB (8 instances) L2 cache: 2 MiB (8 instances) L3 cache: 16 MiB (1 instance) NUMA node(s): 1 NUMA node0 CPU(s): 0-7 Vulnerability Gather data sampling: Unknown: Dependent on hypervisor status Vulnerability Itlb multihit: KVM: Mitigation: VMX unsupported Vulnerability L1tf: Not affected Vulnerability Mds: Mitigation; Clear CPU buffers; SMT Host state unknown Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Mitigation; Clear CPU buffers; SMT Host state unknown Vulnerability Retbleed: Mitigation; IBRS Vulnerability Spec rstack overflow: Not affected Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; IBRS, IBPB conditional, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Unknown: Dependent on hypervisor status Vulnerability Tsx async abort: Not affected strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.21/env.1706904187.07e88bec.txt 0000664 0000000 0000000 00000001635 14720254634 0026121 0 ustar 00root root 0000000 0000000 GO111MODULE='auto' GOARCH='amd64' GOBIN='' GOCACHE='/home/cev/.cache/go-build' GOENV='/home/cev/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/cev/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/cev/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/usr/local/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.21.6' GCCGO='gccgo' GOAMD64='v3' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/cev/go/src/github.com/charlievieth/strcase/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3503775297=/tmp/go-build -gno-record-gcc-switches' strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.21/result.10.1706904187.07e88bec.txt 0000664 0000000 0000000 00000045361 14720254634 0027072 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz │ ./stdlib.10.1706904187.07e88bec.txt │ ./strcase.10.1706904187.07e88bec.txt │ │ sec/op │ sec/op vs base │ IndexRune-8 10.87n ± 0% 11.96n ± 1% +10.03% (p=0.000 n=10) IndexRuneLongString-8 14.60n ± 0% 13.53n ± 0% -7.36% (p=0.000 n=10) IndexRuneFastPath-8 3.807n ± 0% 5.981n ± 0% +57.11% (p=0.000 n=10) Index-8 3.925n ± 0% 6.276n ± 0% +59.89% (p=0.000 n=10) LastIndex-8 3.773n ± 0% 5.559n ± 0% +47.32% (p=0.000 n=10) IndexByte-8 2.894n ± 0% 4.627n ± 0% +59.85% (p=0.000 n=10) EqualFold/ASCII-8 9.859n ± 1% 8.474n ± 0% -14.05% (p=0.000 n=10) EqualFold/UnicodePrefix-8 90.05n ± 1% 37.25n ± 0% -58.63% (p=0.000 n=10) EqualFold/UnicodeSuffix-8 81.09n ± 0% 28.36n ± 1% -65.02% (p=0.000 n=10) IndexHard1-8 78.89µ ± 0% 78.52µ ± 0% -0.46% (p=0.011 n=10) IndexHard2-8 110.4µ ± 1% 2195.8µ ± 1% +1888.28% (p=0.000 n=10) IndexHard3-8 442.1µ ± 0% 2027.1µ ± 1% +358.48% (p=0.000 n=10) IndexHard4-8 441.7µ ± 0% 1546.0µ ± 0% +249.99% (p=0.000 n=10) LastIndexHard1-8 1.114m ± 0% 1.625m ± 0% +45.86% (p=0.000 n=10) LastIndexHard2-8 1.111m ± 0% 1.627m ± 1% +46.40% (p=0.000 n=10) LastIndexHard3-8 1.109m ± 1% 1.625m ± 0% +46.50% (p=0.000 n=10) CountHard1-8 78.65µ ± 1% 78.48µ ± 1% ~ (p=0.271 n=10) CountHard2-8 110.4µ ± 1% 2199.4µ ± 0% +1891.91% (p=0.000 n=10) CountHard3-8 442.1µ ± 0% 2018.6µ ± 1% +356.63% (p=0.000 n=10) IndexTorture-8 8.608µ ± 0% 17.625µ ± 0% +104.76% (p=0.000 n=10) CountTorture-8 8.591µ ± 0% 17.866µ ± 0% +107.96% (p=0.000 n=10) CountTortureOverlapping-8 63.84µ ± 3% 3561.93µ ± 0% +5479.86% (p=0.000 n=10) CountByte/10-8 3.362n ± 0% 4.726n ± 0% +40.57% (p=0.000 n=10) CountByte/32-8 4.720n ± 0% 5.078n ± 0% +7.58% (p=0.000 n=10) CountByte/4K-8 63.23n ± 0% 57.64n ± 0% -8.84% (p=0.000 n=10) CountByte/4M-8 82.16µ ± 3% 89.87µ ± 2% +9.38% (p=0.000 n=10) CountByte/64M-8 3.762m ± 2% 3.940m ± 3% +4.74% (p=0.000 n=10) IndexAnyASCII/1:1-8 4.595n ± 0% 6.242n ± 0% +35.83% (p=0.000 n=10) IndexAnyASCII/1:2-8 5.571n ± 0% 8.115n ± 0% +45.68% (p=0.000 n=10) IndexAnyASCII/1:4-8 5.562n ± 1% 8.119n ± 0% +45.96% (p=0.000 n=10) IndexAnyASCII/1:8-8 5.564n ± 0% 8.110n ± 0% +45.77% (p=0.000 n=10) IndexAnyASCII/1:16-8 5.658n ± 1% 7.916n ± 1% +39.92% (p=0.000 n=10) IndexAnyASCII/1:32-8 6.401n ± 0% 8.263n ± 0% +29.09% (p=0.000 n=10) IndexAnyASCII/1:64-8 6.399n ± 1% 8.513n ± 0% +33.04% (p=0.000 n=10) IndexAnyASCII/16:1-8 4.760n ± 0% 6.247n ± 0% +31.24% (p=0.000 n=10) IndexAnyASCII/16:2-8 14.28n ± 1% 18.04n ± 1% +26.37% (p=0.000 n=10) IndexAnyASCII/16:4-8 15.98n ± 1% 18.90n ± 1% +18.24% (p=0.000 n=10) IndexAnyASCII/16:8-8 20.31n ± 1% 21.99n ± 0% +8.27% (p=0.000 n=10) IndexAnyASCII/16:16-8 26.71n ± 1% 31.94n ± 0% +19.56% (p=0.000 n=10) IndexAnyASCII/16:32-8 44.47n ± 0% 55.31n ± 0% +24.38% (p=0.000 n=10) IndexAnyASCII/16:64-8 71.18n ± 0% 92.62n ± 0% +30.11% (p=0.000 n=10) IndexAnyASCII/256:1-8 8.269n ± 0% 10.265n ± 0% +24.13% (p=0.000 n=10) IndexAnyASCII/256:2-8 130.4n ± 0% 144.1n ± 0% +10.51% (p=0.000 n=10) IndexAnyASCII/256:4-8 132.3n ± 0% 146.3n ± 1% +10.54% (p=0.000 n=10) IndexAnyASCII/256:8-8 135.9n ± 0% 150.1n ± 0% +10.41% (p=0.000 n=10) IndexAnyASCII/256:16-8 141.2n ± 0% 161.0n ± 0% +14.02% (p=0.000 n=10) IndexAnyASCII/256:32-8 158.5n ± 0% 187.7n ± 0% +18.46% (p=0.000 n=10) IndexAnyASCII/256:64-8 183.7n ± 0% 225.0n ± 0% +22.48% (p=0.000 n=10) IndexAnyUTF8/1:1-8 3.553n ± 1% 3.489n ± 1% -1.80% (p=0.000 n=10) IndexAnyUTF8/1:2-8 5.484n ± 0% 8.117n ± 0% +48.04% (p=0.000 n=10) IndexAnyUTF8/1:4-8 5.471n ± 1% 8.104n ± 0% +48.14% (p=0.000 n=10) IndexAnyUTF8/1:8-8 5.477n ± 0% 8.078n ± 0% +47.50% (p=0.000 n=10) IndexAnyUTF8/1:16-8 5.536n ± 1% 7.913n ± 0% +42.95% (p=0.000 n=10) IndexAnyUTF8/1:32-8 6.107n ± 0% 8.305n ± 1% +35.98% (p=0.000 n=10) IndexAnyUTF8/1:64-8 6.425n ± 0% 8.527n ± 0% +32.70% (p=0.000 n=10) IndexAnyUTF8/16:1-8 14.50n ± 6% 13.68n ± 5% -5.69% (p=0.025 n=10) IndexAnyUTF8/16:2-8 67.01n ± 0% 32.74n ± 1% -51.15% (p=0.000 n=10) IndexAnyUTF8/16:4-8 67.11n ± 0% 35.81n ± 0% -46.63% (p=0.000 n=10) IndexAnyUTF8/16:8-8 67.08n ± 0% 95.58n ± 0% +42.49% (p=0.000 n=10) IndexAnyUTF8/16:16-8 66.12n ± 0% 100.15n ± 1% +51.48% (p=0.000 n=10) IndexAnyUTF8/16:32-8 72.77n ± 0% 104.65n ± 0% +43.80% (p=0.000 n=10) IndexAnyUTF8/16:64-8 76.63n ± 0% 110.40n ± 1% +44.07% (p=0.000 n=10) IndexAnyUTF8/256:1-8 167.5n ± 0% 167.4n ± 0% ~ (p=0.863 n=10) IndexAnyUTF8/256:2-8 920.1n ± 1% 348.4n ± 0% -62.13% (p=0.000 n=10) IndexAnyUTF8/256:4-8 922.4n ± 0% 193.6n ± 0% -79.01% (p=0.000 n=10) IndexAnyUTF8/256:8-8 919.9n ± 1% 389.1n ± 1% -57.70% (p=0.000 n=10) IndexAnyUTF8/256:16-8 927.8n ± 0% 125.8n ± 0% -86.44% (p=0.000 n=10) IndexAnyUTF8/256:32-8 1035.5n ± 0% 644.1n ± 0% -37.80% (p=0.000 n=10) IndexAnyUTF8/256:64-8 1095.0n ± 0% 766.1n ± 0% -30.04% (p=0.000 n=10) LastIndexAnyASCII/1:1-8 5.125n ± 1% 6.747n ± 1% +31.66% (p=0.000 n=10) LastIndexAnyASCII/1:2-8 5.108n ± 1% 6.716n ± 1% +31.48% (p=0.000 n=10) LastIndexAnyASCII/1:4-8 5.126n ± 1% 6.737n ± 1% +31.43% (p=0.000 n=10) LastIndexAnyASCII/1:8-8 5.125n ± 0% 6.715n ± 0% +31.01% (p=0.000 n=10) LastIndexAnyASCII/1:16-8 4.734n ± 0% 6.459n ± 0% +36.45% (p=0.000 n=10) LastIndexAnyASCII/1:32-8 5.114n ± 1% 6.918n ± 0% +35.29% (p=0.000 n=10) LastIndexAnyASCII/1:64-8 5.256n ± 1% 7.292n ± 0% +38.72% (p=0.000 n=10) LastIndexAnyASCII/16:1-8 13.68n ± 0% 16.57n ± 0% +21.16% (p=0.000 n=10) LastIndexAnyASCII/16:2-8 14.10n ± 0% 16.79n ± 0% +19.12% (p=0.000 n=10) LastIndexAnyASCII/16:4-8 15.92n ± 0% 17.84n ± 0% +12.09% (p=0.000 n=10) LastIndexAnyASCII/16:8-8 20.08n ± 0% 21.42n ± 0% +6.65% (p=0.000 n=10) LastIndexAnyASCII/16:16-8 26.29n ± 0% 31.20n ± 0% +18.67% (p=0.000 n=10) LastIndexAnyASCII/16:32-8 44.71n ± 0% 54.58n ± 0% +22.06% (p=0.000 n=10) LastIndexAnyASCII/16:64-8 71.39n ± 0% 91.95n ± 0% +28.79% (p=0.000 n=10) LastIndexAnyASCII/256:1-8 129.2n ± 0% 131.1n ± 0% +1.47% (p=0.000 n=10) LastIndexAnyASCII/256:2-8 130.1n ± 0% 131.5n ± 0% +1.08% (p=0.000 n=10) LastIndexAnyASCII/256:4-8 132.0n ± 0% 133.5n ± 0% +1.17% (p=0.000 n=10) LastIndexAnyASCII/256:8-8 136.0n ± 0% 138.2n ± 0% +1.62% (p=0.000 n=10) LastIndexAnyASCII/256:16-8 141.3n ± 0% 148.5n ± 0% +5.17% (p=0.000 n=10) LastIndexAnyASCII/256:32-8 158.1n ± 0% 176.1n ± 0% +11.45% (p=0.000 n=10) LastIndexAnyASCII/256:64-8 182.6n ± 0% 213.9n ± 1% +17.14% (p=0.000 n=10) LastIndexAnyUTF8/1:1-8 5.142n ± 1% 6.754n ± 1% +31.35% (p=0.000 n=10) LastIndexAnyUTF8/1:2-8 5.154n ± 1% 6.753n ± 0% +31.02% (p=0.000 n=10) LastIndexAnyUTF8/1:4-8 5.162n ± 1% 6.773n ± 1% +31.22% (p=0.000 n=10) LastIndexAnyUTF8/1:8-8 5.144n ± 0% 6.771n ± 0% +31.65% (p=0.000 n=10) LastIndexAnyUTF8/1:16-8 4.604n ± 0% 6.399n ± 1% +38.99% (p=0.000 n=10) LastIndexAnyUTF8/1:32-8 5.064n ± 0% 6.876n ± 0% +35.77% (p=0.000 n=10) LastIndexAnyUTF8/1:64-8 5.353n ± 1% 7.306n ± 0% +36.51% (p=0.000 n=10) LastIndexAnyUTF8/16:1-8 42.60n ± 1% 32.59n ± 1% -23.49% (p=0.000 n=10) LastIndexAnyUTF8/16:2-8 89.92n ± 1% 111.90n ± 1% +24.44% (p=0.000 n=10) LastIndexAnyUTF8/16:4-8 89.75n ± 1% 111.75n ± 0% +24.51% (p=0.000 n=10) LastIndexAnyUTF8/16:8-8 89.35n ± 0% 111.85n ± 0% +25.18% (p=0.000 n=10) LastIndexAnyUTF8/16:16-8 82.59n ± 1% 114.40n ± 0% +38.51% (p=0.000 n=10) LastIndexAnyUTF8/16:32-8 87.60n ± 0% 120.70n ± 0% +37.79% (p=0.000 n=10) LastIndexAnyUTF8/16:64-8 93.39n ± 0% 128.75n ± 0% +37.87% (p=0.000 n=10) LastIndexAnyUTF8/256:1-8 450.8n ± 0% 457.8n ± 1% +1.58% (p=0.000 n=10) LastIndexAnyUTF8/256:2-8 1.206µ ± 1% 1.619µ ± 0% +34.20% (p=0.000 n=10) LastIndexAnyUTF8/256:4-8 1.201µ ± 2% 1.618µ ± 0% +34.68% (p=0.000 n=10) LastIndexAnyUTF8/256:8-8 1.205µ ± 0% 1.619µ ± 0% +34.36% (p=0.000 n=10) LastIndexAnyUTF8/256:16-8 1.163µ ± 0% 1.670µ ± 0% +43.55% (p=0.000 n=10) LastIndexAnyUTF8/256:32-8 1.270µ ± 0% 1.754µ ± 1% +38.07% (p=0.000 n=10) LastIndexAnyUTF8/256:64-8 1.357µ ± 0% 1.885µ ± 0% +38.91% (p=0.000 n=10) IndexPeriodic/IndexPeriodic2-8 4.990µ ± 0% 55.060µ ± 0% +1003.40% (p=0.000 n=10) IndexPeriodic/IndexPeriodic4-8 4.992µ ± 0% 55.068µ ± 0% +1003.23% (p=0.000 n=10) IndexPeriodic/IndexPeriodic8-8 59.77µ ± 1% 93.58µ ± 0% +56.56% (p=0.000 n=10) IndexPeriodic/IndexPeriodic16-8 29.58µ ± 2% 46.28µ ± 1% +56.42% (p=0.000 n=10) IndexPeriodic/IndexPeriodic32-8 15.14µ ± 5% 23.20µ ± 1% +53.25% (p=0.000 n=10) IndexPeriodic/IndexPeriodic64-8 9.050µ ± 8% 12.564µ ± 3% +38.84% (p=0.000 n=10) IndexByte_Bytes/10-8 3.213n ± 1% 4.062n ± 0% +26.44% (p=0.000 n=10) IndexByte_Bytes/32-8 3.870n ± 1% 4.863n ± 0% +25.64% (p=0.000 n=10) IndexByte_Bytes/4K-8 60.31n ± 0% 72.22n ± 0% +19.75% (p=0.000 n=10) IndexByte_Bytes/4M-8 88.94µ ± 1% 97.23µ ± 1% +9.32% (p=0.000 n=10) IndexByte_Bytes/64M-8 3.268m ± 2% 3.537m ± 3% +8.24% (p=0.000 n=10) IndexRune_Bytes/10-8 10.98n ± 0% 12.62n ± 1% +14.98% (p=0.000 n=10) IndexRune_Bytes/32-8 11.90n ± 0% 13.33n ± 0% +12.11% (p=0.000 n=10) IndexRune_Bytes/4K-8 80.27n ± 0% 79.53n ± 0% -0.93% (p=0.000 n=10) IndexRune_Bytes/4M-8 100.2µ ± 1% 100.4µ ± 2% ~ (p=0.796 n=10) IndexRune_Bytes/64M-8 3.462m ± 3% 3.574m ± 2% +3.23% (p=0.004 n=10) IndexRuneASCII_Bytes/10-8 3.390n ± 0% 6.058n ± 0% +78.70% (p=0.000 n=10) IndexRuneASCII_Bytes/32-8 3.943n ± 0% 7.067n ± 0% +79.19% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-8 60.06n ± 0% 73.78n ± 0% +22.84% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-8 90.94µ ± 2% 96.98µ ± 2% +6.64% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-8 3.418m ± 2% 3.595m ± 1% +5.17% (p=0.000 n=10) IndexNonASCII_Bytes/10-8 3.240n ± 0% 3.153n ± 0% -2.68% (p=0.000 n=10) IndexNonASCII_Bytes/32-8 8.435n ± 0% 3.566n ± 0% -57.73% (p=0.000 n=10) IndexNonASCII_Bytes/4K-8 873.80n ± 0% 70.98n ± 0% -91.88% (p=0.000 n=10) IndexNonASCII_Bytes/4M-8 886.31µ ± 1% 96.39µ ± 4% -89.12% (p=0.000 n=10) IndexNonASCII_Bytes/64M-8 15.093m ± 2% 3.608m ± 2% -76.10% (p=0.000 n=10) geomean 192.8n 237.6n +23.25% │ ./stdlib.10.1706904187.07e88bec.txt │ ./strcase.10.1706904187.07e88bec.txt │ │ B/s │ B/s vs base │ CountByte/10-8 2.770Gi ± 0% 1.971Gi ± 0% -28.86% (p=0.000 n=10) CountByte/32-8 6.314Gi ± 0% 5.869Gi ± 0% -7.05% (p=0.000 n=10) CountByte/4K-8 60.34Gi ± 0% 66.19Gi ± 0% +9.69% (p=0.000 n=10) CountByte/4M-8 47.55Gi ± 3% 43.47Gi ± 2% -8.58% (p=0.000 n=10) CountByte/64M-8 16.61Gi ± 2% 15.86Gi ± 3% -4.52% (p=0.000 n=10) IndexByte_Bytes/10-8 2.899Gi ± 1% 2.293Gi ± 0% -20.91% (p=0.000 n=10) IndexByte_Bytes/32-8 7.700Gi ± 1% 6.128Gi ± 0% -20.41% (p=0.000 n=10) IndexByte_Bytes/4K-8 63.25Gi ± 0% 52.82Gi ± 0% -16.49% (p=0.000 n=10) IndexByte_Bytes/4M-8 43.92Gi ± 1% 40.18Gi ± 1% -8.52% (p=0.000 n=10) IndexByte_Bytes/64M-8 19.13Gi ± 2% 17.67Gi ± 2% -7.62% (p=0.000 n=10) IndexRune_Bytes/10-8 868.3Mi ± 0% 755.4Mi ± 1% -13.00% (p=0.000 n=10) IndexRune_Bytes/32-8 2.506Gi ± 0% 2.235Gi ± 0% -10.82% (p=0.000 n=10) IndexRune_Bytes/4K-8 47.52Gi ± 0% 47.97Gi ± 0% +0.94% (p=0.000 n=10) IndexRune_Bytes/4M-8 38.98Gi ± 1% 38.90Gi ± 2% ~ (p=0.796 n=10) IndexRune_Bytes/64M-8 18.05Gi ± 2% 17.49Gi ± 2% -3.13% (p=0.004 n=10) IndexRuneASCII_Bytes/10-8 2.747Gi ± 0% 1.537Gi ± 0% -44.04% (p=0.000 n=10) IndexRuneASCII_Bytes/32-8 7.558Gi ± 0% 4.217Gi ± 0% -44.20% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-8 63.51Gi ± 0% 51.70Gi ± 0% -18.59% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-8 42.95Gi ± 3% 40.28Gi ± 2% -6.23% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-8 18.28Gi ± 2% 17.39Gi ± 1% -4.92% (p=0.000 n=10) IndexNonASCII_Bytes/10-8 2.874Gi ± 0% 2.953Gi ± 0% +2.75% (p=0.000 n=10) IndexNonASCII_Bytes/32-8 3.533Gi ± 0% 8.357Gi ± 0% +136.52% (p=0.000 n=10) IndexNonASCII_Bytes/4K-8 4.366Gi ± 0% 53.744Gi ± 0% +1131.08% (p=0.000 n=10) IndexNonASCII_Bytes/4M-8 4.407Gi ± 1% 40.524Gi ± 4% +819.47% (p=0.000 n=10) IndexNonASCII_Bytes/64M-8 4.141Gi ± 2% 17.326Gi ± 3% +318.39% (p=0.000 n=10) geomean 10.73Gi 12.61Gi +17.43% strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.21/stdlib.10.1706904187.07e88bec.txt 0000664 0000000 0000000 00000277002 14720254634 0027034 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz BenchmarkIndexRune-8 100000000 10.92 ns/op BenchmarkIndexRune-8 100000000 10.87 ns/op BenchmarkIndexRune-8 100000000 10.86 ns/op BenchmarkIndexRune-8 100000000 10.87 ns/op BenchmarkIndexRune-8 100000000 10.87 ns/op BenchmarkIndexRune-8 100000000 10.84 ns/op BenchmarkIndexRune-8 100000000 10.85 ns/op BenchmarkIndexRune-8 100000000 10.88 ns/op BenchmarkIndexRune-8 100000000 10.89 ns/op BenchmarkIndexRune-8 100000000 10.86 ns/op BenchmarkIndexRuneLongString-8 81808563 14.64 ns/op BenchmarkIndexRuneLongString-8 82671626 14.58 ns/op BenchmarkIndexRuneLongString-8 82834822 14.59 ns/op BenchmarkIndexRuneLongString-8 83102642 14.64 ns/op BenchmarkIndexRuneLongString-8 82048779 14.61 ns/op BenchmarkIndexRuneLongString-8 82899285 14.61 ns/op BenchmarkIndexRuneLongString-8 81694718 14.58 ns/op BenchmarkIndexRuneLongString-8 82524876 14.59 ns/op BenchmarkIndexRuneLongString-8 82646984 14.60 ns/op BenchmarkIndexRuneLongString-8 81360907 14.60 ns/op BenchmarkIndexRuneFastPath-8 313262422 3.803 ns/op BenchmarkIndexRuneFastPath-8 313162611 3.814 ns/op BenchmarkIndexRuneFastPath-8 315721554 3.813 ns/op BenchmarkIndexRuneFastPath-8 313482715 3.826 ns/op BenchmarkIndexRuneFastPath-8 316272112 3.811 ns/op BenchmarkIndexRuneFastPath-8 313899124 3.802 ns/op BenchmarkIndexRuneFastPath-8 315632966 3.795 ns/op BenchmarkIndexRuneFastPath-8 313737876 3.792 ns/op BenchmarkIndexRuneFastPath-8 312687524 3.823 ns/op BenchmarkIndexRuneFastPath-8 315523856 3.800 ns/op BenchmarkIndex-8 306854478 3.925 ns/op BenchmarkIndex-8 305825178 3.924 ns/op BenchmarkIndex-8 306163869 3.913 ns/op BenchmarkIndex-8 305624695 3.913 ns/op BenchmarkIndex-8 306811718 3.925 ns/op BenchmarkIndex-8 302704515 3.925 ns/op BenchmarkIndex-8 307864317 3.927 ns/op BenchmarkIndex-8 304884562 3.900 ns/op BenchmarkIndex-8 305729224 3.928 ns/op BenchmarkIndex-8 305261886 3.952 ns/op BenchmarkLastIndex-8 318129225 3.776 ns/op BenchmarkLastIndex-8 318726951 3.766 ns/op BenchmarkLastIndex-8 316134400 3.783 ns/op BenchmarkLastIndex-8 315577807 3.775 ns/op BenchmarkLastIndex-8 317270952 3.770 ns/op BenchmarkLastIndex-8 317911550 3.787 ns/op BenchmarkLastIndex-8 320467129 3.799 ns/op BenchmarkLastIndex-8 312919620 3.755 ns/op BenchmarkLastIndex-8 321147662 3.767 ns/op BenchmarkLastIndex-8 316605986 3.772 ns/op BenchmarkIndexByte-8 414248193 2.897 ns/op BenchmarkIndexByte-8 419269592 2.892 ns/op BenchmarkIndexByte-8 413316583 2.890 ns/op BenchmarkIndexByte-8 416516468 2.900 ns/op BenchmarkIndexByte-8 412676794 2.916 ns/op BenchmarkIndexByte-8 415679056 2.891 ns/op BenchmarkIndexByte-8 414842282 2.892 ns/op BenchmarkIndexByte-8 414822279 2.906 ns/op BenchmarkIndexByte-8 416289915 2.907 ns/op BenchmarkIndexByte-8 414833203 2.881 ns/op BenchmarkEqualFold/ASCII-8 121183585 9.869 ns/op BenchmarkEqualFold/ASCII-8 120899991 9.915 ns/op BenchmarkEqualFold/ASCII-8 121596354 9.909 ns/op BenchmarkEqualFold/ASCII-8 121539824 9.848 ns/op BenchmarkEqualFold/ASCII-8 121518195 9.831 ns/op BenchmarkEqualFold/ASCII-8 121710057 9.847 ns/op BenchmarkEqualFold/ASCII-8 121295140 9.905 ns/op BenchmarkEqualFold/ASCII-8 121038374 9.843 ns/op BenchmarkEqualFold/ASCII-8 121127296 9.850 ns/op BenchmarkEqualFold/ASCII-8 121575956 9.903 ns/op BenchmarkEqualFold/UnicodePrefix-8 13349762 90.12 ns/op BenchmarkEqualFold/UnicodePrefix-8 13391613 90.85 ns/op BenchmarkEqualFold/UnicodePrefix-8 13236583 89.73 ns/op BenchmarkEqualFold/UnicodePrefix-8 13267689 89.77 ns/op BenchmarkEqualFold/UnicodePrefix-8 13243621 90.19 ns/op BenchmarkEqualFold/UnicodePrefix-8 12699823 90.06 ns/op BenchmarkEqualFold/UnicodePrefix-8 13336118 89.95 ns/op BenchmarkEqualFold/UnicodePrefix-8 13220602 90.04 ns/op BenchmarkEqualFold/UnicodePrefix-8 12755343 90.59 ns/op BenchmarkEqualFold/UnicodePrefix-8 13042226 90.01 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14816595 81.26 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14765194 81.09 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14646596 80.92 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14922687 80.90 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14892194 81.23 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14811102 81.26 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14503399 80.86 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14846167 81.16 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14793958 81.00 ns/op BenchmarkEqualFold/UnicodeSuffix-8 14777666 81.08 ns/op BenchmarkIndexHard1-8 14941 79173 ns/op BenchmarkIndexHard1-8 15243 78978 ns/op BenchmarkIndexHard1-8 15261 78360 ns/op BenchmarkIndexHard1-8 15249 78962 ns/op BenchmarkIndexHard1-8 15247 78840 ns/op BenchmarkIndexHard1-8 15259 78783 ns/op BenchmarkIndexHard1-8 15044 79218 ns/op BenchmarkIndexHard1-8 15340 78782 ns/op BenchmarkIndexHard1-8 15164 78932 ns/op BenchmarkIndexHard1-8 15183 78663 ns/op BenchmarkIndexHard2-8 10850 110880 ns/op BenchmarkIndexHard2-8 10874 109884 ns/op BenchmarkIndexHard2-8 10831 109637 ns/op BenchmarkIndexHard2-8 10749 110475 ns/op BenchmarkIndexHard2-8 10900 110654 ns/op BenchmarkIndexHard2-8 10903 109975 ns/op BenchmarkIndexHard2-8 10844 110272 ns/op BenchmarkIndexHard2-8 10888 110510 ns/op BenchmarkIndexHard2-8 10875 110698 ns/op BenchmarkIndexHard2-8 10912 110400 ns/op BenchmarkIndexHard3-8 2526 443707 ns/op BenchmarkIndexHard3-8 2546 440787 ns/op BenchmarkIndexHard3-8 2570 442558 ns/op BenchmarkIndexHard3-8 2566 448866 ns/op BenchmarkIndexHard3-8 2574 443594 ns/op BenchmarkIndexHard3-8 2551 442986 ns/op BenchmarkIndexHard3-8 2572 441125 ns/op BenchmarkIndexHard3-8 2564 439810 ns/op BenchmarkIndexHard3-8 2606 441730 ns/op BenchmarkIndexHard3-8 2550 440233 ns/op BenchmarkIndexHard4-8 2578 441963 ns/op BenchmarkIndexHard4-8 2498 442357 ns/op BenchmarkIndexHard4-8 2601 440643 ns/op BenchmarkIndexHard4-8 2608 441521 ns/op BenchmarkIndexHard4-8 2577 441331 ns/op BenchmarkIndexHard4-8 2581 442301 ns/op BenchmarkIndexHard4-8 2598 442522 ns/op BenchmarkIndexHard4-8 2564 440094 ns/op BenchmarkIndexHard4-8 2584 443305 ns/op BenchmarkIndexHard4-8 2614 440472 ns/op BenchmarkLastIndexHard1-8 1045 1109174 ns/op BenchmarkLastIndexHard1-8 1042 1115929 ns/op BenchmarkLastIndexHard1-8 1060 1116483 ns/op BenchmarkLastIndexHard1-8 1050 1112885 ns/op BenchmarkLastIndexHard1-8 1050 1114580 ns/op BenchmarkLastIndexHard1-8 1042 1112999 ns/op BenchmarkLastIndexHard1-8 1068 1116952 ns/op BenchmarkLastIndexHard1-8 1045 1108556 ns/op BenchmarkLastIndexHard1-8 1008 1119125 ns/op BenchmarkLastIndexHard1-8 1054 1107086 ns/op BenchmarkLastIndexHard2-8 1044 1111614 ns/op BenchmarkLastIndexHard2-8 1052 1110537 ns/op BenchmarkLastIndexHard2-8 1030 1107816 ns/op BenchmarkLastIndexHard2-8 1069 1109070 ns/op BenchmarkLastIndexHard2-8 1054 1114313 ns/op BenchmarkLastIndexHard2-8 1059 1110053 ns/op BenchmarkLastIndexHard2-8 1058 1105061 ns/op BenchmarkLastIndexHard2-8 1060 1115148 ns/op BenchmarkLastIndexHard2-8 1050 1115281 ns/op BenchmarkLastIndexHard2-8 1034 1111642 ns/op BenchmarkLastIndexHard3-8 1054 1110073 ns/op BenchmarkLastIndexHard3-8 1056 1110190 ns/op BenchmarkLastIndexHard3-8 1057 1108307 ns/op BenchmarkLastIndexHard3-8 1051 1110222 ns/op BenchmarkLastIndexHard3-8 1057 1106954 ns/op BenchmarkLastIndexHard3-8 1053 1106803 ns/op BenchmarkLastIndexHard3-8 1015 1108563 ns/op BenchmarkLastIndexHard3-8 1057 1118031 ns/op BenchmarkLastIndexHard3-8 1045 1114966 ns/op BenchmarkLastIndexHard3-8 1057 1107589 ns/op BenchmarkCountHard1-8 15189 78658 ns/op BenchmarkCountHard1-8 15321 78616 ns/op BenchmarkCountHard1-8 15206 79057 ns/op BenchmarkCountHard1-8 15242 78564 ns/op BenchmarkCountHard1-8 15247 78501 ns/op BenchmarkCountHard1-8 15100 78654 ns/op BenchmarkCountHard1-8 15271 78648 ns/op BenchmarkCountHard1-8 15255 78418 ns/op BenchmarkCountHard1-8 15242 80066 ns/op BenchmarkCountHard1-8 15210 78806 ns/op BenchmarkCountHard2-8 10836 110027 ns/op BenchmarkCountHard2-8 10894 110521 ns/op BenchmarkCountHard2-8 10893 110541 ns/op BenchmarkCountHard2-8 10897 111445 ns/op BenchmarkCountHard2-8 10863 110316 ns/op BenchmarkCountHard2-8 10849 111019 ns/op BenchmarkCountHard2-8 10807 110546 ns/op BenchmarkCountHard2-8 10892 110071 ns/op BenchmarkCountHard2-8 10851 110148 ns/op BenchmarkCountHard2-8 10826 110233 ns/op BenchmarkCountHard3-8 2554 440918 ns/op BenchmarkCountHard3-8 2604 442063 ns/op BenchmarkCountHard3-8 2528 441507 ns/op BenchmarkCountHard3-8 2506 444108 ns/op BenchmarkCountHard3-8 2528 440999 ns/op BenchmarkCountHard3-8 2571 443240 ns/op BenchmarkCountHard3-8 2560 443083 ns/op BenchmarkCountHard3-8 2544 440756 ns/op BenchmarkCountHard3-8 2577 442064 ns/op BenchmarkCountHard3-8 2538 442611 ns/op BenchmarkIndexTorture-8 138958 8618 ns/op BenchmarkIndexTorture-8 139479 8641 ns/op BenchmarkIndexTorture-8 138410 8604 ns/op BenchmarkIndexTorture-8 138967 8598 ns/op BenchmarkIndexTorture-8 139011 8560 ns/op BenchmarkIndexTorture-8 139435 8573 ns/op BenchmarkIndexTorture-8 138154 8611 ns/op BenchmarkIndexTorture-8 139222 8631 ns/op BenchmarkIndexTorture-8 138806 8597 ns/op BenchmarkIndexTorture-8 139734 8611 ns/op BenchmarkCountTorture-8 138860 8594 ns/op BenchmarkCountTorture-8 138975 8601 ns/op BenchmarkCountTorture-8 140424 8588 ns/op BenchmarkCountTorture-8 138609 8586 ns/op BenchmarkCountTorture-8 139065 8566 ns/op BenchmarkCountTorture-8 140223 8641 ns/op BenchmarkCountTorture-8 138098 8567 ns/op BenchmarkCountTorture-8 139239 8583 ns/op BenchmarkCountTorture-8 138504 8624 ns/op BenchmarkCountTorture-8 139170 8628 ns/op BenchmarkCountTortureOverlapping-8 17336 63862 ns/op BenchmarkCountTortureOverlapping-8 18781 63202 ns/op BenchmarkCountTortureOverlapping-8 18960 63903 ns/op BenchmarkCountTortureOverlapping-8 19370 61839 ns/op BenchmarkCountTortureOverlapping-8 18228 65789 ns/op BenchmarkCountTortureOverlapping-8 17812 63809 ns/op BenchmarkCountTortureOverlapping-8 18073 65689 ns/op BenchmarkCountTortureOverlapping-8 17896 65673 ns/op BenchmarkCountTortureOverlapping-8 17904 62577 ns/op BenchmarkCountTortureOverlapping-8 18570 62266 ns/op BenchmarkCountByte/10-8 357444127 3.371 ns/op 2966.68 MB/s BenchmarkCountByte/10-8 355955575 3.358 ns/op 2977.79 MB/s BenchmarkCountByte/10-8 358688476 3.371 ns/op 2966.35 MB/s BenchmarkCountByte/10-8 349534176 3.358 ns/op 2978.00 MB/s BenchmarkCountByte/10-8 355127389 3.419 ns/op 2924.53 MB/s BenchmarkCountByte/10-8 350415705 3.356 ns/op 2979.95 MB/s BenchmarkCountByte/10-8 356651890 3.346 ns/op 2988.94 MB/s BenchmarkCountByte/10-8 353320161 3.361 ns/op 2975.10 MB/s BenchmarkCountByte/10-8 356147058 3.363 ns/op 2973.37 MB/s BenchmarkCountByte/10-8 356389002 3.369 ns/op 2968.52 MB/s BenchmarkCountByte/32-8 253498107 4.721 ns/op 6778.56 MB/s BenchmarkCountByte/32-8 255761149 4.745 ns/op 6744.52 MB/s BenchmarkCountByte/32-8 252521116 4.728 ns/op 6767.48 MB/s BenchmarkCountByte/32-8 254935538 4.728 ns/op 6768.62 MB/s BenchmarkCountByte/32-8 256767223 4.700 ns/op 6807.97 MB/s BenchmarkCountByte/32-8 254045896 4.714 ns/op 6788.98 MB/s BenchmarkCountByte/32-8 255406698 4.735 ns/op 6758.54 MB/s BenchmarkCountByte/32-8 254508907 4.707 ns/op 6799.01 MB/s BenchmarkCountByte/32-8 253475809 4.709 ns/op 6795.05 MB/s BenchmarkCountByte/32-8 252609903 4.719 ns/op 6780.96 MB/s BenchmarkCountByte/4K-8 18738866 63.18 ns/op 64829.13 MB/s BenchmarkCountByte/4K-8 18956278 63.27 ns/op 64742.71 MB/s BenchmarkCountByte/4K-8 19062505 63.02 ns/op 64990.36 MB/s BenchmarkCountByte/4K-8 18785667 63.15 ns/op 64864.15 MB/s BenchmarkCountByte/4K-8 18871862 62.83 ns/op 65194.61 MB/s BenchmarkCountByte/4K-8 18749769 63.46 ns/op 64546.19 MB/s BenchmarkCountByte/4K-8 19074174 63.34 ns/op 64664.74 MB/s BenchmarkCountByte/4K-8 18897314 63.37 ns/op 64636.11 MB/s BenchmarkCountByte/4K-8 19032992 63.12 ns/op 64896.03 MB/s BenchmarkCountByte/4K-8 18794116 63.39 ns/op 64612.87 MB/s BenchmarkCountByte/4M-8 13828 80920 ns/op 51832.94 MB/s BenchmarkCountByte/4M-8 14349 82906 ns/op 50591.34 MB/s BenchmarkCountByte/4M-8 14968 84001 ns/op 49931.35 MB/s BenchmarkCountByte/4M-8 14745 81418 ns/op 51515.64 MB/s BenchmarkCountByte/4M-8 14445 84173 ns/op 49829.35 MB/s BenchmarkCountByte/4M-8 14719 86524 ns/op 48475.38 MB/s BenchmarkCountByte/4M-8 14806 84557 ns/op 49603.00 MB/s BenchmarkCountByte/4M-8 14562 81386 ns/op 51536.14 MB/s BenchmarkCountByte/4M-8 14871 80924 ns/op 51830.14 MB/s BenchmarkCountByte/4M-8 14329 79791 ns/op 52566.11 MB/s BenchmarkCountByte/64M-8 302 3887308 ns/op 17263.58 MB/s BenchmarkCountByte/64M-8 310 3836820 ns/op 17490.75 MB/s BenchmarkCountByte/64M-8 325 3649060 ns/op 18390.73 MB/s BenchmarkCountByte/64M-8 295 3799253 ns/op 17663.70 MB/s BenchmarkCountByte/64M-8 306 3762811 ns/op 17834.77 MB/s BenchmarkCountByte/64M-8 295 3804952 ns/op 17637.25 MB/s BenchmarkCountByte/64M-8 309 3727640 ns/op 18003.04 MB/s BenchmarkCountByte/64M-8 312 3761227 ns/op 17842.28 MB/s BenchmarkCountByte/64M-8 328 3713213 ns/op 18072.99 MB/s BenchmarkCountByte/64M-8 301 3759337 ns/op 17851.25 MB/s BenchmarkIndexAnyASCII/1:1-8 259239321 4.593 ns/op BenchmarkIndexAnyASCII/1:1-8 261849216 4.598 ns/op BenchmarkIndexAnyASCII/1:1-8 261588954 4.586 ns/op BenchmarkIndexAnyASCII/1:1-8 259091756 4.598 ns/op BenchmarkIndexAnyASCII/1:1-8 263085438 4.587 ns/op BenchmarkIndexAnyASCII/1:1-8 260356846 4.602 ns/op BenchmarkIndexAnyASCII/1:1-8 259854750 4.588 ns/op BenchmarkIndexAnyASCII/1:1-8 261745863 4.590 ns/op BenchmarkIndexAnyASCII/1:1-8 258866966 4.610 ns/op BenchmarkIndexAnyASCII/1:1-8 258777616 4.601 ns/op BenchmarkIndexAnyASCII/1:2-8 216044523 5.571 ns/op BenchmarkIndexAnyASCII/1:2-8 216515760 5.570 ns/op BenchmarkIndexAnyASCII/1:2-8 213528699 5.584 ns/op BenchmarkIndexAnyASCII/1:2-8 216256788 5.555 ns/op BenchmarkIndexAnyASCII/1:2-8 217100497 5.594 ns/op BenchmarkIndexAnyASCII/1:2-8 214608790 5.555 ns/op BenchmarkIndexAnyASCII/1:2-8 215354682 5.555 ns/op BenchmarkIndexAnyASCII/1:2-8 214024527 5.603 ns/op BenchmarkIndexAnyASCII/1:2-8 216296152 5.549 ns/op BenchmarkIndexAnyASCII/1:2-8 216182382 5.581 ns/op BenchmarkIndexAnyASCII/1:4-8 214608676 5.577 ns/op BenchmarkIndexAnyASCII/1:4-8 213485959 5.564 ns/op BenchmarkIndexAnyASCII/1:4-8 215554814 5.607 ns/op BenchmarkIndexAnyASCII/1:4-8 215396482 5.615 ns/op BenchmarkIndexAnyASCII/1:4-8 214425080 5.546 ns/op BenchmarkIndexAnyASCII/1:4-8 215668695 5.547 ns/op BenchmarkIndexAnyASCII/1:4-8 214012210 5.560 ns/op BenchmarkIndexAnyASCII/1:4-8 216197428 5.557 ns/op BenchmarkIndexAnyASCII/1:4-8 215732438 5.558 ns/op BenchmarkIndexAnyASCII/1:4-8 213930834 5.567 ns/op BenchmarkIndexAnyASCII/1:8-8 215550654 5.553 ns/op BenchmarkIndexAnyASCII/1:8-8 210929664 5.562 ns/op BenchmarkIndexAnyASCII/1:8-8 214973156 5.567 ns/op BenchmarkIndexAnyASCII/1:8-8 214374777 5.573 ns/op BenchmarkIndexAnyASCII/1:8-8 216385249 5.609 ns/op BenchmarkIndexAnyASCII/1:8-8 213555948 5.581 ns/op BenchmarkIndexAnyASCII/1:8-8 216353803 5.557 ns/op BenchmarkIndexAnyASCII/1:8-8 215800419 5.556 ns/op BenchmarkIndexAnyASCII/1:8-8 214597341 5.558 ns/op BenchmarkIndexAnyASCII/1:8-8 215966178 5.565 ns/op BenchmarkIndexAnyASCII/1:16-8 212638113 5.643 ns/op BenchmarkIndexAnyASCII/1:16-8 210680930 5.675 ns/op BenchmarkIndexAnyASCII/1:16-8 209791024 5.645 ns/op BenchmarkIndexAnyASCII/1:16-8 212190351 5.640 ns/op BenchmarkIndexAnyASCII/1:16-8 213896936 5.669 ns/op BenchmarkIndexAnyASCII/1:16-8 213309181 5.695 ns/op BenchmarkIndexAnyASCII/1:16-8 210661762 5.657 ns/op BenchmarkIndexAnyASCII/1:16-8 211163710 5.659 ns/op BenchmarkIndexAnyASCII/1:16-8 210120134 5.723 ns/op BenchmarkIndexAnyASCII/1:16-8 211493253 5.656 ns/op BenchmarkIndexAnyASCII/1:32-8 186170229 6.386 ns/op BenchmarkIndexAnyASCII/1:32-8 186624753 6.392 ns/op BenchmarkIndexAnyASCII/1:32-8 187476824 6.408 ns/op BenchmarkIndexAnyASCII/1:32-8 187431254 6.400 ns/op BenchmarkIndexAnyASCII/1:32-8 187818195 6.405 ns/op BenchmarkIndexAnyASCII/1:32-8 187627232 6.385 ns/op BenchmarkIndexAnyASCII/1:32-8 187665598 6.419 ns/op BenchmarkIndexAnyASCII/1:32-8 187124744 6.402 ns/op BenchmarkIndexAnyASCII/1:32-8 187344405 6.394 ns/op BenchmarkIndexAnyASCII/1:32-8 188748153 6.405 ns/op BenchmarkIndexAnyASCII/1:64-8 186726740 6.347 ns/op BenchmarkIndexAnyASCII/1:64-8 186294495 6.458 ns/op BenchmarkIndexAnyASCII/1:64-8 187197789 6.391 ns/op BenchmarkIndexAnyASCII/1:64-8 188606256 6.430 ns/op BenchmarkIndexAnyASCII/1:64-8 187923262 6.401 ns/op BenchmarkIndexAnyASCII/1:64-8 188064032 6.397 ns/op BenchmarkIndexAnyASCII/1:64-8 186748376 6.352 ns/op BenchmarkIndexAnyASCII/1:64-8 187998950 6.411 ns/op BenchmarkIndexAnyASCII/1:64-8 187041603 6.383 ns/op BenchmarkIndexAnyASCII/1:64-8 189242847 6.440 ns/op BenchmarkIndexAnyASCII/16:1-8 252819651 4.763 ns/op BenchmarkIndexAnyASCII/16:1-8 250146559 4.766 ns/op BenchmarkIndexAnyASCII/16:1-8 251499426 4.759 ns/op BenchmarkIndexAnyASCII/16:1-8 250278663 4.745 ns/op BenchmarkIndexAnyASCII/16:1-8 251271430 4.811 ns/op BenchmarkIndexAnyASCII/16:1-8 251939644 4.758 ns/op BenchmarkIndexAnyASCII/16:1-8 250307636 4.761 ns/op BenchmarkIndexAnyASCII/16:1-8 251730178 4.746 ns/op BenchmarkIndexAnyASCII/16:1-8 250656950 4.768 ns/op BenchmarkIndexAnyASCII/16:1-8 251613320 4.750 ns/op BenchmarkIndexAnyASCII/16:2-8 82840998 14.27 ns/op BenchmarkIndexAnyASCII/16:2-8 82689195 14.28 ns/op BenchmarkIndexAnyASCII/16:2-8 82647354 14.29 ns/op BenchmarkIndexAnyASCII/16:2-8 84776781 14.27 ns/op BenchmarkIndexAnyASCII/16:2-8 79913404 14.41 ns/op BenchmarkIndexAnyASCII/16:2-8 84966428 14.30 ns/op BenchmarkIndexAnyASCII/16:2-8 80742018 14.36 ns/op BenchmarkIndexAnyASCII/16:2-8 82922595 14.26 ns/op BenchmarkIndexAnyASCII/16:2-8 83457998 14.28 ns/op BenchmarkIndexAnyASCII/16:2-8 81959475 14.21 ns/op BenchmarkIndexAnyASCII/16:4-8 74425725 16.18 ns/op BenchmarkIndexAnyASCII/16:4-8 73831268 16.12 ns/op BenchmarkIndexAnyASCII/16:4-8 73137324 16.00 ns/op BenchmarkIndexAnyASCII/16:4-8 72245713 15.98 ns/op BenchmarkIndexAnyASCII/16:4-8 73856929 15.92 ns/op BenchmarkIndexAnyASCII/16:4-8 75028435 15.98 ns/op BenchmarkIndexAnyASCII/16:4-8 71239006 15.99 ns/op BenchmarkIndexAnyASCII/16:4-8 76210048 15.89 ns/op BenchmarkIndexAnyASCII/16:4-8 71401552 16.02 ns/op BenchmarkIndexAnyASCII/16:4-8 73594844 15.93 ns/op BenchmarkIndexAnyASCII/16:8-8 58619048 20.31 ns/op BenchmarkIndexAnyASCII/16:8-8 54158019 20.44 ns/op BenchmarkIndexAnyASCII/16:8-8 58876066 20.31 ns/op BenchmarkIndexAnyASCII/16:8-8 59019261 20.37 ns/op BenchmarkIndexAnyASCII/16:8-8 58388406 20.24 ns/op BenchmarkIndexAnyASCII/16:8-8 58610456 20.28 ns/op BenchmarkIndexAnyASCII/16:8-8 58701165 20.28 ns/op BenchmarkIndexAnyASCII/16:8-8 58582939 20.15 ns/op BenchmarkIndexAnyASCII/16:8-8 55332477 20.47 ns/op BenchmarkIndexAnyASCII/16:8-8 58661652 20.31 ns/op BenchmarkIndexAnyASCII/16:16-8 43470718 26.98 ns/op BenchmarkIndexAnyASCII/16:16-8 39526617 26.64 ns/op BenchmarkIndexAnyASCII/16:16-8 40040870 26.87 ns/op BenchmarkIndexAnyASCII/16:16-8 45132594 26.74 ns/op BenchmarkIndexAnyASCII/16:16-8 44720994 26.67 ns/op BenchmarkIndexAnyASCII/16:16-8 41439799 26.76 ns/op BenchmarkIndexAnyASCII/16:16-8 44652614 26.79 ns/op BenchmarkIndexAnyASCII/16:16-8 44533234 26.69 ns/op BenchmarkIndexAnyASCII/16:16-8 44730903 26.68 ns/op BenchmarkIndexAnyASCII/16:16-8 44778464 26.64 ns/op BenchmarkIndexAnyASCII/16:32-8 26843290 44.61 ns/op BenchmarkIndexAnyASCII/16:32-8 26756335 44.32 ns/op BenchmarkIndexAnyASCII/16:32-8 27208256 44.34 ns/op BenchmarkIndexAnyASCII/16:32-8 26978215 44.41 ns/op BenchmarkIndexAnyASCII/16:32-8 26236696 44.57 ns/op BenchmarkIndexAnyASCII/16:32-8 27089958 44.36 ns/op BenchmarkIndexAnyASCII/16:32-8 27184750 44.32 ns/op BenchmarkIndexAnyASCII/16:32-8 27306739 44.53 ns/op BenchmarkIndexAnyASCII/16:32-8 26748126 44.68 ns/op BenchmarkIndexAnyASCII/16:32-8 26835628 44.60 ns/op BenchmarkIndexAnyASCII/16:64-8 16841242 71.21 ns/op BenchmarkIndexAnyASCII/16:64-8 16813377 71.00 ns/op BenchmarkIndexAnyASCII/16:64-8 16770273 71.38 ns/op BenchmarkIndexAnyASCII/16:64-8 16342591 71.07 ns/op BenchmarkIndexAnyASCII/16:64-8 16787936 71.24 ns/op BenchmarkIndexAnyASCII/16:64-8 16771742 71.26 ns/op BenchmarkIndexAnyASCII/16:64-8 16654234 71.38 ns/op BenchmarkIndexAnyASCII/16:64-8 16733668 71.11 ns/op BenchmarkIndexAnyASCII/16:64-8 16966525 71.16 ns/op BenchmarkIndexAnyASCII/16:64-8 16781295 71.16 ns/op BenchmarkIndexAnyASCII/256:1-8 145532989 8.280 ns/op BenchmarkIndexAnyASCII/256:1-8 145190512 8.252 ns/op BenchmarkIndexAnyASCII/256:1-8 146019109 8.282 ns/op BenchmarkIndexAnyASCII/256:1-8 145456357 8.269 ns/op BenchmarkIndexAnyASCII/256:1-8 145198132 8.270 ns/op BenchmarkIndexAnyASCII/256:1-8 145160133 8.282 ns/op BenchmarkIndexAnyASCII/256:1-8 144850587 8.234 ns/op BenchmarkIndexAnyASCII/256:1-8 145034535 8.254 ns/op BenchmarkIndexAnyASCII/256:1-8 145473170 8.298 ns/op BenchmarkIndexAnyASCII/256:1-8 145400841 8.238 ns/op BenchmarkIndexAnyASCII/256:2-8 9184922 130.4 ns/op BenchmarkIndexAnyASCII/256:2-8 9287757 130.0 ns/op BenchmarkIndexAnyASCII/256:2-8 9152734 130.9 ns/op BenchmarkIndexAnyASCII/256:2-8 9188881 130.4 ns/op BenchmarkIndexAnyASCII/256:2-8 9148406 130.1 ns/op BenchmarkIndexAnyASCII/256:2-8 9171679 130.0 ns/op BenchmarkIndexAnyASCII/256:2-8 9176733 130.6 ns/op BenchmarkIndexAnyASCII/256:2-8 9168006 131.1 ns/op BenchmarkIndexAnyASCII/256:2-8 9162747 130.3 ns/op BenchmarkIndexAnyASCII/256:2-8 9279249 130.8 ns/op BenchmarkIndexAnyASCII/256:4-8 8999001 132.4 ns/op BenchmarkIndexAnyASCII/256:4-8 9017643 132.2 ns/op BenchmarkIndexAnyASCII/256:4-8 9014912 132.0 ns/op BenchmarkIndexAnyASCII/256:4-8 9104146 132.5 ns/op BenchmarkIndexAnyASCII/256:4-8 8908309 132.0 ns/op BenchmarkIndexAnyASCII/256:4-8 9055051 132.6 ns/op BenchmarkIndexAnyASCII/256:4-8 9070580 132.3 ns/op BenchmarkIndexAnyASCII/256:4-8 8833833 132.3 ns/op BenchmarkIndexAnyASCII/256:4-8 9015026 132.6 ns/op BenchmarkIndexAnyASCII/256:4-8 9040465 132.2 ns/op BenchmarkIndexAnyASCII/256:8-8 8654146 135.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8902814 135.9 ns/op BenchmarkIndexAnyASCII/256:8-8 8913799 135.7 ns/op BenchmarkIndexAnyASCII/256:8-8 8632575 135.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8830146 136.2 ns/op BenchmarkIndexAnyASCII/256:8-8 8897124 136.7 ns/op BenchmarkIndexAnyASCII/256:8-8 8664096 136.1 ns/op BenchmarkIndexAnyASCII/256:8-8 8778753 136.0 ns/op BenchmarkIndexAnyASCII/256:8-8 8858817 135.0 ns/op BenchmarkIndexAnyASCII/256:8-8 8749563 136.1 ns/op BenchmarkIndexAnyASCII/256:16-8 8547454 141.6 ns/op BenchmarkIndexAnyASCII/256:16-8 8469080 141.1 ns/op BenchmarkIndexAnyASCII/256:16-8 8401513 141.1 ns/op BenchmarkIndexAnyASCII/256:16-8 8513094 140.6 ns/op BenchmarkIndexAnyASCII/256:16-8 8560328 140.7 ns/op BenchmarkIndexAnyASCII/256:16-8 8397420 141.1 ns/op BenchmarkIndexAnyASCII/256:16-8 8496186 141.6 ns/op BenchmarkIndexAnyASCII/256:16-8 8521977 141.3 ns/op BenchmarkIndexAnyASCII/256:16-8 8273317 141.7 ns/op BenchmarkIndexAnyASCII/256:16-8 8500112 142.0 ns/op BenchmarkIndexAnyASCII/256:32-8 7602800 158.0 ns/op BenchmarkIndexAnyASCII/256:32-8 7386597 158.2 ns/op BenchmarkIndexAnyASCII/256:32-8 7573038 158.3 ns/op BenchmarkIndexAnyASCII/256:32-8 7600689 158.2 ns/op BenchmarkIndexAnyASCII/256:32-8 7458097 158.9 ns/op BenchmarkIndexAnyASCII/256:32-8 7596996 158.9 ns/op BenchmarkIndexAnyASCII/256:32-8 7564106 158.5 ns/op BenchmarkIndexAnyASCII/256:32-8 7512630 159.3 ns/op BenchmarkIndexAnyASCII/256:32-8 7581243 158.4 ns/op BenchmarkIndexAnyASCII/256:32-8 7583169 158.9 ns/op BenchmarkIndexAnyASCII/256:64-8 6526525 183.1 ns/op BenchmarkIndexAnyASCII/256:64-8 6486126 183.2 ns/op BenchmarkIndexAnyASCII/256:64-8 6369270 184.1 ns/op BenchmarkIndexAnyASCII/256:64-8 6414565 183.6 ns/op BenchmarkIndexAnyASCII/256:64-8 6555418 184.1 ns/op BenchmarkIndexAnyASCII/256:64-8 6494761 184.0 ns/op BenchmarkIndexAnyASCII/256:64-8 6516728 183.8 ns/op BenchmarkIndexAnyASCII/256:64-8 6436020 183.3 ns/op BenchmarkIndexAnyASCII/256:64-8 6553184 182.9 ns/op BenchmarkIndexAnyASCII/256:64-8 6562798 184.2 ns/op BenchmarkIndexAnyUTF8/1:1-8 335305551 3.545 ns/op BenchmarkIndexAnyUTF8/1:1-8 339058456 3.574 ns/op BenchmarkIndexAnyUTF8/1:1-8 334488382 3.572 ns/op BenchmarkIndexAnyUTF8/1:1-8 338512549 3.552 ns/op BenchmarkIndexAnyUTF8/1:1-8 338946222 3.554 ns/op BenchmarkIndexAnyUTF8/1:1-8 335028372 3.536 ns/op BenchmarkIndexAnyUTF8/1:1-8 337292857 3.542 ns/op BenchmarkIndexAnyUTF8/1:1-8 334883157 3.556 ns/op BenchmarkIndexAnyUTF8/1:1-8 335202194 3.565 ns/op BenchmarkIndexAnyUTF8/1:1-8 336659328 3.540 ns/op BenchmarkIndexAnyUTF8/1:2-8 218387858 5.472 ns/op BenchmarkIndexAnyUTF8/1:2-8 219094240 5.446 ns/op BenchmarkIndexAnyUTF8/1:2-8 218191918 5.491 ns/op BenchmarkIndexAnyUTF8/1:2-8 217431432 5.511 ns/op BenchmarkIndexAnyUTF8/1:2-8 218538378 5.457 ns/op BenchmarkIndexAnyUTF8/1:2-8 220727503 5.491 ns/op BenchmarkIndexAnyUTF8/1:2-8 215373229 5.477 ns/op BenchmarkIndexAnyUTF8/1:2-8 217495255 5.458 ns/op BenchmarkIndexAnyUTF8/1:2-8 217895761 5.490 ns/op BenchmarkIndexAnyUTF8/1:2-8 220404351 5.508 ns/op BenchmarkIndexAnyUTF8/1:4-8 219329070 5.491 ns/op BenchmarkIndexAnyUTF8/1:4-8 218194110 5.452 ns/op BenchmarkIndexAnyUTF8/1:4-8 218509653 5.472 ns/op BenchmarkIndexAnyUTF8/1:4-8 220869078 5.482 ns/op BenchmarkIndexAnyUTF8/1:4-8 219043372 5.518 ns/op BenchmarkIndexAnyUTF8/1:4-8 217444840 5.470 ns/op BenchmarkIndexAnyUTF8/1:4-8 217685434 5.450 ns/op BenchmarkIndexAnyUTF8/1:4-8 218065831 5.464 ns/op BenchmarkIndexAnyUTF8/1:4-8 219477656 5.466 ns/op BenchmarkIndexAnyUTF8/1:4-8 215907819 5.513 ns/op BenchmarkIndexAnyUTF8/1:8-8 219099703 5.497 ns/op BenchmarkIndexAnyUTF8/1:8-8 218897348 5.485 ns/op BenchmarkIndexAnyUTF8/1:8-8 216611110 5.501 ns/op BenchmarkIndexAnyUTF8/1:8-8 217244806 5.457 ns/op BenchmarkIndexAnyUTF8/1:8-8 219824564 5.474 ns/op BenchmarkIndexAnyUTF8/1:8-8 218799201 5.471 ns/op BenchmarkIndexAnyUTF8/1:8-8 218310735 5.517 ns/op BenchmarkIndexAnyUTF8/1:8-8 217739292 5.477 ns/op BenchmarkIndexAnyUTF8/1:8-8 219031880 5.472 ns/op BenchmarkIndexAnyUTF8/1:8-8 221153808 5.476 ns/op BenchmarkIndexAnyUTF8/1:16-8 214233212 5.582 ns/op BenchmarkIndexAnyUTF8/1:16-8 218123792 5.499 ns/op BenchmarkIndexAnyUTF8/1:16-8 220260042 5.546 ns/op BenchmarkIndexAnyUTF8/1:16-8 216593722 5.523 ns/op BenchmarkIndexAnyUTF8/1:16-8 215441259 5.500 ns/op BenchmarkIndexAnyUTF8/1:16-8 219376082 5.526 ns/op BenchmarkIndexAnyUTF8/1:16-8 218962431 5.555 ns/op BenchmarkIndexAnyUTF8/1:16-8 216940902 5.597 ns/op BenchmarkIndexAnyUTF8/1:16-8 218455088 5.485 ns/op BenchmarkIndexAnyUTF8/1:16-8 217474927 5.548 ns/op BenchmarkIndexAnyUTF8/1:32-8 198251142 6.107 ns/op BenchmarkIndexAnyUTF8/1:32-8 198786859 6.087 ns/op BenchmarkIndexAnyUTF8/1:32-8 197831594 6.120 ns/op BenchmarkIndexAnyUTF8/1:32-8 197377803 6.098 ns/op BenchmarkIndexAnyUTF8/1:32-8 195701401 6.108 ns/op BenchmarkIndexAnyUTF8/1:32-8 196872531 6.129 ns/op BenchmarkIndexAnyUTF8/1:32-8 196711909 6.096 ns/op BenchmarkIndexAnyUTF8/1:32-8 198644078 6.097 ns/op BenchmarkIndexAnyUTF8/1:32-8 196831748 6.170 ns/op BenchmarkIndexAnyUTF8/1:32-8 191979585 6.119 ns/op BenchmarkIndexAnyUTF8/1:64-8 186374990 6.400 ns/op BenchmarkIndexAnyUTF8/1:64-8 186611143 6.424 ns/op BenchmarkIndexAnyUTF8/1:64-8 187331630 6.427 ns/op BenchmarkIndexAnyUTF8/1:64-8 187446747 6.406 ns/op BenchmarkIndexAnyUTF8/1:64-8 186218025 6.438 ns/op BenchmarkIndexAnyUTF8/1:64-8 185924431 6.427 ns/op BenchmarkIndexAnyUTF8/1:64-8 185970192 6.435 ns/op BenchmarkIndexAnyUTF8/1:64-8 186108045 6.394 ns/op BenchmarkIndexAnyUTF8/1:64-8 187578721 6.415 ns/op BenchmarkIndexAnyUTF8/1:64-8 186613886 6.443 ns/op BenchmarkIndexAnyUTF8/16:1-8 90685543 13.34 ns/op BenchmarkIndexAnyUTF8/16:1-8 83782629 14.67 ns/op BenchmarkIndexAnyUTF8/16:1-8 91380072 13.70 ns/op BenchmarkIndexAnyUTF8/16:1-8 67892023 14.99 ns/op BenchmarkIndexAnyUTF8/16:1-8 87527817 15.26 ns/op BenchmarkIndexAnyUTF8/16:1-8 86395956 13.79 ns/op BenchmarkIndexAnyUTF8/16:1-8 73115172 14.58 ns/op BenchmarkIndexAnyUTF8/16:1-8 83207242 13.80 ns/op BenchmarkIndexAnyUTF8/16:1-8 88054998 14.43 ns/op BenchmarkIndexAnyUTF8/16:1-8 69945192 14.64 ns/op BenchmarkIndexAnyUTF8/16:2-8 18000374 67.19 ns/op BenchmarkIndexAnyUTF8/16:2-8 17820116 67.11 ns/op BenchmarkIndexAnyUTF8/16:2-8 17694968 66.85 ns/op BenchmarkIndexAnyUTF8/16:2-8 17885419 67.05 ns/op BenchmarkIndexAnyUTF8/16:2-8 17926753 67.15 ns/op BenchmarkIndexAnyUTF8/16:2-8 17558218 67.18 ns/op BenchmarkIndexAnyUTF8/16:2-8 17918930 66.79 ns/op BenchmarkIndexAnyUTF8/16:2-8 17088498 66.93 ns/op BenchmarkIndexAnyUTF8/16:2-8 17798919 66.68 ns/op BenchmarkIndexAnyUTF8/16:2-8 18024830 66.98 ns/op BenchmarkIndexAnyUTF8/16:4-8 17773236 67.16 ns/op BenchmarkIndexAnyUTF8/16:4-8 17920284 67.18 ns/op BenchmarkIndexAnyUTF8/16:4-8 17827196 67.09 ns/op BenchmarkIndexAnyUTF8/16:4-8 16965556 67.17 ns/op BenchmarkIndexAnyUTF8/16:4-8 17520358 67.02 ns/op BenchmarkIndexAnyUTF8/16:4-8 17864506 67.00 ns/op BenchmarkIndexAnyUTF8/16:4-8 17972282 67.20 ns/op BenchmarkIndexAnyUTF8/16:4-8 17634936 67.08 ns/op BenchmarkIndexAnyUTF8/16:4-8 18066120 67.13 ns/op BenchmarkIndexAnyUTF8/16:4-8 17601342 67.08 ns/op BenchmarkIndexAnyUTF8/16:8-8 18081402 67.32 ns/op BenchmarkIndexAnyUTF8/16:8-8 17360710 67.00 ns/op BenchmarkIndexAnyUTF8/16:8-8 17768353 67.08 ns/op BenchmarkIndexAnyUTF8/16:8-8 17948096 67.21 ns/op BenchmarkIndexAnyUTF8/16:8-8 17783883 66.93 ns/op BenchmarkIndexAnyUTF8/16:8-8 17515616 67.07 ns/op BenchmarkIndexAnyUTF8/16:8-8 17885012 67.36 ns/op BenchmarkIndexAnyUTF8/16:8-8 17976217 67.15 ns/op BenchmarkIndexAnyUTF8/16:8-8 17821482 66.93 ns/op BenchmarkIndexAnyUTF8/16:8-8 16840476 67.08 ns/op BenchmarkIndexAnyUTF8/16:16-8 18003462 65.96 ns/op BenchmarkIndexAnyUTF8/16:16-8 18136294 66.06 ns/op BenchmarkIndexAnyUTF8/16:16-8 18405400 65.89 ns/op BenchmarkIndexAnyUTF8/16:16-8 17979042 66.03 ns/op BenchmarkIndexAnyUTF8/16:16-8 17999374 66.22 ns/op BenchmarkIndexAnyUTF8/16:16-8 17407854 66.16 ns/op BenchmarkIndexAnyUTF8/16:16-8 18116976 66.09 ns/op BenchmarkIndexAnyUTF8/16:16-8 17842004 66.38 ns/op BenchmarkIndexAnyUTF8/16:16-8 18047068 66.68 ns/op BenchmarkIndexAnyUTF8/16:16-8 18057175 66.14 ns/op BenchmarkIndexAnyUTF8/16:32-8 16339100 73.01 ns/op BenchmarkIndexAnyUTF8/16:32-8 16423104 72.87 ns/op BenchmarkIndexAnyUTF8/16:32-8 16640016 72.82 ns/op BenchmarkIndexAnyUTF8/16:32-8 16558821 72.66 ns/op BenchmarkIndexAnyUTF8/16:32-8 16368591 72.64 ns/op BenchmarkIndexAnyUTF8/16:32-8 16565527 72.64 ns/op BenchmarkIndexAnyUTF8/16:32-8 16635526 72.39 ns/op BenchmarkIndexAnyUTF8/16:32-8 16645956 72.78 ns/op BenchmarkIndexAnyUTF8/16:32-8 16135278 72.77 ns/op BenchmarkIndexAnyUTF8/16:32-8 16366585 72.95 ns/op BenchmarkIndexAnyUTF8/16:64-8 15770371 76.61 ns/op BenchmarkIndexAnyUTF8/16:64-8 15483920 76.92 ns/op BenchmarkIndexAnyUTF8/16:64-8 15443794 76.50 ns/op BenchmarkIndexAnyUTF8/16:64-8 15705452 76.64 ns/op BenchmarkIndexAnyUTF8/16:64-8 15757210 76.70 ns/op BenchmarkIndexAnyUTF8/16:64-8 15630920 76.47 ns/op BenchmarkIndexAnyUTF8/16:64-8 15536610 77.42 ns/op BenchmarkIndexAnyUTF8/16:64-8 15663756 76.30 ns/op BenchmarkIndexAnyUTF8/16:64-8 15638062 77.01 ns/op BenchmarkIndexAnyUTF8/16:64-8 15075160 76.62 ns/op BenchmarkIndexAnyUTF8/256:1-8 7115456 166.9 ns/op BenchmarkIndexAnyUTF8/256:1-8 7182109 167.3 ns/op BenchmarkIndexAnyUTF8/256:1-8 7092133 167.2 ns/op BenchmarkIndexAnyUTF8/256:1-8 7175469 167.5 ns/op BenchmarkIndexAnyUTF8/256:1-8 7192262 167.7 ns/op BenchmarkIndexAnyUTF8/256:1-8 7087776 167.9 ns/op BenchmarkIndexAnyUTF8/256:1-8 7171926 167.8 ns/op BenchmarkIndexAnyUTF8/256:1-8 6995238 167.5 ns/op BenchmarkIndexAnyUTF8/256:1-8 7053745 167.5 ns/op BenchmarkIndexAnyUTF8/256:1-8 7185912 166.7 ns/op BenchmarkIndexAnyUTF8/256:2-8 1298452 919.5 ns/op BenchmarkIndexAnyUTF8/256:2-8 1304965 926.8 ns/op BenchmarkIndexAnyUTF8/256:2-8 1303848 925.9 ns/op BenchmarkIndexAnyUTF8/256:2-8 1305399 918.5 ns/op BenchmarkIndexAnyUTF8/256:2-8 1299036 919.3 ns/op BenchmarkIndexAnyUTF8/256:2-8 1301402 920.7 ns/op BenchmarkIndexAnyUTF8/256:2-8 1293771 921.1 ns/op BenchmarkIndexAnyUTF8/256:2-8 1302876 921.3 ns/op BenchmarkIndexAnyUTF8/256:2-8 1303888 918.6 ns/op BenchmarkIndexAnyUTF8/256:2-8 1299483 919.4 ns/op BenchmarkIndexAnyUTF8/256:4-8 1299805 923.1 ns/op BenchmarkIndexAnyUTF8/256:4-8 1302303 925.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 1300137 918.5 ns/op BenchmarkIndexAnyUTF8/256:4-8 1299409 918.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 1299753 921.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 1305530 922.0 ns/op BenchmarkIndexAnyUTF8/256:4-8 1298109 922.5 ns/op BenchmarkIndexAnyUTF8/256:4-8 1301679 926.5 ns/op BenchmarkIndexAnyUTF8/256:4-8 1303976 922.5 ns/op BenchmarkIndexAnyUTF8/256:4-8 1304613 922.3 ns/op BenchmarkIndexAnyUTF8/256:8-8 1299847 920.1 ns/op BenchmarkIndexAnyUTF8/256:8-8 1298200 917.3 ns/op BenchmarkIndexAnyUTF8/256:8-8 1299064 918.4 ns/op BenchmarkIndexAnyUTF8/256:8-8 1302110 925.3 ns/op BenchmarkIndexAnyUTF8/256:8-8 1302394 925.1 ns/op BenchmarkIndexAnyUTF8/256:8-8 1299558 928.2 ns/op BenchmarkIndexAnyUTF8/256:8-8 1296750 919.1 ns/op BenchmarkIndexAnyUTF8/256:8-8 1304259 919.7 ns/op BenchmarkIndexAnyUTF8/256:8-8 1298043 922.7 ns/op BenchmarkIndexAnyUTF8/256:8-8 1303098 918.9 ns/op BenchmarkIndexAnyUTF8/256:16-8 1289012 929.4 ns/op BenchmarkIndexAnyUTF8/256:16-8 1298444 929.8 ns/op BenchmarkIndexAnyUTF8/256:16-8 1301644 928.6 ns/op BenchmarkIndexAnyUTF8/256:16-8 1295510 927.3 ns/op BenchmarkIndexAnyUTF8/256:16-8 1283805 928.2 ns/op BenchmarkIndexAnyUTF8/256:16-8 1284766 932.9 ns/op BenchmarkIndexAnyUTF8/256:16-8 1295336 923.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 1293160 923.3 ns/op BenchmarkIndexAnyUTF8/256:16-8 1291626 925.6 ns/op BenchmarkIndexAnyUTF8/256:16-8 1291740 926.7 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1038 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1032 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1036 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1033 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1035 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1035 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1037 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1031 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1044 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1037 ns/op BenchmarkIndexAnyUTF8/256:64-8 963195 1097 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1091 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1091 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1099 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1095 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1091 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1095 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1099 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1095 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1092 ns/op BenchmarkLastIndexAnyASCII/1:1-8 234170965 5.118 ns/op BenchmarkLastIndexAnyASCII/1:1-8 234745669 5.144 ns/op BenchmarkLastIndexAnyASCII/1:1-8 232293060 5.128 ns/op BenchmarkLastIndexAnyASCII/1:1-8 231199342 5.152 ns/op BenchmarkLastIndexAnyASCII/1:1-8 233573581 5.158 ns/op BenchmarkLastIndexAnyASCII/1:1-8 231349207 5.098 ns/op BenchmarkLastIndexAnyASCII/1:1-8 233980563 5.116 ns/op BenchmarkLastIndexAnyASCII/1:1-8 233568368 5.156 ns/op BenchmarkLastIndexAnyASCII/1:1-8 234366766 5.114 ns/op BenchmarkLastIndexAnyASCII/1:1-8 232879465 5.122 ns/op BenchmarkLastIndexAnyASCII/1:2-8 234036938 5.103 ns/op BenchmarkLastIndexAnyASCII/1:2-8 232306626 5.109 ns/op BenchmarkLastIndexAnyASCII/1:2-8 231199550 5.107 ns/op BenchmarkLastIndexAnyASCII/1:2-8 232238220 5.133 ns/op BenchmarkLastIndexAnyASCII/1:2-8 231468415 5.130 ns/op BenchmarkLastIndexAnyASCII/1:2-8 234389432 5.219 ns/op BenchmarkLastIndexAnyASCII/1:2-8 231602136 5.141 ns/op BenchmarkLastIndexAnyASCII/1:2-8 231075909 5.107 ns/op BenchmarkLastIndexAnyASCII/1:2-8 232609570 5.107 ns/op BenchmarkLastIndexAnyASCII/1:2-8 232537400 5.084 ns/op BenchmarkLastIndexAnyASCII/1:4-8 233585966 5.123 ns/op BenchmarkLastIndexAnyASCII/1:4-8 233604661 5.164 ns/op BenchmarkLastIndexAnyASCII/1:4-8 236020851 5.143 ns/op BenchmarkLastIndexAnyASCII/1:4-8 235124119 5.093 ns/op BenchmarkLastIndexAnyASCII/1:4-8 234983373 5.121 ns/op BenchmarkLastIndexAnyASCII/1:4-8 234096714 5.112 ns/op BenchmarkLastIndexAnyASCII/1:4-8 233836123 5.086 ns/op BenchmarkLastIndexAnyASCII/1:4-8 235505870 5.142 ns/op BenchmarkLastIndexAnyASCII/1:4-8 233071486 5.135 ns/op BenchmarkLastIndexAnyASCII/1:4-8 236031054 5.129 ns/op BenchmarkLastIndexAnyASCII/1:8-8 234542032 5.139 ns/op BenchmarkLastIndexAnyASCII/1:8-8 233450659 5.102 ns/op BenchmarkLastIndexAnyASCII/1:8-8 234258788 5.105 ns/op BenchmarkLastIndexAnyASCII/1:8-8 233149321 5.145 ns/op BenchmarkLastIndexAnyASCII/1:8-8 232891568 5.142 ns/op BenchmarkLastIndexAnyASCII/1:8-8 230897542 5.109 ns/op BenchmarkLastIndexAnyASCII/1:8-8 231789784 5.129 ns/op BenchmarkLastIndexAnyASCII/1:8-8 235531657 5.104 ns/op BenchmarkLastIndexAnyASCII/1:8-8 233195012 5.121 ns/op BenchmarkLastIndexAnyASCII/1:8-8 233702780 5.133 ns/op BenchmarkLastIndexAnyASCII/1:16-8 250429676 4.732 ns/op BenchmarkLastIndexAnyASCII/1:16-8 253344051 4.748 ns/op BenchmarkLastIndexAnyASCII/1:16-8 254043669 4.722 ns/op BenchmarkLastIndexAnyASCII/1:16-8 252808239 4.730 ns/op BenchmarkLastIndexAnyASCII/1:16-8 254177731 4.728 ns/op BenchmarkLastIndexAnyASCII/1:16-8 252982602 4.750 ns/op BenchmarkLastIndexAnyASCII/1:16-8 250268506 4.733 ns/op BenchmarkLastIndexAnyASCII/1:16-8 252908536 4.734 ns/op BenchmarkLastIndexAnyASCII/1:16-8 252699045 4.748 ns/op BenchmarkLastIndexAnyASCII/1:16-8 249766687 4.793 ns/op BenchmarkLastIndexAnyASCII/1:32-8 234217902 5.110 ns/op BenchmarkLastIndexAnyASCII/1:32-8 232903287 5.178 ns/op BenchmarkLastIndexAnyASCII/1:32-8 232738408 5.116 ns/op BenchmarkLastIndexAnyASCII/1:32-8 233929551 5.106 ns/op BenchmarkLastIndexAnyASCII/1:32-8 237053760 5.111 ns/op BenchmarkLastIndexAnyASCII/1:32-8 235356556 5.144 ns/op BenchmarkLastIndexAnyASCII/1:32-8 232697606 5.112 ns/op BenchmarkLastIndexAnyASCII/1:32-8 233253704 5.139 ns/op BenchmarkLastIndexAnyASCII/1:32-8 235598678 5.089 ns/op BenchmarkLastIndexAnyASCII/1:32-8 234196924 5.115 ns/op BenchmarkLastIndexAnyASCII/1:64-8 228199418 5.295 ns/op BenchmarkLastIndexAnyASCII/1:64-8 229358100 5.274 ns/op BenchmarkLastIndexAnyASCII/1:64-8 226183659 5.233 ns/op BenchmarkLastIndexAnyASCII/1:64-8 227992926 5.266 ns/op BenchmarkLastIndexAnyASCII/1:64-8 227819390 5.231 ns/op BenchmarkLastIndexAnyASCII/1:64-8 230104278 5.236 ns/op BenchmarkLastIndexAnyASCII/1:64-8 228287403 5.346 ns/op BenchmarkLastIndexAnyASCII/1:64-8 228540982 5.227 ns/op BenchmarkLastIndexAnyASCII/1:64-8 227529063 5.252 ns/op BenchmarkLastIndexAnyASCII/1:64-8 229459914 5.261 ns/op BenchmarkLastIndexAnyASCII/16:1-8 86760310 13.64 ns/op BenchmarkLastIndexAnyASCII/16:1-8 86472506 13.61 ns/op BenchmarkLastIndexAnyASCII/16:1-8 87876570 13.70 ns/op BenchmarkLastIndexAnyASCII/16:1-8 86407956 13.64 ns/op BenchmarkLastIndexAnyASCII/16:1-8 84228878 13.69 ns/op BenchmarkLastIndexAnyASCII/16:1-8 87104454 13.65 ns/op BenchmarkLastIndexAnyASCII/16:1-8 86676061 13.68 ns/op BenchmarkLastIndexAnyASCII/16:1-8 83433626 13.76 ns/op BenchmarkLastIndexAnyASCII/16:1-8 85764518 13.71 ns/op BenchmarkLastIndexAnyASCII/16:1-8 85843798 13.68 ns/op BenchmarkLastIndexAnyASCII/16:2-8 85314358 14.12 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83577024 14.09 ns/op BenchmarkLastIndexAnyASCII/16:2-8 78288038 14.05 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83842290 14.10 ns/op BenchmarkLastIndexAnyASCII/16:2-8 80952655 14.10 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83486559 14.04 ns/op BenchmarkLastIndexAnyASCII/16:2-8 85146673 14.10 ns/op BenchmarkLastIndexAnyASCII/16:2-8 81676101 14.00 ns/op BenchmarkLastIndexAnyASCII/16:2-8 84817365 14.09 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83703254 14.13 ns/op BenchmarkLastIndexAnyASCII/16:4-8 75367761 15.93 ns/op BenchmarkLastIndexAnyASCII/16:4-8 74165392 15.97 ns/op BenchmarkLastIndexAnyASCII/16:4-8 74371555 15.89 ns/op BenchmarkLastIndexAnyASCII/16:4-8 74397610 15.91 ns/op BenchmarkLastIndexAnyASCII/16:4-8 74719856 15.84 ns/op BenchmarkLastIndexAnyASCII/16:4-8 75759283 15.93 ns/op BenchmarkLastIndexAnyASCII/16:4-8 73554943 15.92 ns/op BenchmarkLastIndexAnyASCII/16:4-8 74172067 15.93 ns/op BenchmarkLastIndexAnyASCII/16:4-8 73959168 15.92 ns/op BenchmarkLastIndexAnyASCII/16:4-8 72580119 15.85 ns/op BenchmarkLastIndexAnyASCII/16:8-8 60188962 20.05 ns/op BenchmarkLastIndexAnyASCII/16:8-8 58989160 20.11 ns/op BenchmarkLastIndexAnyASCII/16:8-8 58383951 20.12 ns/op BenchmarkLastIndexAnyASCII/16:8-8 59802051 20.06 ns/op BenchmarkLastIndexAnyASCII/16:8-8 58490132 20.04 ns/op BenchmarkLastIndexAnyASCII/16:8-8 58359944 20.05 ns/op BenchmarkLastIndexAnyASCII/16:8-8 59757369 20.10 ns/op BenchmarkLastIndexAnyASCII/16:8-8 58464685 20.16 ns/op BenchmarkLastIndexAnyASCII/16:8-8 58722862 20.12 ns/op BenchmarkLastIndexAnyASCII/16:8-8 59688315 20.02 ns/op BenchmarkLastIndexAnyASCII/16:16-8 44668138 26.31 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45051499 26.33 ns/op BenchmarkLastIndexAnyASCII/16:16-8 42967414 26.23 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45289099 26.29 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45927922 26.23 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45100706 26.20 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45791600 26.30 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45909181 26.36 ns/op BenchmarkLastIndexAnyASCII/16:16-8 42967719 26.39 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45426291 26.29 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26841248 44.80 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26735647 44.71 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26679490 44.71 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26701364 44.61 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26909792 44.61 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26713837 44.83 ns/op BenchmarkLastIndexAnyASCII/16:32-8 25542615 44.77 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26389880 44.88 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26760412 44.71 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26661727 44.56 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16678582 71.42 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16783803 71.40 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16966164 71.38 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16777206 71.34 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16351645 71.75 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16650596 71.70 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16949317 71.06 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16784412 71.29 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16631829 71.55 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16877426 71.13 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9225127 128.9 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9248944 129.3 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9189087 130.0 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9229078 128.9 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9239653 129.3 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9261808 128.7 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9261241 129.4 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9222913 129.7 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9315430 128.9 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9248436 129.1 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9155696 130.2 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9177224 129.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9169809 129.4 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9154285 130.1 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9219375 130.1 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9128256 129.8 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9297966 130.1 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9242888 130.2 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9225814 129.9 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9205425 130.1 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9082081 131.9 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9063768 131.5 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9054855 132.1 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9027360 132.6 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9053356 131.9 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9039280 132.5 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8813713 131.5 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9024115 131.8 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9120481 132.9 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9031585 132.3 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8709198 135.7 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8808966 136.4 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8773089 135.9 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8758684 136.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8879536 136.4 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8672806 136.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8726868 135.9 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8842442 136.1 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8814619 136.1 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8786497 135.9 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8518464 141.5 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8195354 141.2 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8393133 141.4 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8464564 141.2 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8581902 141.3 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8474784 141.0 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8445418 141.7 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8392333 141.9 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8395906 141.2 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8468248 141.2 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7445192 157.7 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7586119 158.2 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7590302 157.9 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7443895 158.0 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7587097 157.5 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7569432 158.5 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7534042 157.7 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7650166 158.1 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7536218 159.0 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7584963 158.4 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6533307 182.6 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6559582 182.5 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6549922 183.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6521058 182.4 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6574866 183.8 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6546127 182.6 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6641780 182.6 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6529765 181.7 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6546465 182.8 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6541617 183.0 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 234081823 5.111 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 232654198 5.146 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 230470594 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 233158405 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 232370904 5.133 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 233043138 5.144 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 232229626 5.142 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 232481337 5.142 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 230612155 5.137 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 230978078 5.111 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 231837430 5.167 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 232991967 5.137 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 233449957 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 232648740 5.180 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 233343000 5.117 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 232392770 5.167 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 233651223 5.141 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 232657704 5.154 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 235495833 5.152 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 233934282 5.210 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 233167444 5.224 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 234558334 5.170 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 231740431 5.106 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 233384132 5.168 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 231663978 5.144 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 233854240 5.168 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 220789215 5.123 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 232920697 5.182 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 231442501 5.155 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 232122805 5.146 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 230215035 5.160 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 234417823 5.167 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 232640457 5.132 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 232057285 5.181 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 232594311 5.140 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 232701644 5.132 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 231088771 5.104 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 230933834 5.159 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 233128494 5.147 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 232527871 5.134 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 260055445 4.601 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 262472534 4.619 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 260441799 4.592 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 259254313 4.603 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 261013111 4.626 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 259329844 4.590 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 261639073 4.641 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 259505869 4.605 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 258746425 4.598 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 259464098 4.607 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 234302763 5.080 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 235771960 5.039 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 238116586 5.041 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 237044175 5.078 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 236115909 5.088 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 236793609 5.079 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 234986268 5.040 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 238538490 5.048 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 239775896 5.051 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 235762897 5.078 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 227397447 5.287 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 228167613 5.309 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 227024317 5.275 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 225147321 5.252 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 224197014 5.357 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 224239713 5.371 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 223069278 5.348 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 218562789 5.360 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 224128638 5.366 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 225250538 5.362 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28259328 42.81 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28450656 43.04 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28609164 42.82 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28112011 42.96 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28259258 42.81 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 27601710 42.18 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28181094 42.00 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28682980 42.39 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 28922480 42.10 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 25991553 41.94 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13330010 90.73 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13582695 89.87 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13616146 89.90 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13219048 90.11 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13322703 89.94 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13497296 89.94 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 12783049 89.11 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13089972 89.75 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 12904310 90.02 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13733674 89.32 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13266862 90.13 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13455740 90.96 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13676874 89.65 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13492417 90.51 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13455822 90.09 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13204377 89.56 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13000480 89.77 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13285020 89.65 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13503872 89.73 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13588644 89.73 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13303428 89.65 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13077138 89.16 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13730980 91.69 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13401126 89.56 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13454287 89.23 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13701186 89.32 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13116150 89.38 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 12626234 89.15 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13294311 89.55 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 13305152 88.69 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14622390 82.66 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14494326 83.72 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14568759 83.82 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14661633 84.22 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14574687 82.53 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14781766 82.15 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14740647 82.16 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14677197 82.78 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14791927 82.00 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14683857 81.71 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13643962 88.00 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13544845 87.68 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13673877 87.60 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13710668 87.54 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13636864 87.67 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13575718 87.60 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13697888 87.54 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13654634 87.55 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13530746 88.08 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13804585 87.58 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12873703 93.30 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12882020 93.22 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12772910 93.52 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12841177 93.65 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12784789 93.42 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12828093 93.60 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12842298 93.19 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12710460 93.46 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12838204 93.34 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12984493 93.35 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2684679 450.0 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2672785 451.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2649760 448.9 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2659555 452.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2660058 454.6 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2645508 449.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2654878 451.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2683246 451.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2658019 450.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2680117 450.2 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 951633 1208 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 976466 1212 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 921199 1191 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 943494 1211 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 956881 1198 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1205 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 987004 1209 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 996808 1199 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 982210 1196 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 983115 1207 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1194 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 988674 1199 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 946779 1196 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 937977 1198 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 896540 1197 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1203 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1223 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 991701 1227 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 957327 1230 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1219 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1219 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1208 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1205 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 968088 1202 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 983306 1199 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 952170 1209 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 936068 1204 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 970840 1205 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 971090 1199 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 951912 1205 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1164 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 945998 1158 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1159 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1156 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1166 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1172 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 946047 1274 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 936675 1266 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 925228 1272 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 937658 1268 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 949359 1270 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 945014 1270 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 939247 1273 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 930926 1267 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 930360 1264 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 949128 1280 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 878919 1361 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 874016 1359 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 877251 1353 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 881330 1355 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 882057 1363 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 865878 1359 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 881796 1354 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 883602 1355 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 891626 1367 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 877500 1355 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 238158 5006 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 240422 4979 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239962 4994 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 242108 4979 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 230134 5000 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239247 4982 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239480 4996 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 242672 4986 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239698 5002 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239683 4960 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 237906 5004 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241749 4987 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 240134 5001 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 240235 4967 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 238556 4987 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241098 4977 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 240686 4988 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 242118 4995 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 238840 4996 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 243346 4996 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20239 59482 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20124 59661 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19797 59717 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20031 59403 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20042 59870 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20090 60248 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20204 60092 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20079 59864 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20077 59832 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20100 59389 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 41148 29454 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 41011 29714 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 38479 29027 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 40180 29138 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 40173 29847 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 41391 30478 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 41553 30279 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 41788 28934 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 37879 29775 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 39514 29403 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 72272 15570 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 80522 15117 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 78561 14949 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 70098 14704 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 69331 14798 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 69219 15537 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 83018 16519 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 68496 15160 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 82914 15115 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 71988 15918 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 136219 9497 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 144924 9041 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 140931 9328 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 146253 9058 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 105849 9745 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 116809 9034 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 142870 8587 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 146101 8766 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 144268 9989 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 138254 8499 ns/op BenchmarkIndexByte_Bytes/10-8 373362654 3.231 ns/op 3095.09 MB/s BenchmarkIndexByte_Bytes/10-8 371953360 3.203 ns/op 3122.09 MB/s BenchmarkIndexByte_Bytes/10-8 372346270 3.210 ns/op 3115.20 MB/s BenchmarkIndexByte_Bytes/10-8 370960107 3.206 ns/op 3119.35 MB/s BenchmarkIndexByte_Bytes/10-8 368081583 3.236 ns/op 3090.13 MB/s BenchmarkIndexByte_Bytes/10-8 368749215 3.213 ns/op 3112.69 MB/s BenchmarkIndexByte_Bytes/10-8 368011784 3.220 ns/op 3105.88 MB/s BenchmarkIndexByte_Bytes/10-8 368697612 3.219 ns/op 3106.94 MB/s BenchmarkIndexByte_Bytes/10-8 377010418 3.213 ns/op 3112.47 MB/s BenchmarkIndexByte_Bytes/10-8 374489678 3.211 ns/op 3114.62 MB/s BenchmarkIndexByte_Bytes/32-8 309970230 3.909 ns/op 8186.91 MB/s BenchmarkIndexByte_Bytes/32-8 311490416 3.865 ns/op 8278.73 MB/s BenchmarkIndexByte_Bytes/32-8 306921426 3.866 ns/op 8276.40 MB/s BenchmarkIndexByte_Bytes/32-8 308888284 3.882 ns/op 8242.61 MB/s BenchmarkIndexByte_Bytes/32-8 307182474 3.871 ns/op 8267.45 MB/s BenchmarkIndexByte_Bytes/32-8 310058010 3.865 ns/op 8278.41 MB/s BenchmarkIndexByte_Bytes/32-8 309930657 3.884 ns/op 8238.06 MB/s BenchmarkIndexByte_Bytes/32-8 308409675 3.863 ns/op 8283.62 MB/s BenchmarkIndexByte_Bytes/32-8 310122306 3.870 ns/op 8268.64 MB/s BenchmarkIndexByte_Bytes/32-8 309350684 3.924 ns/op 8153.98 MB/s BenchmarkIndexByte_Bytes/4K-8 19475109 60.83 ns/op 67334.36 MB/s BenchmarkIndexByte_Bytes/4K-8 19825119 60.41 ns/op 67806.28 MB/s BenchmarkIndexByte_Bytes/4K-8 19481380 60.25 ns/op 67978.98 MB/s BenchmarkIndexByte_Bytes/4K-8 19995747 60.26 ns/op 67967.21 MB/s BenchmarkIndexByte_Bytes/4K-8 19385112 60.54 ns/op 67654.50 MB/s BenchmarkIndexByte_Bytes/4K-8 19815860 60.51 ns/op 67689.69 MB/s BenchmarkIndexByte_Bytes/4K-8 19450293 60.34 ns/op 67877.80 MB/s BenchmarkIndexByte_Bytes/4K-8 19873814 60.25 ns/op 67983.42 MB/s BenchmarkIndexByte_Bytes/4K-8 19449694 60.20 ns/op 68035.89 MB/s BenchmarkIndexByte_Bytes/4K-8 19920387 60.28 ns/op 67944.89 MB/s BenchmarkIndexByte_Bytes/4M-8 13377 88833 ns/op 47215.59 MB/s BenchmarkIndexByte_Bytes/4M-8 13503 89578 ns/op 46822.75 MB/s BenchmarkIndexByte_Bytes/4M-8 13412 88018 ns/op 47652.98 MB/s BenchmarkIndexByte_Bytes/4M-8 13557 87244 ns/op 48075.36 MB/s BenchmarkIndexByte_Bytes/4M-8 13280 88011 ns/op 47656.84 MB/s BenchmarkIndexByte_Bytes/4M-8 13381 89050 ns/op 47100.67 MB/s BenchmarkIndexByte_Bytes/4M-8 13309 90704 ns/op 46241.87 MB/s BenchmarkIndexByte_Bytes/4M-8 13231 89119 ns/op 47064.15 MB/s BenchmarkIndexByte_Bytes/4M-8 13550 89801 ns/op 46706.84 MB/s BenchmarkIndexByte_Bytes/4M-8 13256 87864 ns/op 47736.43 MB/s BenchmarkIndexByte_Bytes/64M-8 357 3228810 ns/op 20784.40 MB/s BenchmarkIndexByte_Bytes/64M-8 333 3264621 ns/op 20556.40 MB/s BenchmarkIndexByte_Bytes/64M-8 338 3271302 ns/op 20514.42 MB/s BenchmarkIndexByte_Bytes/64M-8 322 3234682 ns/op 20746.67 MB/s BenchmarkIndexByte_Bytes/64M-8 316 3214751 ns/op 20875.29 MB/s BenchmarkIndexByte_Bytes/64M-8 314 3295201 ns/op 20365.64 MB/s BenchmarkIndexByte_Bytes/64M-8 322 3335238 ns/op 20121.16 MB/s BenchmarkIndexByte_Bytes/64M-8 303 3423639 ns/op 19601.62 MB/s BenchmarkIndexByte_Bytes/64M-8 322 3260279 ns/op 20583.78 MB/s BenchmarkIndexByte_Bytes/64M-8 319 3303164 ns/op 20316.54 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 11.00 ns/op 909.17 MB/s BenchmarkIndexRune_Bytes/10-8 108728835 11.06 ns/op 904.38 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 10.96 ns/op 912.32 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 10.98 ns/op 910.64 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 10.93 ns/op 914.66 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 11.00 ns/op 909.31 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 10.98 ns/op 910.39 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 11.00 ns/op 909.00 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 10.96 ns/op 912.29 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 10.96 ns/op 912.12 MB/s BenchmarkIndexRune_Bytes/32-8 101158723 11.90 ns/op 2688.15 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.87 ns/op 2696.96 MB/s BenchmarkIndexRune_Bytes/32-8 99804838 11.89 ns/op 2691.95 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.87 ns/op 2696.10 MB/s BenchmarkIndexRune_Bytes/32-8 101162379 11.98 ns/op 2671.10 MB/s BenchmarkIndexRune_Bytes/32-8 99853464 11.90 ns/op 2689.40 MB/s BenchmarkIndexRune_Bytes/32-8 97959638 11.86 ns/op 2699.23 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.91 ns/op 2686.65 MB/s BenchmarkIndexRune_Bytes/32-8 94618478 11.88 ns/op 2692.57 MB/s BenchmarkIndexRune_Bytes/32-8 99280390 11.93 ns/op 2683.13 MB/s BenchmarkIndexRune_Bytes/4K-8 14719003 80.22 ns/op 51057.91 MB/s BenchmarkIndexRune_Bytes/4K-8 14752210 80.15 ns/op 51101.44 MB/s BenchmarkIndexRune_Bytes/4K-8 14880206 80.36 ns/op 50967.55 MB/s BenchmarkIndexRune_Bytes/4K-8 14890386 80.31 ns/op 51002.47 MB/s BenchmarkIndexRune_Bytes/4K-8 14902623 80.27 ns/op 51026.42 MB/s BenchmarkIndexRune_Bytes/4K-8 13466934 80.28 ns/op 51020.67 MB/s BenchmarkIndexRune_Bytes/4K-8 14868604 80.15 ns/op 51107.26 MB/s BenchmarkIndexRune_Bytes/4K-8 14944327 80.35 ns/op 50978.23 MB/s BenchmarkIndexRune_Bytes/4K-8 14954442 79.96 ns/op 51222.42 MB/s BenchmarkIndexRune_Bytes/4K-8 14945949 80.50 ns/op 50879.77 MB/s BenchmarkIndexRune_Bytes/4M-8 12092 99340 ns/op 42221.84 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 101052 ns/op 41506.23 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100272 ns/op 41829.36 MB/s BenchmarkIndexRune_Bytes/4M-8 12153 100144 ns/op 41882.88 MB/s BenchmarkIndexRune_Bytes/4M-8 12202 99007 ns/op 42363.58 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100082 ns/op 41908.78 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 101442 ns/op 41346.76 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100745 ns/op 41632.70 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100091 ns/op 41904.71 MB/s BenchmarkIndexRune_Bytes/4M-8 12192 100662 ns/op 41667.27 MB/s BenchmarkIndexRune_Bytes/64M-8 333 3427211 ns/op 19581.19 MB/s BenchmarkIndexRune_Bytes/64M-8 298 3401692 ns/op 19728.08 MB/s BenchmarkIndexRune_Bytes/64M-8 316 3438343 ns/op 19517.79 MB/s BenchmarkIndexRune_Bytes/64M-8 306 3538079 ns/op 18967.60 MB/s BenchmarkIndexRune_Bytes/64M-8 295 3459863 ns/op 19396.39 MB/s BenchmarkIndexRune_Bytes/64M-8 300 3537550 ns/op 18970.44 MB/s BenchmarkIndexRune_Bytes/64M-8 321 3638864 ns/op 18442.25 MB/s BenchmarkIndexRune_Bytes/64M-8 314 3452852 ns/op 19435.78 MB/s BenchmarkIndexRune_Bytes/64M-8 306 3464598 ns/op 19369.89 MB/s BenchmarkIndexRune_Bytes/64M-8 354 3550859 ns/op 18899.33 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 352725561 3.398 ns/op 2942.85 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 352838517 3.391 ns/op 2949.16 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 353970787 3.396 ns/op 2944.48 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 354379322 3.389 ns/op 2950.62 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 352286140 3.376 ns/op 2961.99 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 352298464 3.385 ns/op 2954.53 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 351321241 3.384 ns/op 2954.76 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 351571896 3.398 ns/op 2942.52 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 353516161 3.387 ns/op 2952.08 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 355321971 3.391 ns/op 2948.98 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 304210616 3.948 ns/op 8105.80 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 302715205 3.929 ns/op 8144.60 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 299929808 3.965 ns/op 8071.55 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 302883722 3.947 ns/op 8108.05 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 303814944 3.945 ns/op 8111.67 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 303539654 3.942 ns/op 8117.94 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 300508359 3.941 ns/op 8120.66 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 298518724 3.937 ns/op 8128.13 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 303444266 3.939 ns/op 8123.62 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 302640490 3.948 ns/op 8104.44 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19730661 60.01 ns/op 68258.92 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 20060098 60.06 ns/op 68197.72 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19812154 60.07 ns/op 68189.23 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19999636 60.11 ns/op 68141.36 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19988134 59.86 ns/op 68422.69 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19879190 59.82 ns/op 68477.77 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19049414 60.17 ns/op 68071.37 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19470912 60.35 ns/op 67871.26 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19869357 60.28 ns/op 67952.90 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19919228 60.02 ns/op 68243.35 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13777 88705 ns/op 47283.74 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13390 90403 ns/op 46395.58 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13921 88323 ns/op 47488.05 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13580 91339 ns/op 45919.97 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13147 90543 ns/op 46324.08 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13563 91403 ns/op 45888.19 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13287 89520 ns/op 46853.48 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13423 91384 ns/op 45897.48 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13176 93028 ns/op 45086.41 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13245 91538 ns/op 45820.24 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 324 3466177 ns/op 19361.06 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 312 3418911 ns/op 19628.73 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 322 3504826 ns/op 19147.56 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 331 3371978 ns/op 19901.93 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 320 3398630 ns/op 19745.86 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 328 3365597 ns/op 19939.66 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 302 3455596 ns/op 19420.35 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 312 3417644 ns/op 19636.00 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 325 3317835 ns/op 20226.70 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 319 3426279 ns/op 19586.51 MB/s BenchmarkIndexNonASCII_Bytes/10-8 369673994 3.251 ns/op 3076.22 MB/s BenchmarkIndexNonASCII_Bytes/10-8 367250989 3.245 ns/op 3081.51 MB/s BenchmarkIndexNonASCII_Bytes/10-8 366040059 3.253 ns/op 3073.82 MB/s BenchmarkIndexNonASCII_Bytes/10-8 369803605 3.239 ns/op 3087.59 MB/s BenchmarkIndexNonASCII_Bytes/10-8 364688048 3.226 ns/op 3099.55 MB/s BenchmarkIndexNonASCII_Bytes/10-8 368378402 3.231 ns/op 3095.08 MB/s BenchmarkIndexNonASCII_Bytes/10-8 364012729 3.248 ns/op 3078.86 MB/s BenchmarkIndexNonASCII_Bytes/10-8 369536112 3.233 ns/op 3093.38 MB/s BenchmarkIndexNonASCII_Bytes/10-8 369059277 3.234 ns/op 3091.75 MB/s BenchmarkIndexNonASCII_Bytes/10-8 368909917 3.242 ns/op 3084.94 MB/s BenchmarkIndexNonASCII_Bytes/32-8 141282088 8.444 ns/op 3789.85 MB/s BenchmarkIndexNonASCII_Bytes/32-8 140120494 8.404 ns/op 3807.86 MB/s BenchmarkIndexNonASCII_Bytes/32-8 140170796 8.383 ns/op 3817.42 MB/s BenchmarkIndexNonASCII_Bytes/32-8 142223940 8.472 ns/op 3777.32 MB/s BenchmarkIndexNonASCII_Bytes/32-8 141668934 8.457 ns/op 3783.69 MB/s BenchmarkIndexNonASCII_Bytes/32-8 140839034 8.426 ns/op 3797.80 MB/s BenchmarkIndexNonASCII_Bytes/32-8 141737998 8.434 ns/op 3794.31 MB/s BenchmarkIndexNonASCII_Bytes/32-8 141239401 8.437 ns/op 3792.89 MB/s BenchmarkIndexNonASCII_Bytes/32-8 141458328 8.412 ns/op 3804.21 MB/s BenchmarkIndexNonASCII_Bytes/32-8 142270924 8.483 ns/op 3772.46 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1365348 875.1 ns/op 4680.71 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1367982 873.2 ns/op 4690.78 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1374992 875.2 ns/op 4680.05 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1377528 873.6 ns/op 4688.63 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1374326 872.4 ns/op 4695.27 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1373815 872.9 ns/op 4692.50 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1378792 872.5 ns/op 4694.59 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1377070 877.9 ns/op 4665.65 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1365686 874.0 ns/op 4686.39 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1378425 876.8 ns/op 4671.30 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1315 885976 ns/op 4734.10 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1320 909603 ns/op 4611.14 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1326 885315 ns/op 4737.64 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1334 879650 ns/op 4768.15 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1356 883109 ns/op 4749.47 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1330 887879 ns/op 4723.96 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1340 881218 ns/op 4759.67 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1316 891158 ns/op 4706.58 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1320 886639 ns/op 4730.56 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1245 889536 ns/op 4715.16 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 66 15251405 ns/op 4400.18 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15354437 ns/op 4370.65 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15743955 ns/op 4262.52 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 75 15400992 ns/op 4357.44 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15073577 ns/op 4452.09 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 76 14972412 ns/op 4482.17 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15014509 ns/op 4469.60 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 74 14987969 ns/op 4477.52 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 76 15111848 ns/op 4440.81 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15062911 ns/op 4455.24 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2068.326s strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.21/strcase.10.1706904187.07e88bec.txt 0000664 0000000 0000000 00000276734 14720254634 0027232 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz BenchmarkIndexRune-8 99606066 12.06 ns/op BenchmarkIndexRune-8 100000000 12.13 ns/op BenchmarkIndexRune-8 100000000 11.99 ns/op BenchmarkIndexRune-8 99737076 12.06 ns/op BenchmarkIndexRune-8 100000000 11.92 ns/op BenchmarkIndexRune-8 98574181 11.84 ns/op BenchmarkIndexRune-8 97890907 11.90 ns/op BenchmarkIndexRune-8 92969520 11.93 ns/op BenchmarkIndexRune-8 100000000 11.93 ns/op BenchmarkIndexRune-8 99168668 11.99 ns/op BenchmarkIndexRuneLongString-8 88533423 13.50 ns/op BenchmarkIndexRuneLongString-8 87119421 13.52 ns/op BenchmarkIndexRuneLongString-8 89004699 13.49 ns/op BenchmarkIndexRuneLongString-8 87382339 13.58 ns/op BenchmarkIndexRuneLongString-8 88786132 13.61 ns/op BenchmarkIndexRuneLongString-8 90305922 13.51 ns/op BenchmarkIndexRuneLongString-8 89022831 13.53 ns/op BenchmarkIndexRuneLongString-8 86397454 13.57 ns/op BenchmarkIndexRuneLongString-8 87106578 13.48 ns/op BenchmarkIndexRuneLongString-8 89606349 13.55 ns/op BenchmarkIndexRuneFastPath-8 201262030 5.969 ns/op BenchmarkIndexRuneFastPath-8 199183393 5.977 ns/op BenchmarkIndexRuneFastPath-8 200195970 5.987 ns/op BenchmarkIndexRuneFastPath-8 200280544 5.995 ns/op BenchmarkIndexRuneFastPath-8 199197792 5.972 ns/op BenchmarkIndexRuneFastPath-8 200955139 5.978 ns/op BenchmarkIndexRuneFastPath-8 199985316 5.965 ns/op BenchmarkIndexRuneFastPath-8 201541941 5.988 ns/op BenchmarkIndexRuneFastPath-8 198801558 5.984 ns/op BenchmarkIndexRuneFastPath-8 198752138 5.990 ns/op BenchmarkIndex-8 192124693 6.291 ns/op BenchmarkIndex-8 192019290 6.250 ns/op BenchmarkIndex-8 190165695 6.296 ns/op BenchmarkIndex-8 190296978 6.251 ns/op BenchmarkIndex-8 191600247 6.275 ns/op BenchmarkIndex-8 191629129 6.283 ns/op BenchmarkIndex-8 191511144 6.264 ns/op BenchmarkIndex-8 190651024 6.276 ns/op BenchmarkIndex-8 190624352 6.283 ns/op BenchmarkIndex-8 190432063 6.262 ns/op BenchmarkLastIndex-8 215807918 5.560 ns/op BenchmarkLastIndex-8 217122070 5.569 ns/op BenchmarkLastIndex-8 214119680 5.562 ns/op BenchmarkLastIndex-8 214687890 5.540 ns/op BenchmarkLastIndex-8 215710490 5.549 ns/op BenchmarkLastIndex-8 215494284 5.558 ns/op BenchmarkLastIndex-8 214673812 5.513 ns/op BenchmarkLastIndex-8 215080017 5.562 ns/op BenchmarkLastIndex-8 216376328 5.569 ns/op BenchmarkLastIndex-8 214876148 5.553 ns/op BenchmarkIndexByte-8 259390322 4.620 ns/op BenchmarkIndexByte-8 260154202 4.621 ns/op BenchmarkIndexByte-8 259923897 4.638 ns/op BenchmarkIndexByte-8 258500065 4.618 ns/op BenchmarkIndexByte-8 259001270 4.641 ns/op BenchmarkIndexByte-8 260334378 4.633 ns/op BenchmarkIndexByte-8 260886878 4.645 ns/op BenchmarkIndexByte-8 258590929 4.646 ns/op BenchmarkIndexByte-8 257418619 4.584 ns/op BenchmarkIndexByte-8 258888013 4.607 ns/op BenchmarkEqualFold/ASCII-8 140943746 8.441 ns/op BenchmarkEqualFold/ASCII-8 140973356 8.440 ns/op BenchmarkEqualFold/ASCII-8 140967786 8.507 ns/op BenchmarkEqualFold/ASCII-8 141440412 8.448 ns/op BenchmarkEqualFold/ASCII-8 141371438 8.444 ns/op BenchmarkEqualFold/ASCII-8 142883602 8.481 ns/op BenchmarkEqualFold/ASCII-8 142361934 8.477 ns/op BenchmarkEqualFold/ASCII-8 141582106 8.501 ns/op BenchmarkEqualFold/ASCII-8 142899441 8.495 ns/op BenchmarkEqualFold/ASCII-8 141475860 8.471 ns/op BenchmarkEqualFold/UnicodePrefix-8 31991707 37.44 ns/op BenchmarkEqualFold/UnicodePrefix-8 32289446 37.23 ns/op BenchmarkEqualFold/UnicodePrefix-8 32615520 37.30 ns/op BenchmarkEqualFold/UnicodePrefix-8 32144737 37.36 ns/op BenchmarkEqualFold/UnicodePrefix-8 31966209 37.07 ns/op BenchmarkEqualFold/UnicodePrefix-8 32521539 37.26 ns/op BenchmarkEqualFold/UnicodePrefix-8 32037811 37.24 ns/op BenchmarkEqualFold/UnicodePrefix-8 31895332 37.30 ns/op BenchmarkEqualFold/UnicodePrefix-8 31565392 37.22 ns/op BenchmarkEqualFold/UnicodePrefix-8 32222401 37.18 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42710030 28.14 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42688803 28.32 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41630149 28.32 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42112398 28.40 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42241976 28.27 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42083665 28.56 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42182180 28.41 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41847771 28.40 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41684607 28.20 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42365464 28.52 ns/op BenchmarkIndexHard1-8 15229 78463 ns/op BenchmarkIndexHard1-8 15241 78585 ns/op BenchmarkIndexHard1-8 15314 78573 ns/op BenchmarkIndexHard1-8 15220 78270 ns/op BenchmarkIndexHard1-8 15252 78355 ns/op BenchmarkIndexHard1-8 15224 78502 ns/op BenchmarkIndexHard1-8 15262 78545 ns/op BenchmarkIndexHard1-8 15318 79313 ns/op BenchmarkIndexHard1-8 15252 78543 ns/op BenchmarkIndexHard1-8 15180 78454 ns/op BenchmarkIndexHard2-8 522 2198050 ns/op BenchmarkIndexHard2-8 537 2195474 ns/op BenchmarkIndexHard2-8 543 2174271 ns/op BenchmarkIndexHard2-8 528 2190645 ns/op BenchmarkIndexHard2-8 544 2189482 ns/op BenchmarkIndexHard2-8 530 2196144 ns/op BenchmarkIndexHard2-8 548 2186675 ns/op BenchmarkIndexHard2-8 549 2215359 ns/op BenchmarkIndexHard2-8 538 2200030 ns/op BenchmarkIndexHard2-8 538 2222013 ns/op BenchmarkIndexHard3-8 578 2021894 ns/op BenchmarkIndexHard3-8 583 2015952 ns/op BenchmarkIndexHard3-8 586 2026639 ns/op BenchmarkIndexHard3-8 588 2030963 ns/op BenchmarkIndexHard3-8 586 2030480 ns/op BenchmarkIndexHard3-8 582 2032975 ns/op BenchmarkIndexHard3-8 586 2027632 ns/op BenchmarkIndexHard3-8 589 2036309 ns/op BenchmarkIndexHard3-8 579 2020160 ns/op BenchmarkIndexHard3-8 586 2014943 ns/op BenchmarkIndexHard4-8 756 1547812 ns/op BenchmarkIndexHard4-8 765 1554965 ns/op BenchmarkIndexHard4-8 774 1543024 ns/op BenchmarkIndexHard4-8 769 1543159 ns/op BenchmarkIndexHard4-8 763 1541696 ns/op BenchmarkIndexHard4-8 769 1551753 ns/op BenchmarkIndexHard4-8 759 1551481 ns/op BenchmarkIndexHard4-8 772 1541272 ns/op BenchmarkIndexHard4-8 769 1544269 ns/op BenchmarkIndexHard4-8 744 1551057 ns/op BenchmarkLastIndexHard1-8 727 1638209 ns/op BenchmarkLastIndexHard1-8 726 1625545 ns/op BenchmarkLastIndexHard1-8 712 1627410 ns/op BenchmarkLastIndexHard1-8 724 1623288 ns/op BenchmarkLastIndexHard1-8 732 1625117 ns/op BenchmarkLastIndexHard1-8 720 1620649 ns/op BenchmarkLastIndexHard1-8 730 1624074 ns/op BenchmarkLastIndexHard1-8 727 1632435 ns/op BenchmarkLastIndexHard1-8 716 1616303 ns/op BenchmarkLastIndexHard1-8 727 1618010 ns/op BenchmarkLastIndexHard2-8 732 1627698 ns/op BenchmarkLastIndexHard2-8 717 1612962 ns/op BenchmarkLastIndexHard2-8 729 1625605 ns/op BenchmarkLastIndexHard2-8 726 1624165 ns/op BenchmarkLastIndexHard2-8 715 1628898 ns/op BenchmarkLastIndexHard2-8 734 1613175 ns/op BenchmarkLastIndexHard2-8 729 1633316 ns/op BenchmarkLastIndexHard2-8 715 1627597 ns/op BenchmarkLastIndexHard2-8 724 1618707 ns/op BenchmarkLastIndexHard2-8 727 1632878 ns/op BenchmarkLastIndexHard3-8 728 1625975 ns/op BenchmarkLastIndexHard3-8 722 1628526 ns/op BenchmarkLastIndexHard3-8 720 1630968 ns/op BenchmarkLastIndexHard3-8 723 1628114 ns/op BenchmarkLastIndexHard3-8 726 1622305 ns/op BenchmarkLastIndexHard3-8 720 1624377 ns/op BenchmarkLastIndexHard3-8 727 1621072 ns/op BenchmarkLastIndexHard3-8 733 1625336 ns/op BenchmarkLastIndexHard3-8 717 1622043 ns/op BenchmarkLastIndexHard3-8 730 1624885 ns/op BenchmarkCountHard1-8 15198 78327 ns/op BenchmarkCountHard1-8 15288 79133 ns/op BenchmarkCountHard1-8 15219 78409 ns/op BenchmarkCountHard1-8 15192 78322 ns/op BenchmarkCountHard1-8 15180 78931 ns/op BenchmarkCountHard1-8 15123 78443 ns/op BenchmarkCountHard1-8 15146 78510 ns/op BenchmarkCountHard1-8 15152 78723 ns/op BenchmarkCountHard1-8 15258 78443 ns/op BenchmarkCountHard1-8 15277 78777 ns/op BenchmarkCountHard2-8 537 2200429 ns/op BenchmarkCountHard2-8 536 2196276 ns/op BenchmarkCountHard2-8 549 2198523 ns/op BenchmarkCountHard2-8 540 2199620 ns/op BenchmarkCountHard2-8 543 2192424 ns/op BenchmarkCountHard2-8 544 2207462 ns/op BenchmarkCountHard2-8 532 2197280 ns/op BenchmarkCountHard2-8 547 2203645 ns/op BenchmarkCountHard2-8 531 2214477 ns/op BenchmarkCountHard2-8 538 2199257 ns/op BenchmarkCountHard3-8 582 2027065 ns/op BenchmarkCountHard3-8 585 2016737 ns/op BenchmarkCountHard3-8 588 2017301 ns/op BenchmarkCountHard3-8 582 2031246 ns/op BenchmarkCountHard3-8 580 2016577 ns/op BenchmarkCountHard3-8 584 2018743 ns/op BenchmarkCountHard3-8 580 2028414 ns/op BenchmarkCountHard3-8 586 2017599 ns/op BenchmarkCountHard3-8 584 2030472 ns/op BenchmarkCountHard3-8 582 2018431 ns/op BenchmarkIndexTorture-8 68240 17663 ns/op BenchmarkIndexTorture-8 68115 17652 ns/op BenchmarkIndexTorture-8 67305 17676 ns/op BenchmarkIndexTorture-8 68028 17627 ns/op BenchmarkIndexTorture-8 66934 17602 ns/op BenchmarkIndexTorture-8 68268 17609 ns/op BenchmarkIndexTorture-8 67974 17623 ns/op BenchmarkIndexTorture-8 67566 17558 ns/op BenchmarkIndexTorture-8 68761 17578 ns/op BenchmarkIndexTorture-8 67818 17626 ns/op BenchmarkCountTorture-8 67194 17802 ns/op BenchmarkCountTorture-8 66982 17883 ns/op BenchmarkCountTorture-8 66460 17836 ns/op BenchmarkCountTorture-8 67363 17871 ns/op BenchmarkCountTorture-8 66660 17861 ns/op BenchmarkCountTorture-8 66661 17918 ns/op BenchmarkCountTorture-8 67454 17888 ns/op BenchmarkCountTorture-8 67014 17858 ns/op BenchmarkCountTorture-8 67401 17904 ns/op BenchmarkCountTorture-8 66612 17834 ns/op BenchmarkCountTortureOverlapping-8 325 3579579 ns/op BenchmarkCountTortureOverlapping-8 312 3556895 ns/op BenchmarkCountTortureOverlapping-8 328 3555456 ns/op BenchmarkCountTortureOverlapping-8 331 3567175 ns/op BenchmarkCountTortureOverlapping-8 328 3555777 ns/op BenchmarkCountTortureOverlapping-8 331 3562777 ns/op BenchmarkCountTortureOverlapping-8 328 3557182 ns/op BenchmarkCountTortureOverlapping-8 331 3580030 ns/op BenchmarkCountTortureOverlapping-8 330 3561090 ns/op BenchmarkCountTortureOverlapping-8 333 3566127 ns/op BenchmarkCountByte/10-8 252256993 4.726 ns/op 2115.99 MB/s BenchmarkCountByte/10-8 254531733 4.729 ns/op 2114.82 MB/s BenchmarkCountByte/10-8 253091128 4.723 ns/op 2117.17 MB/s BenchmarkCountByte/10-8 254227170 4.735 ns/op 2111.85 MB/s BenchmarkCountByte/10-8 253158532 4.733 ns/op 2112.99 MB/s BenchmarkCountByte/10-8 251308718 4.707 ns/op 2124.67 MB/s BenchmarkCountByte/10-8 254002344 4.723 ns/op 2117.22 MB/s BenchmarkCountByte/10-8 252836541 4.715 ns/op 2120.78 MB/s BenchmarkCountByte/10-8 254645752 4.758 ns/op 2101.83 MB/s BenchmarkCountByte/10-8 254067837 4.726 ns/op 2115.92 MB/s BenchmarkCountByte/32-8 236945374 5.103 ns/op 6270.94 MB/s BenchmarkCountByte/32-8 235435248 5.096 ns/op 6279.17 MB/s BenchmarkCountByte/32-8 234857575 5.073 ns/op 6308.21 MB/s BenchmarkCountByte/32-8 236064378 5.061 ns/op 6323.33 MB/s BenchmarkCountByte/32-8 233198746 5.063 ns/op 6320.04 MB/s BenchmarkCountByte/32-8 236190188 5.068 ns/op 6313.60 MB/s BenchmarkCountByte/32-8 235425651 5.084 ns/op 6294.10 MB/s BenchmarkCountByte/32-8 236473237 5.157 ns/op 6205.61 MB/s BenchmarkCountByte/32-8 237296254 5.078 ns/op 6301.97 MB/s BenchmarkCountByte/32-8 235546006 5.078 ns/op 6301.29 MB/s BenchmarkCountByte/4K-8 20816254 57.58 ns/op 71133.17 MB/s BenchmarkCountByte/4K-8 20563842 57.82 ns/op 70837.42 MB/s BenchmarkCountByte/4K-8 20869678 57.58 ns/op 71133.03 MB/s BenchmarkCountByte/4K-8 20467219 58.07 ns/op 70534.36 MB/s BenchmarkCountByte/4K-8 20806855 57.84 ns/op 70816.53 MB/s BenchmarkCountByte/4K-8 19518199 57.62 ns/op 71086.68 MB/s BenchmarkCountByte/4K-8 20798350 57.63 ns/op 71069.75 MB/s BenchmarkCountByte/4K-8 20931735 57.64 ns/op 71061.68 MB/s BenchmarkCountByte/4K-8 20966947 57.67 ns/op 71028.44 MB/s BenchmarkCountByte/4K-8 20611686 57.61 ns/op 71100.68 MB/s BenchmarkCountByte/4M-8 13617 91132 ns/op 46024.33 MB/s BenchmarkCountByte/4M-8 13585 91224 ns/op 45978.17 MB/s BenchmarkCountByte/4M-8 13512 88611 ns/op 47333.66 MB/s BenchmarkCountByte/4M-8 13122 88860 ns/op 47201.12 MB/s BenchmarkCountByte/4M-8 13478 88467 ns/op 47410.83 MB/s BenchmarkCountByte/4M-8 13124 86719 ns/op 48366.61 MB/s BenchmarkCountByte/4M-8 13239 90675 ns/op 46256.31 MB/s BenchmarkCountByte/4M-8 13027 89661 ns/op 46779.37 MB/s BenchmarkCountByte/4M-8 12856 90080 ns/op 46562.12 MB/s BenchmarkCountByte/4M-8 12813 90172 ns/op 46514.31 MB/s BenchmarkCountByte/64M-8 298 3875429 ns/op 17316.50 MB/s BenchmarkCountByte/64M-8 284 3897490 ns/op 17218.48 MB/s BenchmarkCountByte/64M-8 298 3954402 ns/op 16970.67 MB/s BenchmarkCountByte/64M-8 304 3884789 ns/op 17274.77 MB/s BenchmarkCountByte/64M-8 314 4072981 ns/op 16476.60 MB/s BenchmarkCountByte/64M-8 288 3961698 ns/op 16939.42 MB/s BenchmarkCountByte/64M-8 291 3968220 ns/op 16911.58 MB/s BenchmarkCountByte/64M-8 291 3912414 ns/op 17152.80 MB/s BenchmarkCountByte/64M-8 291 3926281 ns/op 17092.22 MB/s BenchmarkCountByte/64M-8 303 4114765 ns/op 16309.28 MB/s BenchmarkIndexAnyASCII/1:1-8 190618046 6.264 ns/op BenchmarkIndexAnyASCII/1:1-8 189082722 6.224 ns/op BenchmarkIndexAnyASCII/1:1-8 192092761 6.228 ns/op BenchmarkIndexAnyASCII/1:1-8 193255392 6.249 ns/op BenchmarkIndexAnyASCII/1:1-8 192333630 6.227 ns/op BenchmarkIndexAnyASCII/1:1-8 191239065 6.272 ns/op BenchmarkIndexAnyASCII/1:1-8 192269145 6.235 ns/op BenchmarkIndexAnyASCII/1:1-8 190778328 6.214 ns/op BenchmarkIndexAnyASCII/1:1-8 191508034 6.275 ns/op BenchmarkIndexAnyASCII/1:1-8 191947912 6.261 ns/op BenchmarkIndexAnyASCII/1:2-8 148694259 8.105 ns/op BenchmarkIndexAnyASCII/1:2-8 147887577 8.116 ns/op BenchmarkIndexAnyASCII/1:2-8 149103229 8.089 ns/op BenchmarkIndexAnyASCII/1:2-8 149127046 8.152 ns/op BenchmarkIndexAnyASCII/1:2-8 149098291 8.138 ns/op BenchmarkIndexAnyASCII/1:2-8 147830268 8.091 ns/op BenchmarkIndexAnyASCII/1:2-8 146028542 8.114 ns/op BenchmarkIndexAnyASCII/1:2-8 147772137 8.125 ns/op BenchmarkIndexAnyASCII/1:2-8 148209103 8.096 ns/op BenchmarkIndexAnyASCII/1:2-8 146550226 8.121 ns/op BenchmarkIndexAnyASCII/1:4-8 147153136 8.110 ns/op BenchmarkIndexAnyASCII/1:4-8 147394508 8.118 ns/op BenchmarkIndexAnyASCII/1:4-8 147993229 8.082 ns/op BenchmarkIndexAnyASCII/1:4-8 147361173 8.087 ns/op BenchmarkIndexAnyASCII/1:4-8 147824062 8.123 ns/op BenchmarkIndexAnyASCII/1:4-8 148908471 8.127 ns/op BenchmarkIndexAnyASCII/1:4-8 149050538 8.110 ns/op BenchmarkIndexAnyASCII/1:4-8 148462963 8.129 ns/op BenchmarkIndexAnyASCII/1:4-8 148463024 8.119 ns/op BenchmarkIndexAnyASCII/1:4-8 147790497 8.143 ns/op BenchmarkIndexAnyASCII/1:8-8 147851706 8.131 ns/op BenchmarkIndexAnyASCII/1:8-8 149014198 8.094 ns/op BenchmarkIndexAnyASCII/1:8-8 148487319 8.124 ns/op BenchmarkIndexAnyASCII/1:8-8 148651933 8.100 ns/op BenchmarkIndexAnyASCII/1:8-8 147577298 8.113 ns/op BenchmarkIndexAnyASCII/1:8-8 148549233 8.132 ns/op BenchmarkIndexAnyASCII/1:8-8 147988314 8.074 ns/op BenchmarkIndexAnyASCII/1:8-8 147883165 8.074 ns/op BenchmarkIndexAnyASCII/1:8-8 147462405 8.113 ns/op BenchmarkIndexAnyASCII/1:8-8 147391222 8.107 ns/op BenchmarkIndexAnyASCII/1:16-8 151405642 7.945 ns/op BenchmarkIndexAnyASCII/1:16-8 151932451 7.918 ns/op BenchmarkIndexAnyASCII/1:16-8 151376926 7.893 ns/op BenchmarkIndexAnyASCII/1:16-8 150883988 7.908 ns/op BenchmarkIndexAnyASCII/1:16-8 151681831 7.915 ns/op BenchmarkIndexAnyASCII/1:16-8 151892164 7.959 ns/op BenchmarkIndexAnyASCII/1:16-8 150696021 7.893 ns/op BenchmarkIndexAnyASCII/1:16-8 151174194 7.921 ns/op BenchmarkIndexAnyASCII/1:16-8 151133605 7.891 ns/op BenchmarkIndexAnyASCII/1:16-8 151693714 8.060 ns/op BenchmarkIndexAnyASCII/1:32-8 145203442 8.243 ns/op BenchmarkIndexAnyASCII/1:32-8 143911185 8.237 ns/op BenchmarkIndexAnyASCII/1:32-8 143473681 8.257 ns/op BenchmarkIndexAnyASCII/1:32-8 144877182 8.277 ns/op BenchmarkIndexAnyASCII/1:32-8 145200123 8.271 ns/op BenchmarkIndexAnyASCII/1:32-8 144824674 8.249 ns/op BenchmarkIndexAnyASCII/1:32-8 145542182 8.269 ns/op BenchmarkIndexAnyASCII/1:32-8 144196065 8.285 ns/op BenchmarkIndexAnyASCII/1:32-8 144301348 8.251 ns/op BenchmarkIndexAnyASCII/1:32-8 145423826 8.280 ns/op BenchmarkIndexAnyASCII/1:64-8 140460193 8.513 ns/op BenchmarkIndexAnyASCII/1:64-8 140602834 8.514 ns/op BenchmarkIndexAnyASCII/1:64-8 138980887 8.481 ns/op BenchmarkIndexAnyASCII/1:64-8 140404279 8.518 ns/op BenchmarkIndexAnyASCII/1:64-8 140546980 8.512 ns/op BenchmarkIndexAnyASCII/1:64-8 140860570 8.515 ns/op BenchmarkIndexAnyASCII/1:64-8 140851194 8.531 ns/op BenchmarkIndexAnyASCII/1:64-8 141475927 8.535 ns/op BenchmarkIndexAnyASCII/1:64-8 140556742 8.484 ns/op BenchmarkIndexAnyASCII/1:64-8 141784798 8.509 ns/op BenchmarkIndexAnyASCII/16:1-8 192403492 6.239 ns/op BenchmarkIndexAnyASCII/16:1-8 192495722 6.253 ns/op BenchmarkIndexAnyASCII/16:1-8 191890255 6.269 ns/op BenchmarkIndexAnyASCII/16:1-8 188722742 6.302 ns/op BenchmarkIndexAnyASCII/16:1-8 190307815 6.253 ns/op BenchmarkIndexAnyASCII/16:1-8 191767818 6.230 ns/op BenchmarkIndexAnyASCII/16:1-8 192471985 6.247 ns/op BenchmarkIndexAnyASCII/16:1-8 192308960 6.247 ns/op BenchmarkIndexAnyASCII/16:1-8 191871758 6.246 ns/op BenchmarkIndexAnyASCII/16:1-8 192655132 6.239 ns/op BenchmarkIndexAnyASCII/16:2-8 65433920 17.95 ns/op BenchmarkIndexAnyASCII/16:2-8 65677544 17.96 ns/op BenchmarkIndexAnyASCII/16:2-8 66931323 18.07 ns/op BenchmarkIndexAnyASCII/16:2-8 66402943 17.97 ns/op BenchmarkIndexAnyASCII/16:2-8 67046240 18.15 ns/op BenchmarkIndexAnyASCII/16:2-8 66073364 18.11 ns/op BenchmarkIndexAnyASCII/16:2-8 66426952 18.02 ns/op BenchmarkIndexAnyASCII/16:2-8 66534520 18.15 ns/op BenchmarkIndexAnyASCII/16:2-8 66237549 18.02 ns/op BenchmarkIndexAnyASCII/16:2-8 66681996 18.08 ns/op BenchmarkIndexAnyASCII/16:4-8 62601920 18.90 ns/op BenchmarkIndexAnyASCII/16:4-8 64009947 18.78 ns/op BenchmarkIndexAnyASCII/16:4-8 64120179 18.97 ns/op BenchmarkIndexAnyASCII/16:4-8 62355613 18.88 ns/op BenchmarkIndexAnyASCII/16:4-8 62713119 19.04 ns/op BenchmarkIndexAnyASCII/16:4-8 61550025 18.97 ns/op BenchmarkIndexAnyASCII/16:4-8 61759330 19.01 ns/op BenchmarkIndexAnyASCII/16:4-8 62572179 18.88 ns/op BenchmarkIndexAnyASCII/16:4-8 63114531 18.90 ns/op BenchmarkIndexAnyASCII/16:4-8 63268597 18.90 ns/op BenchmarkIndexAnyASCII/16:8-8 51868596 21.94 ns/op BenchmarkIndexAnyASCII/16:8-8 53843600 21.96 ns/op BenchmarkIndexAnyASCII/16:8-8 54721488 22.21 ns/op BenchmarkIndexAnyASCII/16:8-8 54090861 21.93 ns/op BenchmarkIndexAnyASCII/16:8-8 53462760 22.08 ns/op BenchmarkIndexAnyASCII/16:8-8 52258022 21.91 ns/op BenchmarkIndexAnyASCII/16:8-8 54833684 22.05 ns/op BenchmarkIndexAnyASCII/16:8-8 54039567 22.02 ns/op BenchmarkIndexAnyASCII/16:8-8 54546844 21.92 ns/op BenchmarkIndexAnyASCII/16:8-8 53472813 22.08 ns/op BenchmarkIndexAnyASCII/16:16-8 37406095 32.08 ns/op BenchmarkIndexAnyASCII/16:16-8 37585580 31.89 ns/op BenchmarkIndexAnyASCII/16:16-8 37637876 31.94 ns/op BenchmarkIndexAnyASCII/16:16-8 37564600 31.92 ns/op BenchmarkIndexAnyASCII/16:16-8 37499266 31.94 ns/op BenchmarkIndexAnyASCII/16:16-8 37284601 32.01 ns/op BenchmarkIndexAnyASCII/16:16-8 37565060 31.90 ns/op BenchmarkIndexAnyASCII/16:16-8 38061643 32.00 ns/op BenchmarkIndexAnyASCII/16:16-8 36558199 31.92 ns/op BenchmarkIndexAnyASCII/16:16-8 36787450 32.09 ns/op BenchmarkIndexAnyASCII/16:32-8 21744630 55.37 ns/op BenchmarkIndexAnyASCII/16:32-8 21584614 55.34 ns/op BenchmarkIndexAnyASCII/16:32-8 21562831 55.31 ns/op BenchmarkIndexAnyASCII/16:32-8 21611320 55.43 ns/op BenchmarkIndexAnyASCII/16:32-8 21806406 55.23 ns/op BenchmarkIndexAnyASCII/16:32-8 21963566 55.18 ns/op BenchmarkIndexAnyASCII/16:32-8 21180044 55.38 ns/op BenchmarkIndexAnyASCII/16:32-8 21163882 55.12 ns/op BenchmarkIndexAnyASCII/16:32-8 21971041 55.31 ns/op BenchmarkIndexAnyASCII/16:32-8 21504448 55.16 ns/op BenchmarkIndexAnyASCII/16:64-8 12802468 92.34 ns/op BenchmarkIndexAnyASCII/16:64-8 12688251 92.49 ns/op BenchmarkIndexAnyASCII/16:64-8 12777354 92.42 ns/op BenchmarkIndexAnyASCII/16:64-8 12901746 92.54 ns/op BenchmarkIndexAnyASCII/16:64-8 12829628 92.71 ns/op BenchmarkIndexAnyASCII/16:64-8 12914284 92.45 ns/op BenchmarkIndexAnyASCII/16:64-8 12835213 92.86 ns/op BenchmarkIndexAnyASCII/16:64-8 12828259 92.86 ns/op BenchmarkIndexAnyASCII/16:64-8 13067386 93.06 ns/op BenchmarkIndexAnyASCII/16:64-8 12676322 92.70 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.22 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.28 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.26 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.29 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.28 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.24 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.30 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.26 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.26 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.27 ns/op BenchmarkIndexAnyASCII/256:2-8 8219890 144.1 ns/op BenchmarkIndexAnyASCII/256:2-8 8164317 144.2 ns/op BenchmarkIndexAnyASCII/256:2-8 8231169 143.7 ns/op BenchmarkIndexAnyASCII/256:2-8 8298145 143.9 ns/op BenchmarkIndexAnyASCII/256:2-8 8192335 145.0 ns/op BenchmarkIndexAnyASCII/256:2-8 8264348 144.1 ns/op BenchmarkIndexAnyASCII/256:2-8 8275410 144.2 ns/op BenchmarkIndexAnyASCII/256:2-8 8253336 144.4 ns/op BenchmarkIndexAnyASCII/256:2-8 8221714 143.7 ns/op BenchmarkIndexAnyASCII/256:2-8 8300659 144.0 ns/op BenchmarkIndexAnyASCII/256:4-8 8198545 146.1 ns/op BenchmarkIndexAnyASCII/256:4-8 8180911 145.8 ns/op BenchmarkIndexAnyASCII/256:4-8 8245650 147.2 ns/op BenchmarkIndexAnyASCII/256:4-8 8083977 146.4 ns/op BenchmarkIndexAnyASCII/256:4-8 8162758 146.2 ns/op BenchmarkIndexAnyASCII/256:4-8 8181088 146.3 ns/op BenchmarkIndexAnyASCII/256:4-8 8145559 146.4 ns/op BenchmarkIndexAnyASCII/256:4-8 8243612 146.1 ns/op BenchmarkIndexAnyASCII/256:4-8 8227542 146.2 ns/op BenchmarkIndexAnyASCII/256:4-8 8111361 147.1 ns/op BenchmarkIndexAnyASCII/256:8-8 8001720 150.3 ns/op BenchmarkIndexAnyASCII/256:8-8 8053351 150.0 ns/op BenchmarkIndexAnyASCII/256:8-8 7895376 150.0 ns/op BenchmarkIndexAnyASCII/256:8-8 7924932 149.9 ns/op BenchmarkIndexAnyASCII/256:8-8 7964584 150.2 ns/op BenchmarkIndexAnyASCII/256:8-8 7939803 150.1 ns/op BenchmarkIndexAnyASCII/256:8-8 7940506 149.8 ns/op BenchmarkIndexAnyASCII/256:8-8 7979952 150.4 ns/op BenchmarkIndexAnyASCII/256:8-8 7928797 150.1 ns/op BenchmarkIndexAnyASCII/256:8-8 8062036 151.2 ns/op BenchmarkIndexAnyASCII/256:16-8 7385827 160.9 ns/op BenchmarkIndexAnyASCII/256:16-8 7450380 161.6 ns/op BenchmarkIndexAnyASCII/256:16-8 7472883 160.3 ns/op BenchmarkIndexAnyASCII/256:16-8 7398430 160.7 ns/op BenchmarkIndexAnyASCII/256:16-8 7434289 160.2 ns/op BenchmarkIndexAnyASCII/256:16-8 7428376 160.6 ns/op BenchmarkIndexAnyASCII/256:16-8 7386156 161.1 ns/op BenchmarkIndexAnyASCII/256:16-8 7446672 161.6 ns/op BenchmarkIndexAnyASCII/256:16-8 7404357 161.1 ns/op BenchmarkIndexAnyASCII/256:16-8 7383136 161.4 ns/op BenchmarkIndexAnyASCII/256:32-8 6378036 187.7 ns/op BenchmarkIndexAnyASCII/256:32-8 6327685 188.3 ns/op BenchmarkIndexAnyASCII/256:32-8 6371650 187.6 ns/op BenchmarkIndexAnyASCII/256:32-8 6426938 187.3 ns/op BenchmarkIndexAnyASCII/256:32-8 6345601 187.7 ns/op BenchmarkIndexAnyASCII/256:32-8 6346990 187.1 ns/op BenchmarkIndexAnyASCII/256:32-8 6414793 189.4 ns/op BenchmarkIndexAnyASCII/256:32-8 6399493 187.7 ns/op BenchmarkIndexAnyASCII/256:32-8 6390318 187.7 ns/op BenchmarkIndexAnyASCII/256:32-8 6329395 186.9 ns/op BenchmarkIndexAnyASCII/256:64-8 5319404 225.5 ns/op BenchmarkIndexAnyASCII/256:64-8 5337202 225.1 ns/op BenchmarkIndexAnyASCII/256:64-8 5341671 224.3 ns/op BenchmarkIndexAnyASCII/256:64-8 5348679 225.0 ns/op BenchmarkIndexAnyASCII/256:64-8 5213557 225.6 ns/op BenchmarkIndexAnyASCII/256:64-8 5363208 225.0 ns/op BenchmarkIndexAnyASCII/256:64-8 5314016 224.8 ns/op BenchmarkIndexAnyASCII/256:64-8 5298919 225.2 ns/op BenchmarkIndexAnyASCII/256:64-8 5359131 224.5 ns/op BenchmarkIndexAnyASCII/256:64-8 5266276 224.8 ns/op BenchmarkIndexAnyUTF8/1:1-8 343911777 3.493 ns/op BenchmarkIndexAnyUTF8/1:1-8 341511483 3.488 ns/op BenchmarkIndexAnyUTF8/1:1-8 345608617 3.519 ns/op BenchmarkIndexAnyUTF8/1:1-8 338894272 3.479 ns/op BenchmarkIndexAnyUTF8/1:1-8 341972618 3.509 ns/op BenchmarkIndexAnyUTF8/1:1-8 346077436 3.499 ns/op BenchmarkIndexAnyUTF8/1:1-8 341603690 3.486 ns/op BenchmarkIndexAnyUTF8/1:1-8 342992846 3.490 ns/op BenchmarkIndexAnyUTF8/1:1-8 342034680 3.481 ns/op BenchmarkIndexAnyUTF8/1:1-8 341491376 3.481 ns/op BenchmarkIndexAnyUTF8/1:2-8 148704279 8.110 ns/op BenchmarkIndexAnyUTF8/1:2-8 147481387 8.096 ns/op BenchmarkIndexAnyUTF8/1:2-8 147589567 8.127 ns/op BenchmarkIndexAnyUTF8/1:2-8 148390518 8.148 ns/op BenchmarkIndexAnyUTF8/1:2-8 148069474 8.106 ns/op BenchmarkIndexAnyUTF8/1:2-8 147947637 8.119 ns/op BenchmarkIndexAnyUTF8/1:2-8 148825580 8.143 ns/op BenchmarkIndexAnyUTF8/1:2-8 147405480 8.117 ns/op BenchmarkIndexAnyUTF8/1:2-8 148241070 8.118 ns/op BenchmarkIndexAnyUTF8/1:2-8 148433646 8.094 ns/op BenchmarkIndexAnyUTF8/1:4-8 148468741 8.084 ns/op BenchmarkIndexAnyUTF8/1:4-8 148787658 8.071 ns/op BenchmarkIndexAnyUTF8/1:4-8 149011000 8.080 ns/op BenchmarkIndexAnyUTF8/1:4-8 147712149 8.133 ns/op BenchmarkIndexAnyUTF8/1:4-8 147884680 8.126 ns/op BenchmarkIndexAnyUTF8/1:4-8 148269123 8.116 ns/op BenchmarkIndexAnyUTF8/1:4-8 149363894 8.131 ns/op BenchmarkIndexAnyUTF8/1:4-8 148596142 8.094 ns/op BenchmarkIndexAnyUTF8/1:4-8 148730542 8.115 ns/op BenchmarkIndexAnyUTF8/1:4-8 147278204 8.093 ns/op BenchmarkIndexAnyUTF8/1:8-8 147493538 8.099 ns/op BenchmarkIndexAnyUTF8/1:8-8 147923806 8.082 ns/op BenchmarkIndexAnyUTF8/1:8-8 148067670 8.077 ns/op BenchmarkIndexAnyUTF8/1:8-8 148198360 8.079 ns/op BenchmarkIndexAnyUTF8/1:8-8 146562831 8.076 ns/op BenchmarkIndexAnyUTF8/1:8-8 148359055 8.064 ns/op BenchmarkIndexAnyUTF8/1:8-8 147693117 8.071 ns/op BenchmarkIndexAnyUTF8/1:8-8 147634503 8.079 ns/op BenchmarkIndexAnyUTF8/1:8-8 148433977 8.133 ns/op BenchmarkIndexAnyUTF8/1:8-8 148108087 8.072 ns/op BenchmarkIndexAnyUTF8/1:16-8 151710132 7.919 ns/op BenchmarkIndexAnyUTF8/1:16-8 150373936 7.910 ns/op BenchmarkIndexAnyUTF8/1:16-8 151862912 7.884 ns/op BenchmarkIndexAnyUTF8/1:16-8 151624908 7.917 ns/op BenchmarkIndexAnyUTF8/1:16-8 150350569 7.960 ns/op BenchmarkIndexAnyUTF8/1:16-8 151341468 7.895 ns/op BenchmarkIndexAnyUTF8/1:16-8 151000809 7.937 ns/op BenchmarkIndexAnyUTF8/1:16-8 151815366 7.946 ns/op BenchmarkIndexAnyUTF8/1:16-8 150926547 7.896 ns/op BenchmarkIndexAnyUTF8/1:16-8 150981338 7.895 ns/op BenchmarkIndexAnyUTF8/1:32-8 144422662 8.274 ns/op BenchmarkIndexAnyUTF8/1:32-8 144723373 8.304 ns/op BenchmarkIndexAnyUTF8/1:32-8 143053210 8.306 ns/op BenchmarkIndexAnyUTF8/1:32-8 144957342 8.335 ns/op BenchmarkIndexAnyUTF8/1:32-8 143073111 8.247 ns/op BenchmarkIndexAnyUTF8/1:32-8 143797009 8.280 ns/op BenchmarkIndexAnyUTF8/1:32-8 143950213 8.349 ns/op BenchmarkIndexAnyUTF8/1:32-8 144454068 8.284 ns/op BenchmarkIndexAnyUTF8/1:32-8 144173790 8.312 ns/op BenchmarkIndexAnyUTF8/1:32-8 142256858 8.369 ns/op BenchmarkIndexAnyUTF8/1:64-8 140777800 8.498 ns/op BenchmarkIndexAnyUTF8/1:64-8 140497044 8.530 ns/op BenchmarkIndexAnyUTF8/1:64-8 140491934 8.503 ns/op BenchmarkIndexAnyUTF8/1:64-8 140913741 8.523 ns/op BenchmarkIndexAnyUTF8/1:64-8 140144233 8.493 ns/op BenchmarkIndexAnyUTF8/1:64-8 140501376 8.575 ns/op BenchmarkIndexAnyUTF8/1:64-8 141109509 8.506 ns/op BenchmarkIndexAnyUTF8/1:64-8 140753144 8.556 ns/op BenchmarkIndexAnyUTF8/1:64-8 140218014 8.554 ns/op BenchmarkIndexAnyUTF8/1:64-8 141107846 8.533 ns/op BenchmarkIndexAnyUTF8/16:1-8 76012456 13.85 ns/op BenchmarkIndexAnyUTF8/16:1-8 78706210 13.70 ns/op BenchmarkIndexAnyUTF8/16:1-8 90534913 13.94 ns/op BenchmarkIndexAnyUTF8/16:1-8 73991937 13.66 ns/op BenchmarkIndexAnyUTF8/16:1-8 73466982 13.92 ns/op BenchmarkIndexAnyUTF8/16:1-8 93196418 13.48 ns/op BenchmarkIndexAnyUTF8/16:1-8 73843635 14.38 ns/op BenchmarkIndexAnyUTF8/16:1-8 81456694 12.70 ns/op BenchmarkIndexAnyUTF8/16:1-8 90772546 13.35 ns/op BenchmarkIndexAnyUTF8/16:1-8 92143464 13.00 ns/op BenchmarkIndexAnyUTF8/16:2-8 34809942 32.75 ns/op BenchmarkIndexAnyUTF8/16:2-8 35876167 32.72 ns/op BenchmarkIndexAnyUTF8/16:2-8 33801843 32.80 ns/op BenchmarkIndexAnyUTF8/16:2-8 33916912 32.93 ns/op BenchmarkIndexAnyUTF8/16:2-8 36399544 32.69 ns/op BenchmarkIndexAnyUTF8/16:2-8 36470617 32.97 ns/op BenchmarkIndexAnyUTF8/16:2-8 37040377 32.73 ns/op BenchmarkIndexAnyUTF8/16:2-8 36754160 32.65 ns/op BenchmarkIndexAnyUTF8/16:2-8 36426535 32.87 ns/op BenchmarkIndexAnyUTF8/16:2-8 35060371 32.60 ns/op BenchmarkIndexAnyUTF8/16:4-8 33437122 35.86 ns/op BenchmarkIndexAnyUTF8/16:4-8 33330153 35.80 ns/op BenchmarkIndexAnyUTF8/16:4-8 32364394 35.79 ns/op BenchmarkIndexAnyUTF8/16:4-8 33314623 35.89 ns/op BenchmarkIndexAnyUTF8/16:4-8 33416200 35.69 ns/op BenchmarkIndexAnyUTF8/16:4-8 33162487 35.94 ns/op BenchmarkIndexAnyUTF8/16:4-8 33295460 35.69 ns/op BenchmarkIndexAnyUTF8/16:4-8 32532460 35.91 ns/op BenchmarkIndexAnyUTF8/16:4-8 32983971 35.83 ns/op BenchmarkIndexAnyUTF8/16:4-8 34012768 35.80 ns/op BenchmarkIndexAnyUTF8/16:8-8 12539760 95.71 ns/op BenchmarkIndexAnyUTF8/16:8-8 12346305 95.39 ns/op BenchmarkIndexAnyUTF8/16:8-8 12511687 95.35 ns/op BenchmarkIndexAnyUTF8/16:8-8 12101056 95.64 ns/op BenchmarkIndexAnyUTF8/16:8-8 12389728 95.54 ns/op BenchmarkIndexAnyUTF8/16:8-8 12462968 95.37 ns/op BenchmarkIndexAnyUTF8/16:8-8 12658023 95.62 ns/op BenchmarkIndexAnyUTF8/16:8-8 12500572 95.70 ns/op BenchmarkIndexAnyUTF8/16:8-8 12377860 95.63 ns/op BenchmarkIndexAnyUTF8/16:8-8 12535929 95.40 ns/op BenchmarkIndexAnyUTF8/16:16-8 11495811 100.1 ns/op BenchmarkIndexAnyUTF8/16:16-8 12070388 100.5 ns/op BenchmarkIndexAnyUTF8/16:16-8 11800040 100.1 ns/op BenchmarkIndexAnyUTF8/16:16-8 11977509 99.37 ns/op BenchmarkIndexAnyUTF8/16:16-8 12137716 99.91 ns/op BenchmarkIndexAnyUTF8/16:16-8 11717276 100.7 ns/op BenchmarkIndexAnyUTF8/16:16-8 11849078 99.82 ns/op BenchmarkIndexAnyUTF8/16:16-8 12084730 100.5 ns/op BenchmarkIndexAnyUTF8/16:16-8 11982081 101.1 ns/op BenchmarkIndexAnyUTF8/16:16-8 11892890 100.2 ns/op BenchmarkIndexAnyUTF8/16:32-8 11577843 104.5 ns/op BenchmarkIndexAnyUTF8/16:32-8 11388127 104.2 ns/op BenchmarkIndexAnyUTF8/16:32-8 11219563 104.7 ns/op BenchmarkIndexAnyUTF8/16:32-8 9864243 104.9 ns/op BenchmarkIndexAnyUTF8/16:32-8 11600157 103.8 ns/op BenchmarkIndexAnyUTF8/16:32-8 11569886 104.4 ns/op BenchmarkIndexAnyUTF8/16:32-8 11204731 104.8 ns/op BenchmarkIndexAnyUTF8/16:32-8 11417991 105.4 ns/op BenchmarkIndexAnyUTF8/16:32-8 11430934 104.8 ns/op BenchmarkIndexAnyUTF8/16:32-8 11430588 104.6 ns/op BenchmarkIndexAnyUTF8/16:64-8 10867516 110.4 ns/op BenchmarkIndexAnyUTF8/16:64-8 10879046 110.7 ns/op BenchmarkIndexAnyUTF8/16:64-8 10787468 110.5 ns/op BenchmarkIndexAnyUTF8/16:64-8 10910782 109.7 ns/op BenchmarkIndexAnyUTF8/16:64-8 11016079 110.6 ns/op BenchmarkIndexAnyUTF8/16:64-8 10987585 110.7 ns/op BenchmarkIndexAnyUTF8/16:64-8 10826006 109.7 ns/op BenchmarkIndexAnyUTF8/16:64-8 10752087 110.3 ns/op BenchmarkIndexAnyUTF8/16:64-8 10818680 110.4 ns/op BenchmarkIndexAnyUTF8/16:64-8 10672084 109.9 ns/op BenchmarkIndexAnyUTF8/256:1-8 7153470 167.6 ns/op BenchmarkIndexAnyUTF8/256:1-8 7249388 167.3 ns/op BenchmarkIndexAnyUTF8/256:1-8 7022272 167.0 ns/op BenchmarkIndexAnyUTF8/256:1-8 7259488 166.9 ns/op BenchmarkIndexAnyUTF8/256:1-8 7136956 167.7 ns/op BenchmarkIndexAnyUTF8/256:1-8 7141791 167.6 ns/op BenchmarkIndexAnyUTF8/256:1-8 7216014 167.7 ns/op BenchmarkIndexAnyUTF8/256:1-8 7049109 167.8 ns/op BenchmarkIndexAnyUTF8/256:1-8 7136626 166.8 ns/op BenchmarkIndexAnyUTF8/256:1-8 7192206 167.0 ns/op BenchmarkIndexAnyUTF8/256:2-8 3433861 348.5 ns/op BenchmarkIndexAnyUTF8/256:2-8 3460634 348.3 ns/op BenchmarkIndexAnyUTF8/256:2-8 3446661 349.4 ns/op BenchmarkIndexAnyUTF8/256:2-8 3388531 347.9 ns/op BenchmarkIndexAnyUTF8/256:2-8 3446791 347.5 ns/op BenchmarkIndexAnyUTF8/256:2-8 3431143 349.2 ns/op BenchmarkIndexAnyUTF8/256:2-8 3426742 347.6 ns/op BenchmarkIndexAnyUTF8/256:2-8 3374596 346.4 ns/op BenchmarkIndexAnyUTF8/256:2-8 3479852 348.7 ns/op BenchmarkIndexAnyUTF8/256:2-8 3411543 349.5 ns/op BenchmarkIndexAnyUTF8/256:4-8 6218953 193.0 ns/op BenchmarkIndexAnyUTF8/256:4-8 6127190 193.2 ns/op BenchmarkIndexAnyUTF8/256:4-8 6211284 193.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 6220690 193.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 6214633 192.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 6220747 192.9 ns/op BenchmarkIndexAnyUTF8/256:4-8 6177144 195.4 ns/op BenchmarkIndexAnyUTF8/256:4-8 6194314 193.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 6118905 193.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 6081081 193.9 ns/op BenchmarkIndexAnyUTF8/256:8-8 3079740 390.4 ns/op BenchmarkIndexAnyUTF8/256:8-8 3073801 387.1 ns/op BenchmarkIndexAnyUTF8/256:8-8 3082116 389.0 ns/op BenchmarkIndexAnyUTF8/256:8-8 3082893 389.5 ns/op BenchmarkIndexAnyUTF8/256:8-8 3057350 390.3 ns/op BenchmarkIndexAnyUTF8/256:8-8 3096895 388.2 ns/op BenchmarkIndexAnyUTF8/256:8-8 3070902 389.3 ns/op BenchmarkIndexAnyUTF8/256:8-8 3078483 387.7 ns/op BenchmarkIndexAnyUTF8/256:8-8 3091909 387.1 ns/op BenchmarkIndexAnyUTF8/256:8-8 3067113 389.8 ns/op BenchmarkIndexAnyUTF8/256:16-8 9500497 125.3 ns/op BenchmarkIndexAnyUTF8/256:16-8 9605703 126.4 ns/op BenchmarkIndexAnyUTF8/256:16-8 9466160 127.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 9492134 125.4 ns/op BenchmarkIndexAnyUTF8/256:16-8 9551588 125.6 ns/op BenchmarkIndexAnyUTF8/256:16-8 9568482 126.1 ns/op BenchmarkIndexAnyUTF8/256:16-8 9520458 125.2 ns/op BenchmarkIndexAnyUTF8/256:16-8 9507194 126.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 9460644 125.7 ns/op BenchmarkIndexAnyUTF8/256:16-8 9496380 125.9 ns/op BenchmarkIndexAnyUTF8/256:32-8 1865240 644.5 ns/op BenchmarkIndexAnyUTF8/256:32-8 1864508 642.4 ns/op BenchmarkIndexAnyUTF8/256:32-8 1867573 644.3 ns/op BenchmarkIndexAnyUTF8/256:32-8 1863484 644.0 ns/op BenchmarkIndexAnyUTF8/256:32-8 1858300 645.7 ns/op BenchmarkIndexAnyUTF8/256:32-8 1871629 642.5 ns/op BenchmarkIndexAnyUTF8/256:32-8 1865494 642.9 ns/op BenchmarkIndexAnyUTF8/256:32-8 1858752 644.2 ns/op BenchmarkIndexAnyUTF8/256:32-8 1885203 651.1 ns/op BenchmarkIndexAnyUTF8/256:32-8 1870776 641.5 ns/op BenchmarkIndexAnyUTF8/256:64-8 1558164 770.1 ns/op BenchmarkIndexAnyUTF8/256:64-8 1559960 764.5 ns/op BenchmarkIndexAnyUTF8/256:64-8 1567668 766.1 ns/op BenchmarkIndexAnyUTF8/256:64-8 1573953 766.9 ns/op BenchmarkIndexAnyUTF8/256:64-8 1564354 766.0 ns/op BenchmarkIndexAnyUTF8/256:64-8 1576772 768.5 ns/op BenchmarkIndexAnyUTF8/256:64-8 1566258 768.2 ns/op BenchmarkIndexAnyUTF8/256:64-8 1539738 763.4 ns/op BenchmarkIndexAnyUTF8/256:64-8 1559990 763.1 ns/op BenchmarkIndexAnyUTF8/256:64-8 1549476 764.8 ns/op BenchmarkLastIndexAnyASCII/1:1-8 177135799 6.746 ns/op BenchmarkLastIndexAnyASCII/1:1-8 179015863 6.779 ns/op BenchmarkLastIndexAnyASCII/1:1-8 179228214 6.723 ns/op BenchmarkLastIndexAnyASCII/1:1-8 178108500 6.755 ns/op BenchmarkLastIndexAnyASCII/1:1-8 177731670 6.756 ns/op BenchmarkLastIndexAnyASCII/1:1-8 178668009 6.676 ns/op BenchmarkLastIndexAnyASCII/1:1-8 177729918 6.711 ns/op BenchmarkLastIndexAnyASCII/1:1-8 180692374 6.748 ns/op BenchmarkLastIndexAnyASCII/1:1-8 179529541 6.747 ns/op BenchmarkLastIndexAnyASCII/1:1-8 178710081 6.767 ns/op BenchmarkLastIndexAnyASCII/1:2-8 179460998 6.703 ns/op BenchmarkLastIndexAnyASCII/1:2-8 178892766 6.762 ns/op BenchmarkLastIndexAnyASCII/1:2-8 178832582 6.670 ns/op BenchmarkLastIndexAnyASCII/1:2-8 178778581 6.755 ns/op BenchmarkLastIndexAnyASCII/1:2-8 178818492 6.708 ns/op BenchmarkLastIndexAnyASCII/1:2-8 176136768 6.736 ns/op BenchmarkLastIndexAnyASCII/1:2-8 177127032 6.656 ns/op BenchmarkLastIndexAnyASCII/1:2-8 179510667 6.672 ns/op BenchmarkLastIndexAnyASCII/1:2-8 179532222 6.724 ns/op BenchmarkLastIndexAnyASCII/1:2-8 177306151 6.734 ns/op BenchmarkLastIndexAnyASCII/1:4-8 178624238 6.728 ns/op BenchmarkLastIndexAnyASCII/1:4-8 177955122 6.740 ns/op BenchmarkLastIndexAnyASCII/1:4-8 176677178 6.734 ns/op BenchmarkLastIndexAnyASCII/1:4-8 178773666 6.706 ns/op BenchmarkLastIndexAnyASCII/1:4-8 180023366 6.691 ns/op BenchmarkLastIndexAnyASCII/1:4-8 178842464 6.741 ns/op BenchmarkLastIndexAnyASCII/1:4-8 178122703 6.743 ns/op BenchmarkLastIndexAnyASCII/1:4-8 176867456 6.696 ns/op BenchmarkLastIndexAnyASCII/1:4-8 177237879 6.832 ns/op BenchmarkLastIndexAnyASCII/1:4-8 177754532 6.749 ns/op BenchmarkLastIndexAnyASCII/1:8-8 179001524 6.718 ns/op BenchmarkLastIndexAnyASCII/1:8-8 179680938 6.711 ns/op BenchmarkLastIndexAnyASCII/1:8-8 178997296 6.743 ns/op BenchmarkLastIndexAnyASCII/1:8-8 178368604 6.706 ns/op BenchmarkLastIndexAnyASCII/1:8-8 179008316 6.699 ns/op BenchmarkLastIndexAnyASCII/1:8-8 177338492 6.695 ns/op BenchmarkLastIndexAnyASCII/1:8-8 178237207 6.714 ns/op BenchmarkLastIndexAnyASCII/1:8-8 177275187 6.715 ns/op BenchmarkLastIndexAnyASCII/1:8-8 178507676 6.737 ns/op BenchmarkLastIndexAnyASCII/1:8-8 177179714 6.771 ns/op BenchmarkLastIndexAnyASCII/1:16-8 185703572 6.494 ns/op BenchmarkLastIndexAnyASCII/1:16-8 186942691 6.473 ns/op BenchmarkLastIndexAnyASCII/1:16-8 185765796 6.435 ns/op BenchmarkLastIndexAnyASCII/1:16-8 185473657 6.455 ns/op BenchmarkLastIndexAnyASCII/1:16-8 184679486 6.480 ns/op BenchmarkLastIndexAnyASCII/1:16-8 184698744 6.456 ns/op BenchmarkLastIndexAnyASCII/1:16-8 186119275 6.462 ns/op BenchmarkLastIndexAnyASCII/1:16-8 186593324 6.465 ns/op BenchmarkLastIndexAnyASCII/1:16-8 186278478 6.442 ns/op BenchmarkLastIndexAnyASCII/1:16-8 185756205 6.455 ns/op BenchmarkLastIndexAnyASCII/1:32-8 172934817 6.919 ns/op BenchmarkLastIndexAnyASCII/1:32-8 172059979 6.907 ns/op BenchmarkLastIndexAnyASCII/1:32-8 172096148 6.899 ns/op BenchmarkLastIndexAnyASCII/1:32-8 172543729 6.907 ns/op BenchmarkLastIndexAnyASCII/1:32-8 171196929 6.935 ns/op BenchmarkLastIndexAnyASCII/1:32-8 174621399 6.947 ns/op BenchmarkLastIndexAnyASCII/1:32-8 174599888 6.945 ns/op BenchmarkLastIndexAnyASCII/1:32-8 174148411 6.917 ns/op BenchmarkLastIndexAnyASCII/1:32-8 173881512 6.894 ns/op BenchmarkLastIndexAnyASCII/1:32-8 173328306 6.938 ns/op BenchmarkLastIndexAnyASCII/1:64-8 164111833 7.327 ns/op BenchmarkLastIndexAnyASCII/1:64-8 163776748 7.276 ns/op BenchmarkLastIndexAnyASCII/1:64-8 163868302 7.311 ns/op BenchmarkLastIndexAnyASCII/1:64-8 163984652 7.324 ns/op BenchmarkLastIndexAnyASCII/1:64-8 164309186 7.283 ns/op BenchmarkLastIndexAnyASCII/1:64-8 164707314 7.262 ns/op BenchmarkLastIndexAnyASCII/1:64-8 163535679 7.260 ns/op BenchmarkLastIndexAnyASCII/1:64-8 164176339 7.290 ns/op BenchmarkLastIndexAnyASCII/1:64-8 164472555 7.294 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165800986 7.313 ns/op BenchmarkLastIndexAnyASCII/16:1-8 71573917 16.61 ns/op BenchmarkLastIndexAnyASCII/16:1-8 71595042 16.65 ns/op BenchmarkLastIndexAnyASCII/16:1-8 71793817 16.52 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72460678 16.54 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72291085 16.61 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72636441 16.61 ns/op BenchmarkLastIndexAnyASCII/16:1-8 71358240 16.57 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72061831 16.54 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72071673 16.55 ns/op BenchmarkLastIndexAnyASCII/16:1-8 71967332 16.58 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71249484 16.83 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71213788 16.79 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71090000 16.73 ns/op BenchmarkLastIndexAnyASCII/16:2-8 72102124 16.88 ns/op BenchmarkLastIndexAnyASCII/16:2-8 70480693 16.75 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71642427 16.79 ns/op BenchmarkLastIndexAnyASCII/16:2-8 70587009 16.81 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71142025 16.75 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71536036 16.85 ns/op BenchmarkLastIndexAnyASCII/16:2-8 72136435 16.70 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67038772 17.87 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67725039 17.82 ns/op BenchmarkLastIndexAnyASCII/16:4-8 65865637 17.89 ns/op BenchmarkLastIndexAnyASCII/16:4-8 65042952 17.89 ns/op BenchmarkLastIndexAnyASCII/16:4-8 66590966 17.82 ns/op BenchmarkLastIndexAnyASCII/16:4-8 68646661 17.84 ns/op BenchmarkLastIndexAnyASCII/16:4-8 66748918 17.82 ns/op BenchmarkLastIndexAnyASCII/16:4-8 65512402 17.85 ns/op BenchmarkLastIndexAnyASCII/16:4-8 63796126 17.92 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67071660 17.77 ns/op BenchmarkLastIndexAnyASCII/16:8-8 55250010 21.42 ns/op BenchmarkLastIndexAnyASCII/16:8-8 54423498 21.32 ns/op BenchmarkLastIndexAnyASCII/16:8-8 55919276 21.49 ns/op BenchmarkLastIndexAnyASCII/16:8-8 49373785 21.49 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56140260 21.49 ns/op BenchmarkLastIndexAnyASCII/16:8-8 51991348 21.35 ns/op BenchmarkLastIndexAnyASCII/16:8-8 53156706 21.39 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56363598 21.46 ns/op BenchmarkLastIndexAnyASCII/16:8-8 54920757 21.41 ns/op BenchmarkLastIndexAnyASCII/16:8-8 54817188 21.34 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38391220 31.49 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38551815 31.27 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38108236 31.17 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38548285 31.01 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38258728 31.28 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38994327 31.19 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38784776 31.11 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38287476 31.21 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38463687 31.20 ns/op BenchmarkLastIndexAnyASCII/16:16-8 37320555 31.23 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21858730 54.36 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22052166 54.53 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22117266 54.74 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21929499 54.57 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21577117 54.58 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21982089 54.58 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22205883 54.75 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22047787 54.75 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21822806 54.53 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21702309 54.52 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12833526 91.91 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12481176 92.36 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12950385 91.63 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13138948 92.55 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13003894 92.35 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13007956 91.79 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12996988 91.98 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12903229 91.92 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12943743 91.97 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12994908 91.56 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9115420 131.2 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9210693 131.1 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9116092 130.9 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9186536 131.0 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9195388 130.8 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9266139 131.2 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9128764 130.9 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9226101 131.1 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9156315 131.1 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9144109 131.2 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9210709 132.0 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9099572 132.1 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9044797 131.6 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9107618 131.3 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9073461 132.3 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9173268 131.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 8967675 131.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9067662 131.3 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9110613 131.2 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9239043 131.4 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8950428 134.0 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8961090 133.8 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9062925 133.7 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9069408 133.4 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8922207 133.4 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9075528 134.5 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8975666 133.2 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8931364 133.4 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8988273 133.7 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9001158 133.4 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8624713 138.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8609044 138.3 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8667385 138.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8642598 138.6 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8499458 138.8 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8570534 138.3 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8584160 138.1 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8673134 137.9 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8634924 138.1 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8609270 138.6 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8075210 148.7 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8140612 148.6 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8106346 147.7 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8076390 148.1 ns/op BenchmarkLastIndexAnyASCII/256:16-8 7999632 149.0 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8037741 148.8 ns/op BenchmarkLastIndexAnyASCII/256:16-8 7941451 148.4 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8103666 149.0 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8072767 148.5 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8037474 148.5 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6728846 176.3 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6815755 176.3 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6805358 175.6 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6769281 176.1 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6834786 175.5 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6803560 176.8 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6815070 175.7 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6778983 176.2 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6769790 176.0 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6882074 176.3 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5642521 214.2 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5629144 214.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5600205 213.0 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5553783 214.8 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5562171 213.7 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5630622 213.7 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5632000 212.9 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5569351 215.6 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5511363 216.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5651800 213.2 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 176246589 6.748 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 177624021 6.740 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 176428737 6.720 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 177860420 6.698 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 177624211 6.824 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 177137485 6.715 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 177665593 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 180930747 6.800 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 176712502 6.795 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 176956548 6.760 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 176189826 6.730 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 175941271 6.756 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 175656070 6.750 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 177983013 6.747 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 178829365 6.760 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 177564478 6.781 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 176019441 6.786 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 176593176 6.737 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 174368650 6.726 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 176439262 6.770 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 176666659 6.822 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 176602894 6.743 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 177038908 6.734 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 175944830 6.785 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 180770209 6.772 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 177321259 6.774 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 174766880 6.805 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 177489076 6.737 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 179154862 6.776 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 176668098 6.746 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 176463367 6.785 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 177998509 6.792 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 177061947 6.739 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 177208186 6.805 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 177898065 6.780 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 175237788 6.752 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 176859534 6.794 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 176917178 6.744 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 176104809 6.710 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 177328734 6.763 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 188679932 6.419 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 188057235 6.397 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 186791516 6.391 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 186898284 6.435 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 188458113 6.401 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 186026354 6.401 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 184316554 6.448 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 187683858 6.389 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 186874929 6.386 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 186716923 6.378 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 173836588 6.846 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 174187772 6.883 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 174612128 6.903 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 172705999 6.916 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 174497274 6.852 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 175203573 6.876 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 175501046 6.873 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 173682174 6.880 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 174091558 6.836 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 173382868 6.876 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 163679445 7.255 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164979469 7.277 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164085366 7.318 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 163786153 7.279 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164318337 7.273 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164600946 7.379 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164955026 7.335 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164723802 7.301 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164764182 7.312 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 164755773 7.314 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36517473 32.83 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 37354530 32.66 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36912326 32.63 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36452534 33.25 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 33962787 32.47 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36752216 32.67 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36326576 32.56 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36735955 32.38 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 34959795 32.50 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 31836487 32.52 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10230379 112.5 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10709905 111.6 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10391642 112.4 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10599292 111.9 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10684857 112.2 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10685678 111.6 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10684347 111.8 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10650033 112.9 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10644033 111.8 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10494380 111.9 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10687248 112.2 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10750032 111.6 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10622270 112.1 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10287102 111.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10673666 111.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10675849 111.8 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10711952 111.9 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10692046 111.4 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10820839 111.9 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10376506 111.5 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10699134 111.6 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10677876 111.8 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10682896 111.8 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10533751 112.0 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10733826 111.5 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10769109 112.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10557193 112.9 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10790766 112.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10692807 111.7 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10687284 111.9 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10450722 114.5 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10529504 114.6 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10457528 114.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10473770 114.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10571463 114.7 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10467051 113.8 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10504453 114.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10419044 114.1 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10438844 114.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10403209 114.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9970239 120.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9747520 121.0 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9907616 121.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9920500 120.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9882136 121.6 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9928464 120.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9898519 120.9 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10064037 120.5 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9931965 121.3 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 9875790 120.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9264846 128.7 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9376375 128.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9317161 128.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9223250 128.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9287037 128.6 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9289436 129.0 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9225397 128.6 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9279552 129.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9195694 128.6 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9311704 129.0 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2637978 461.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2605676 456.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2582431 458.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2596950 455.9 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2621806 457.9 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2626126 456.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2646404 457.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2636307 457.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2623198 460.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2616621 460.4 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 738093 1618 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 734580 1620 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 742040 1615 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 747909 1618 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 732934 1616 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 742390 1634 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 739656 1623 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 748429 1624 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 740370 1619 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 746839 1615 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 729867 1617 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 749391 1619 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 733603 1621 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 677570 1618 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 733015 1619 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 740598 1617 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 747303 1608 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 710430 1618 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 744378 1614 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 739500 1616 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 726160 1613 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 738315 1625 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 729897 1619 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 731598 1624 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 733420 1618 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 734707 1630 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 739522 1619 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 736424 1618 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 740820 1618 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 753626 1626 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 714242 1666 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 716132 1668 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 726380 1670 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 715693 1667 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 706140 1670 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 717438 1661 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 721968 1669 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 718413 1673 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 717615 1673 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 712651 1677 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 682077 1753 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 679024 1752 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 685684 1749 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 685261 1765 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 677300 1753 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 683056 1754 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 679957 1761 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 673934 1766 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 676676 1754 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 680178 1752 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 638468 1878 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 633466 1888 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 624388 1885 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 634375 1884 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 635097 1885 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 638934 1888 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 636936 1888 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 640022 1888 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 635024 1884 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 633786 1883 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21793 54878 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21790 55005 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21820 55326 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21532 54978 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21530 55053 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21860 55214 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21852 54988 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21764 55066 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21662 55122 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21862 55226 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21751 55045 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21606 55090 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 20832 54925 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21843 55235 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21771 55158 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21564 55214 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21914 54982 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21793 54896 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21706 54927 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21873 55141 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12859 93188 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12768 93347 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12847 93559 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12883 93251 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12810 93714 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12874 93607 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12871 93609 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12679 93373 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12823 93691 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12757 93789 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25418 46595 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25810 45947 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25915 46677 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25430 46593 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25969 45911 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25549 46247 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 26500 46249 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 26000 46319 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25909 46047 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25952 46302 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 49610 23563 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 50725 23535 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 49340 23147 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51771 23068 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51650 23315 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 50926 23191 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 49045 23163 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 49519 23067 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51955 23332 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 48934 23207 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 94273 13017 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 90938 12806 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 87024 12579 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 93645 12801 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 100030 12349 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 98973 12549 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 94136 12381 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 89906 12451 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 87414 12896 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 87484 12499 ns/op BenchmarkIndexByte_Bytes/10-8 295356357 4.067 ns/op 2458.81 MB/s BenchmarkIndexByte_Bytes/10-8 296005506 4.055 ns/op 2465.87 MB/s BenchmarkIndexByte_Bytes/10-8 294274278 4.070 ns/op 2457.14 MB/s BenchmarkIndexByte_Bytes/10-8 292157414 4.055 ns/op 2465.84 MB/s BenchmarkIndexByte_Bytes/10-8 294919052 4.041 ns/op 2474.47 MB/s BenchmarkIndexByte_Bytes/10-8 295169227 4.065 ns/op 2460.24 MB/s BenchmarkIndexByte_Bytes/10-8 296588586 4.060 ns/op 2463.31 MB/s BenchmarkIndexByte_Bytes/10-8 297254689 4.068 ns/op 2458.03 MB/s BenchmarkIndexByte_Bytes/10-8 295746476 4.048 ns/op 2470.59 MB/s BenchmarkIndexByte_Bytes/10-8 296460454 4.110 ns/op 2432.98 MB/s BenchmarkIndexByte_Bytes/32-8 247835383 4.865 ns/op 6577.66 MB/s BenchmarkIndexByte_Bytes/32-8 246764935 4.857 ns/op 6587.83 MB/s BenchmarkIndexByte_Bytes/32-8 247544373 4.868 ns/op 6574.17 MB/s BenchmarkIndexByte_Bytes/32-8 246040162 4.873 ns/op 6567.18 MB/s BenchmarkIndexByte_Bytes/32-8 247119879 4.848 ns/op 6600.77 MB/s BenchmarkIndexByte_Bytes/32-8 245696154 4.849 ns/op 6599.05 MB/s BenchmarkIndexByte_Bytes/32-8 247531968 4.864 ns/op 6579.19 MB/s BenchmarkIndexByte_Bytes/32-8 246576177 4.875 ns/op 6563.93 MB/s BenchmarkIndexByte_Bytes/32-8 246840290 4.856 ns/op 6589.67 MB/s BenchmarkIndexByte_Bytes/32-8 248273804 4.862 ns/op 6581.50 MB/s BenchmarkIndexByte_Bytes/4K-8 16341630 72.28 ns/op 56668.19 MB/s BenchmarkIndexByte_Bytes/4K-8 16637887 72.30 ns/op 56651.36 MB/s BenchmarkIndexByte_Bytes/4K-8 16680535 72.39 ns/op 56578.55 MB/s BenchmarkIndexByte_Bytes/4K-8 16462245 72.11 ns/op 56801.30 MB/s BenchmarkIndexByte_Bytes/4K-8 16782495 72.51 ns/op 56489.76 MB/s BenchmarkIndexByte_Bytes/4K-8 16558550 72.39 ns/op 56579.80 MB/s BenchmarkIndexByte_Bytes/4K-8 16666714 72.01 ns/op 56883.33 MB/s BenchmarkIndexByte_Bytes/4K-8 16634308 71.94 ns/op 56937.85 MB/s BenchmarkIndexByte_Bytes/4K-8 16376742 71.96 ns/op 56919.92 MB/s BenchmarkIndexByte_Bytes/4K-8 16489636 72.16 ns/op 56762.85 MB/s BenchmarkIndexByte_Bytes/4M-8 12247 97565 ns/op 42989.97 MB/s BenchmarkIndexByte_Bytes/4M-8 12172 96467 ns/op 43478.98 MB/s BenchmarkIndexByte_Bytes/4M-8 12711 98756 ns/op 42471.57 MB/s BenchmarkIndexByte_Bytes/4M-8 12548 98148 ns/op 42734.28 MB/s BenchmarkIndexByte_Bytes/4M-8 12272 97157 ns/op 43170.35 MB/s BenchmarkIndexByte_Bytes/4M-8 12379 97301 ns/op 43106.59 MB/s BenchmarkIndexByte_Bytes/4M-8 12600 96654 ns/op 43394.93 MB/s BenchmarkIndexByte_Bytes/4M-8 12272 96170 ns/op 43613.64 MB/s BenchmarkIndexByte_Bytes/4M-8 12456 97530 ns/op 43005.09 MB/s BenchmarkIndexByte_Bytes/4M-8 12116 97067 ns/op 43210.39 MB/s BenchmarkIndexByte_Bytes/64M-8 322 3626758 ns/op 18503.82 MB/s BenchmarkIndexByte_Bytes/64M-8 320 3544446 ns/op 18933.53 MB/s BenchmarkIndexByte_Bytes/64M-8 296 3513951 ns/op 19097.84 MB/s BenchmarkIndexByte_Bytes/64M-8 278 3670827 ns/op 18281.67 MB/s BenchmarkIndexByte_Bytes/64M-8 295 3554202 ns/op 18881.55 MB/s BenchmarkIndexByte_Bytes/64M-8 289 3528705 ns/op 19017.98 MB/s BenchmarkIndexByte_Bytes/64M-8 289 3510159 ns/op 19118.47 MB/s BenchmarkIndexByte_Bytes/64M-8 285 3536088 ns/op 18978.28 MB/s BenchmarkIndexByte_Bytes/64M-8 296 3538603 ns/op 18964.79 MB/s BenchmarkIndexByte_Bytes/64M-8 307 3474811 ns/op 19312.95 MB/s BenchmarkIndexRune_Bytes/10-8 94631268 12.74 ns/op 785.20 MB/s BenchmarkIndexRune_Bytes/10-8 96410685 12.99 ns/op 769.71 MB/s BenchmarkIndexRune_Bytes/10-8 94185238 12.64 ns/op 790.99 MB/s BenchmarkIndexRune_Bytes/10-8 92981571 12.66 ns/op 790.07 MB/s BenchmarkIndexRune_Bytes/10-8 97747935 12.63 ns/op 791.81 MB/s BenchmarkIndexRune_Bytes/10-8 95643028 12.52 ns/op 798.80 MB/s BenchmarkIndexRune_Bytes/10-8 95571867 12.62 ns/op 792.43 MB/s BenchmarkIndexRune_Bytes/10-8 94231567 12.59 ns/op 794.43 MB/s BenchmarkIndexRune_Bytes/10-8 96185869 12.51 ns/op 799.39 MB/s BenchmarkIndexRune_Bytes/10-8 96980056 12.60 ns/op 793.44 MB/s BenchmarkIndexRune_Bytes/32-8 87995576 13.36 ns/op 2395.81 MB/s BenchmarkIndexRune_Bytes/32-8 90079344 13.35 ns/op 2397.86 MB/s BenchmarkIndexRune_Bytes/32-8 86871034 13.33 ns/op 2401.28 MB/s BenchmarkIndexRune_Bytes/32-8 89022415 13.23 ns/op 2419.07 MB/s BenchmarkIndexRune_Bytes/32-8 89423755 13.34 ns/op 2398.06 MB/s BenchmarkIndexRune_Bytes/32-8 86021572 13.37 ns/op 2393.19 MB/s BenchmarkIndexRune_Bytes/32-8 88340952 13.32 ns/op 2401.55 MB/s BenchmarkIndexRune_Bytes/32-8 90050398 13.43 ns/op 2383.05 MB/s BenchmarkIndexRune_Bytes/32-8 88841492 13.29 ns/op 2407.28 MB/s BenchmarkIndexRune_Bytes/32-8 89593297 13.31 ns/op 2404.25 MB/s BenchmarkIndexRune_Bytes/4K-8 15165649 80.10 ns/op 51134.99 MB/s BenchmarkIndexRune_Bytes/4K-8 14791064 79.73 ns/op 51371.56 MB/s BenchmarkIndexRune_Bytes/4K-8 15237650 79.56 ns/op 51482.59 MB/s BenchmarkIndexRune_Bytes/4K-8 15191979 79.56 ns/op 51482.29 MB/s BenchmarkIndexRune_Bytes/4K-8 15008517 79.48 ns/op 51532.53 MB/s BenchmarkIndexRune_Bytes/4K-8 14942715 79.76 ns/op 51352.50 MB/s BenchmarkIndexRune_Bytes/4K-8 15083584 79.23 ns/op 51695.31 MB/s BenchmarkIndexRune_Bytes/4K-8 14830393 79.50 ns/op 51522.69 MB/s BenchmarkIndexRune_Bytes/4K-8 14974424 79.37 ns/op 51609.04 MB/s BenchmarkIndexRune_Bytes/4K-8 15050714 79.48 ns/op 51534.01 MB/s BenchmarkIndexRune_Bytes/4M-8 12154 99720 ns/op 42060.73 MB/s BenchmarkIndexRune_Bytes/4M-8 12273 100845 ns/op 41591.45 MB/s BenchmarkIndexRune_Bytes/4M-8 12000 98940 ns/op 42392.38 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 101287 ns/op 41410.03 MB/s BenchmarkIndexRune_Bytes/4M-8 12063 97349 ns/op 43085.20 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100886 ns/op 41574.49 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100065 ns/op 41915.99 MB/s BenchmarkIndexRune_Bytes/4M-8 12027 100772 ns/op 41621.92 MB/s BenchmarkIndexRune_Bytes/4M-8 12234 98550 ns/op 42560.11 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 101370 ns/op 41376.10 MB/s BenchmarkIndexRune_Bytes/64M-8 325 3604124 ns/op 18620.02 MB/s BenchmarkIndexRune_Bytes/64M-8 288 3518304 ns/op 19074.21 MB/s BenchmarkIndexRune_Bytes/64M-8 302 3656723 ns/op 18352.19 MB/s BenchmarkIndexRune_Bytes/64M-8 321 3552961 ns/op 18888.15 MB/s BenchmarkIndexRune_Bytes/64M-8 336 3650336 ns/op 18384.30 MB/s BenchmarkIndexRune_Bytes/64M-8 284 3576911 ns/op 18761.68 MB/s BenchmarkIndexRune_Bytes/64M-8 313 3568934 ns/op 18803.62 MB/s BenchmarkIndexRune_Bytes/64M-8 340 3536950 ns/op 18973.66 MB/s BenchmarkIndexRune_Bytes/64M-8 334 3571231 ns/op 18791.52 MB/s BenchmarkIndexRune_Bytes/64M-8 342 3689802 ns/op 18187.66 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 198268329 6.060 ns/op 1650.06 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 197258332 6.041 ns/op 1655.42 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 198445053 6.053 ns/op 1652.14 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 197426451 6.063 ns/op 1649.22 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 198483526 6.069 ns/op 1647.64 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 197332586 6.076 ns/op 1645.92 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 198529407 6.046 ns/op 1653.91 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 196204609 6.016 ns/op 1662.23 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 197215969 6.056 ns/op 1651.30 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 197566196 6.065 ns/op 1648.75 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 169904888 7.057 ns/op 4534.74 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 170804694 7.123 ns/op 4492.25 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 169240076 7.068 ns/op 4527.51 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 169357838 7.078 ns/op 4521.10 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 170312514 7.085 ns/op 4516.54 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 169168020 7.050 ns/op 4538.98 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 167146596 7.057 ns/op 4534.41 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 169408072 7.067 ns/op 4527.93 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 170215629 7.066 ns/op 4528.63 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 169478713 7.033 ns/op 4549.70 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16284790 73.60 ns/op 55653.89 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16160793 73.69 ns/op 55585.81 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16186251 73.82 ns/op 55488.37 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16324917 73.75 ns/op 55539.63 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16117207 74.03 ns/op 55329.65 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16348603 74.09 ns/op 55284.13 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 15787940 73.60 ns/op 55655.76 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16484772 73.63 ns/op 55627.76 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16169845 73.94 ns/op 55396.80 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16290122 73.82 ns/op 55486.92 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12676 97609 ns/op 42970.40 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12194 97258 ns/op 43125.35 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12320 93304 ns/op 44953.03 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12730 95501 ns/op 43919.05 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12346 97483 ns/op 43025.88 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12302 95546 ns/op 43898.34 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12237 96710 ns/op 43369.95 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12231 99196 ns/op 42282.87 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12316 96509 ns/op 43460.07 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12469 98122 ns/op 42745.77 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 322 3626119 ns/op 18507.08 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 310 3606900 ns/op 18605.69 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 306 3560691 ns/op 18847.15 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 286 3639383 ns/op 18439.63 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 312 3583246 ns/op 18728.51 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 289 3662643 ns/op 18322.53 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 298 3619955 ns/op 18538.59 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 288 3577533 ns/op 18758.42 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 291 3556713 ns/op 18868.22 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 300 3519237 ns/op 19069.15 MB/s BenchmarkIndexNonASCII_Bytes/10-8 382097528 3.152 ns/op 3172.76 MB/s BenchmarkIndexNonASCII_Bytes/10-8 380344620 3.146 ns/op 3178.59 MB/s BenchmarkIndexNonASCII_Bytes/10-8 381743235 3.142 ns/op 3182.83 MB/s BenchmarkIndexNonASCII_Bytes/10-8 375881036 3.158 ns/op 3166.19 MB/s BenchmarkIndexNonASCII_Bytes/10-8 383409937 3.175 ns/op 3149.16 MB/s BenchmarkIndexNonASCII_Bytes/10-8 379726608 3.159 ns/op 3165.24 MB/s BenchmarkIndexNonASCII_Bytes/10-8 379604432 3.168 ns/op 3156.39 MB/s BenchmarkIndexNonASCII_Bytes/10-8 377818375 3.153 ns/op 3171.41 MB/s BenchmarkIndexNonASCII_Bytes/10-8 381169114 3.149 ns/op 3176.10 MB/s BenchmarkIndexNonASCII_Bytes/10-8 379415196 3.154 ns/op 3170.96 MB/s BenchmarkIndexNonASCII_Bytes/32-8 334637326 3.566 ns/op 8972.44 MB/s BenchmarkIndexNonASCII_Bytes/32-8 336957006 3.575 ns/op 8950.83 MB/s BenchmarkIndexNonASCII_Bytes/32-8 333027168 3.573 ns/op 8955.96 MB/s BenchmarkIndexNonASCII_Bytes/32-8 336705127 3.554 ns/op 9002.91 MB/s BenchmarkIndexNonASCII_Bytes/32-8 335163973 3.554 ns/op 9004.02 MB/s BenchmarkIndexNonASCII_Bytes/32-8 334797394 3.549 ns/op 9017.84 MB/s BenchmarkIndexNonASCII_Bytes/32-8 335411012 3.592 ns/op 8908.93 MB/s BenchmarkIndexNonASCII_Bytes/32-8 336329125 3.583 ns/op 8931.79 MB/s BenchmarkIndexNonASCII_Bytes/32-8 331559245 3.558 ns/op 8993.65 MB/s BenchmarkIndexNonASCII_Bytes/32-8 334527696 3.566 ns/op 8973.12 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16954147 70.94 ns/op 57739.26 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16930024 70.72 ns/op 57921.39 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16973511 71.02 ns/op 57675.18 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16883754 71.31 ns/op 57435.85 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16613254 70.98 ns/op 57708.86 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 17193666 71.33 ns/op 57425.61 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16728132 71.28 ns/op 57460.90 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16607143 70.80 ns/op 57849.42 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 17093073 70.98 ns/op 57705.09 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16773204 70.89 ns/op 57781.60 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12723 96046 ns/op 43669.93 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12603 95718 ns/op 43819.47 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 10000 100282 ns/op 41825.00 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 10000 100386 ns/op 41781.73 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12596 96217 ns/op 43592.03 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12763 98817 ns/op 42445.16 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12642 94364 ns/op 44448.21 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12859 95192 ns/op 44061.65 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12572 96783 ns/op 43337.29 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12583 96571 ns/op 43432.42 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 320 3764074 ns/op 17828.78 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 294 3673508 ns/op 18268.33 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 297 3640610 ns/op 18433.41 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 309 3541398 ns/op 18949.82 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 328 3493627 ns/op 19208.94 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 334 3574600 ns/op 18773.81 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 303 3667416 ns/op 18298.68 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 279 3640630 ns/op 18433.31 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 292 3517477 ns/op 19078.69 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 302 3552747 ns/op 18889.29 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2126.845s strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.22rc2/ 0000775 0000000 0000000 00000000000 14720254634 0022656 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.22rc2/cpu.1706899847.07e88bec.txt 0000664 0000000 0000000 00000005146 14720254634 0026551 0 ustar 00root root 0000000 0000000 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 43 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Vendor ID: GenuineIntel Model name: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz CPU family: 6 Model: 158 Thread(s) per core: 1 Core(s) per socket: 8 Socket(s): 1 Stepping: 12 BogoMIPS: 7199.99 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xsaves arat md_clear flush_l1d arch_capabilities Hypervisor vendor: VMware Virtualization type: full L1d cache: 256 KiB (8 instances) L1i cache: 256 KiB (8 instances) L2 cache: 2 MiB (8 instances) L3 cache: 16 MiB (1 instance) NUMA node(s): 1 NUMA node0 CPU(s): 0-7 Vulnerability Gather data sampling: Unknown: Dependent on hypervisor status Vulnerability Itlb multihit: KVM: Mitigation: VMX unsupported Vulnerability L1tf: Not affected Vulnerability Mds: Mitigation; Clear CPU buffers; SMT Host state unknown Vulnerability Meltdown: Not affected Vulnerability Mmio stale data: Mitigation; Clear CPU buffers; SMT Host state unknown Vulnerability Retbleed: Mitigation; IBRS Vulnerability Spec rstack overflow: Not affected Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; IBRS, IBPB conditional, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Unknown: Dependent on hypervisor status Vulnerability Tsx async abort: Not affected strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.22rc2/env.1706899847.07e88bec.txt 0000664 0000000 0000000 00000001706 14720254634 0026550 0 ustar 00root root 0000000 0000000 GO111MODULE='auto' GOARCH='amd64' GOBIN='/home/cev/src/go-dev/gobin' GOCACHE='/home/cev/.cache/go-build' GOENV='/home/cev/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/cev/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/cev/go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/home/cev/src/go-dev' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/home/cev/src/go-dev/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.22rc2' GCCGO='gccgo' GOAMD64='v3' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/cev/go/src/github.com/charlievieth/strcase/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3247387921=/tmp/go-build -gno-record-gcc-switches' strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.22rc2/result.10.1706899847.07e88bec.txt 0000664 0000000 0000000 00000045361 14720254634 0027522 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz │ ./stdlib.10.1706899847.07e88bec.txt │ ./strcase.10.1706899847.07e88bec.txt │ │ sec/op │ sec/op vs base │ IndexRune-8 10.76n ± 0% 12.78n ± 0% +18.77% (p=0.000 n=10) IndexRuneLongString-8 14.80n ± 1% 13.70n ± 0% -7.50% (p=0.000 n=10) IndexRuneFastPath-8 4.350n ± 1% 5.804n ± 0% +33.43% (p=0.000 n=10) Index-8 3.923n ± 0% 6.300n ± 1% +60.58% (p=0.000 n=10) LastIndex-8 3.773n ± 1% 5.650n ± 1% +49.73% (p=0.000 n=10) IndexByte-8 2.728n ± 0% 4.591n ± 0% +68.31% (p=0.000 n=10) EqualFold/ASCII-8 9.871n ± 1% 8.853n ± 1% -10.31% (p=0.000 n=10) EqualFold/UnicodePrefix-8 77.34n ± 1% 37.36n ± 0% -51.70% (p=0.000 n=10) EqualFold/UnicodeSuffix-8 70.27n ± 0% 28.39n ± 0% -59.60% (p=0.000 n=10) IndexHard1-8 78.70µ ± 0% 78.63µ ± 0% ~ (p=0.853 n=10) IndexHard2-8 110.9µ ± 1% 2163.4µ ± 1% +1850.62% (p=0.000 n=10) IndexHard3-8 441.6µ ± 0% 2021.7µ ± 0% +357.81% (p=0.000 n=10) IndexHard4-8 442.7µ ± 1% 1729.6µ ± 0% +290.72% (p=0.000 n=10) LastIndexHard1-8 1.110m ± 1% 1.625m ± 0% +46.33% (p=0.000 n=10) LastIndexHard2-8 1.110m ± 0% 1.628m ± 1% +46.69% (p=0.000 n=10) LastIndexHard3-8 1.112m ± 0% 1.629m ± 1% +46.55% (p=0.000 n=10) CountHard1-8 78.83µ ± 1% 78.69µ ± 0% ~ (p=0.315 n=10) CountHard2-8 110.5µ ± 0% 2168.6µ ± 1% +1862.60% (p=0.000 n=10) CountHard3-8 442.8µ ± 1% 2027.0µ ± 1% +357.81% (p=0.000 n=10) IndexTorture-8 8.626µ ± 0% 15.969µ ± 0% +85.12% (p=0.000 n=10) CountTorture-8 8.623µ ± 1% 17.935µ ± 0% +107.98% (p=0.000 n=10) CountTortureOverlapping-8 63.87µ ± 5% 3576.75µ ± 0% +5499.88% (p=0.000 n=10) CountByte/10-8 3.514n ± 0% 4.915n ± 0% +39.86% (p=0.000 n=10) CountByte/32-8 4.372n ± 0% 5.342n ± 0% +22.20% (p=0.000 n=10) CountByte/4K-8 46.45n ± 1% 58.14n ± 0% +25.17% (p=0.000 n=10) CountByte/4M-8 79.92µ ± 2% 89.55µ ± 2% +12.05% (p=0.000 n=10) CountByte/64M-8 3.879m ± 1% 3.916m ± 3% ~ (p=0.123 n=10) IndexAnyASCII/1:1-8 4.623n ± 0% 5.873n ± 0% +27.04% (p=0.000 n=10) IndexAnyASCII/1:2-8 5.415n ± 0% 7.187n ± 0% +32.72% (p=0.000 n=10) IndexAnyASCII/1:4-8 5.412n ± 1% 7.170n ± 0% +32.48% (p=0.000 n=10) IndexAnyASCII/1:8-8 5.417n ± 0% 7.180n ± 1% +32.55% (p=0.000 n=10) IndexAnyASCII/1:16-8 5.614n ± 1% 7.378n ± 0% +31.41% (p=0.000 n=10) IndexAnyASCII/1:32-8 6.392n ± 0% 7.900n ± 1% +23.60% (p=0.000 n=10) IndexAnyASCII/1:64-8 6.571n ± 0% 8.590n ± 0% +30.74% (p=0.000 n=10) IndexAnyASCII/16:1-8 4.764n ± 0% 6.152n ± 1% +29.11% (p=0.000 n=10) IndexAnyASCII/16:2-8 14.08n ± 0% 16.58n ± 0% +17.83% (p=0.000 n=10) IndexAnyASCII/16:4-8 15.35n ± 0% 17.71n ± 0% +15.37% (p=0.000 n=10) IndexAnyASCII/16:8-8 19.20n ± 1% 21.12n ± 0% +10.05% (p=0.000 n=10) IndexAnyASCII/16:16-8 25.31n ± 1% 30.98n ± 1% +22.40% (p=0.000 n=10) IndexAnyASCII/16:32-8 42.79n ± 0% 54.16n ± 0% +26.55% (p=0.000 n=10) IndexAnyASCII/16:64-8 69.91n ± 0% 91.92n ± 0% +31.48% (p=0.000 n=10) IndexAnyASCII/256:1-8 8.411n ± 0% 10.170n ± 0% +20.92% (p=0.000 n=10) IndexAnyASCII/256:2-8 129.8n ± 1% 131.6n ± 0% +1.35% (p=0.000 n=10) IndexAnyASCII/256:4-8 131.7n ± 0% 133.6n ± 0% +1.48% (p=0.000 n=10) IndexAnyASCII/256:8-8 135.6n ± 0% 138.0n ± 1% +1.73% (p=0.000 n=10) IndexAnyASCII/256:16-8 141.4n ± 0% 148.8n ± 1% +5.31% (p=0.000 n=10) IndexAnyASCII/256:32-8 159.4n ± 1% 178.2n ± 1% +11.83% (p=0.000 n=10) IndexAnyASCII/256:64-8 184.3n ± 1% 220.4n ± 1% +19.59% (p=0.000 n=10) IndexAnyUTF8/1:1-8 3.358n ± 0% 3.454n ± 0% +2.84% (p=0.000 n=10) IndexAnyUTF8/1:2-8 5.258n ± 1% 7.319n ± 2% +39.20% (p=0.000 n=10) IndexAnyUTF8/1:4-8 5.318n ± 2% 7.180n ± 1% +35.01% (p=0.000 n=10) IndexAnyUTF8/1:8-8 5.256n ± 1% 7.365n ± 2% +40.14% (p=0.000 n=10) IndexAnyUTF8/1:16-8 5.545n ± 2% 7.394n ± 1% +33.32% (p=0.000 n=10) IndexAnyUTF8/1:32-8 6.078n ± 1% 7.943n ± 0% +30.68% (p=0.000 n=10) IndexAnyUTF8/1:64-8 6.522n ± 0% 8.560n ± 0% +31.24% (p=0.000 n=10) IndexAnyUTF8/16:1-8 14.01n ± 8% 14.58n ± 5% ~ (p=0.210 n=10) IndexAnyUTF8/16:2-8 63.00n ± 0% 32.68n ± 0% -48.11% (p=0.000 n=10) IndexAnyUTF8/16:4-8 62.91n ± 0% 35.03n ± 0% -44.31% (p=0.000 n=10) IndexAnyUTF8/16:8-8 62.98n ± 0% 92.84n ± 0% +47.40% (p=0.000 n=10) IndexAnyUTF8/16:16-8 66.30n ± 0% 93.84n ± 0% +41.56% (p=0.000 n=10) IndexAnyUTF8/16:32-8 72.64n ± 0% 101.30n ± 1% +39.45% (p=0.000 n=10) IndexAnyUTF8/16:64-8 79.53n ± 1% 108.55n ± 0% +36.50% (p=0.000 n=10) IndexAnyUTF8/256:1-8 169.0n ± 0% 167.8n ± 0% -0.65% (p=0.000 n=10) IndexAnyUTF8/256:2-8 872.2n ± 1% 349.5n ± 0% -59.93% (p=0.000 n=10) IndexAnyUTF8/256:4-8 871.9n ± 1% 193.5n ± 0% -77.81% (p=0.000 n=10) IndexAnyUTF8/256:8-8 873.8n ± 0% 387.4n ± 1% -55.66% (p=0.000 n=10) IndexAnyUTF8/256:16-8 928.2n ± 0% 123.0n ± 0% -86.75% (p=0.000 n=10) IndexAnyUTF8/256:32-8 1031.0n ± 0% 641.8n ± 1% -37.75% (p=0.000 n=10) IndexAnyUTF8/256:64-8 1138.5n ± 0% 752.2n ± 0% -33.93% (p=0.000 n=10) LastIndexAnyASCII/1:1-8 5.012n ± 0% 6.013n ± 0% +19.96% (p=0.000 n=10) LastIndexAnyASCII/1:2-8 5.008n ± 0% 6.011n ± 1% +20.03% (p=0.000 n=10) LastIndexAnyASCII/1:4-8 5.004n ± 0% 6.013n ± 0% +20.16% (p=0.000 n=10) LastIndexAnyASCII/1:8-8 4.998n ± 0% 6.013n ± 0% +20.31% (p=0.000 n=10) LastIndexAnyASCII/1:16-8 4.731n ± 0% 6.245n ± 0% +31.98% (p=0.000 n=10) LastIndexAnyASCII/1:32-8 5.057n ± 0% 6.763n ± 1% +33.75% (p=0.000 n=10) LastIndexAnyASCII/1:64-8 5.365n ± 1% 7.246n ± 0% +35.06% (p=0.000 n=10) LastIndexAnyASCII/16:1-8 13.66n ± 0% 16.40n ± 0% +20.10% (p=0.000 n=10) LastIndexAnyASCII/16:2-8 14.08n ± 0% 16.57n ± 0% +17.69% (p=0.000 n=10) LastIndexAnyASCII/16:4-8 15.39n ± 0% 17.72n ± 0% +15.14% (p=0.000 n=10) LastIndexAnyASCII/16:8-8 19.48n ± 1% 21.05n ± 0% +8.06% (p=0.000 n=10) LastIndexAnyASCII/16:16-8 25.64n ± 0% 31.06n ± 2% +21.16% (p=0.000 n=10) LastIndexAnyASCII/16:32-8 43.55n ± 0% 54.30n ± 0% +24.69% (p=0.000 n=10) LastIndexAnyASCII/16:64-8 70.22n ± 0% 91.92n ± 1% +30.91% (p=0.000 n=10) LastIndexAnyASCII/256:1-8 129.3n ± 0% 130.6n ± 0% +1.01% (p=0.000 n=10) LastIndexAnyASCII/256:2-8 129.8n ± 1% 131.5n ± 1% +1.27% (p=0.001 n=10) LastIndexAnyASCII/256:4-8 132.1n ± 0% 133.7n ± 0% +1.25% (p=0.000 n=10) LastIndexAnyASCII/256:8-8 136.2n ± 1% 138.0n ± 0% +1.28% (p=0.000 n=10) LastIndexAnyASCII/256:16-8 141.1n ± 0% 148.2n ± 0% +5.00% (p=0.000 n=10) LastIndexAnyASCII/256:32-8 158.5n ± 0% 175.8n ± 1% +10.91% (p=0.000 n=10) LastIndexAnyASCII/256:64-8 185.7n ± 1% 213.9n ± 0% +15.19% (p=0.000 n=10) LastIndexAnyUTF8/1:1-8 4.603n ± 0% 5.961n ± 1% +29.51% (p=0.000 n=10) LastIndexAnyUTF8/1:2-8 4.602n ± 0% 5.956n ± 1% +29.42% (p=0.000 n=10) LastIndexAnyUTF8/1:4-8 4.609n ± 1% 5.961n ± 0% +29.34% (p=0.000 n=10) LastIndexAnyUTF8/1:8-8 4.601n ± 0% 5.966n ± 0% +29.68% (p=0.000 n=10) LastIndexAnyUTF8/1:16-8 4.614n ± 0% 6.154n ± 0% +33.36% (p=0.000 n=10) LastIndexAnyUTF8/1:32-8 5.095n ± 0% 6.683n ± 0% +31.19% (p=0.000 n=10) LastIndexAnyUTF8/1:64-8 5.341n ± 0% 7.239n ± 0% +35.55% (p=0.000 n=10) LastIndexAnyUTF8/16:1-8 29.88n ± 1% 31.08n ± 0% +4.02% (p=0.000 n=10) LastIndexAnyUTF8/16:2-8 82.96n ± 0% 108.85n ± 0% +31.21% (p=0.000 n=10) LastIndexAnyUTF8/16:4-8 82.83n ± 0% 108.95n ± 1% +31.53% (p=0.000 n=10) LastIndexAnyUTF8/16:8-8 82.73n ± 0% 108.80n ± 0% +31.51% (p=0.000 n=10) LastIndexAnyUTF8/16:16-8 81.37n ± 0% 110.70n ± 0% +36.05% (p=0.000 n=10) LastIndexAnyUTF8/16:32-8 87.32n ± 1% 117.10n ± 0% +34.11% (p=0.000 n=10) LastIndexAnyUTF8/16:64-8 93.52n ± 0% 127.30n ± 1% +36.13% (p=0.000 n=10) LastIndexAnyUTF8/256:1-8 439.4n ± 0% 448.3n ± 0% +2.01% (p=0.000 n=10) LastIndexAnyUTF8/256:2-8 1.162µ ± 1% 1.532µ ± 1% +31.90% (p=0.000 n=10) LastIndexAnyUTF8/256:4-8 1.162µ ± 0% 1.533µ ± 0% +31.88% (p=0.000 n=10) LastIndexAnyUTF8/256:8-8 1.161µ ± 1% 1.530µ ± 0% +31.83% (p=0.000 n=10) LastIndexAnyUTF8/256:16-8 1.165µ ± 1% 1.594µ ± 0% +36.78% (p=0.000 n=10) LastIndexAnyUTF8/256:32-8 1.269µ ± 0% 1.693µ ± 0% +33.41% (p=0.000 n=10) LastIndexAnyUTF8/256:64-8 1.361µ ± 0% 1.875µ ± 0% +37.78% (p=0.000 n=10) IndexPeriodic/IndexPeriodic2-8 4.988µ ± 0% 55.093µ ± 0% +1004.62% (p=0.000 n=10) IndexPeriodic/IndexPeriodic4-8 4.995µ ± 1% 55.203µ ± 0% +1005.28% (p=0.000 n=10) IndexPeriodic/IndexPeriodic8-8 60.25µ ± 1% 93.58µ ± 0% +55.32% (p=0.000 n=10) IndexPeriodic/IndexPeriodic16-8 29.94µ ± 2% 46.65µ ± 0% +55.82% (p=0.000 n=10) IndexPeriodic/IndexPeriodic32-8 15.42µ ± 6% 23.25µ ± 2% +50.77% (p=0.000 n=10) IndexPeriodic/IndexPeriodic64-8 9.334µ ± 5% 12.480µ ± 2% +33.70% (p=0.000 n=10) IndexByte_Bytes/10-8 3.315n ± 0% 4.075n ± 0% +22.93% (p=0.000 n=10) IndexByte_Bytes/32-8 3.973n ± 0% 4.704n ± 0% +18.39% (p=0.000 n=10) IndexByte_Bytes/4K-8 60.55n ± 0% 71.28n ± 0% +17.71% (p=0.000 n=10) IndexByte_Bytes/4M-8 90.70µ ± 2% 95.91µ ± 2% +5.75% (p=0.000 n=10) IndexByte_Bytes/64M-8 3.506m ± 3% 3.649m ± 2% +4.06% (p=0.001 n=10) IndexRune_Bytes/10-8 12.01n ± 1% 13.07n ± 0% +8.87% (p=0.000 n=10) IndexRune_Bytes/32-8 11.78n ± 1% 13.96n ± 0% +18.41% (p=0.000 n=10) IndexRune_Bytes/4K-8 81.25n ± 0% 80.36n ± 1% -1.10% (p=0.000 n=10) IndexRune_Bytes/4M-8 100.7µ ± 2% 101.7µ ± 2% ~ (p=0.315 n=10) IndexRune_Bytes/64M-8 3.664m ± 2% 3.682m ± 4% ~ (p=0.579 n=10) IndexRuneASCII_Bytes/10-8 3.258n ± 0% 6.151n ± 0% +88.75% (p=0.000 n=10) IndexRuneASCII_Bytes/32-8 4.059n ± 0% 6.943n ± 1% +71.05% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-8 60.91n ± 0% 74.00n ± 0% +21.48% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-8 89.29µ ± 2% 96.16µ ± 2% +7.69% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-8 3.555m ± 3% 3.716m ± 1% +4.51% (p=0.000 n=10) IndexNonASCII_Bytes/10-8 3.575n ± 0% 2.954n ± 0% -17.36% (p=0.000 n=10) IndexNonASCII_Bytes/32-8 8.785n ± 1% 3.633n ± 0% -58.64% (p=0.000 n=10) IndexNonASCII_Bytes/4K-8 873.15n ± 0% 71.10n ± 0% -91.86% (p=0.000 n=10) IndexNonASCII_Bytes/4M-8 890.22µ ± 1% 99.14µ ± 2% -88.86% (p=0.000 n=10) IndexNonASCII_Bytes/64M-8 15.033m ± 2% 3.715m ± 2% -75.29% (p=0.000 n=10) geomean 189.9n 232.3n +22.36% │ ./stdlib.10.1706899847.07e88bec.txt │ ./strcase.10.1706899847.07e88bec.txt │ │ B/s │ B/s vs base │ CountByte/10-8 2.650Gi ± 0% 1.895Gi ± 0% -28.50% (p=0.000 n=10) CountByte/32-8 6.817Gi ± 0% 5.579Gi ± 0% -18.16% (p=0.000 n=10) CountByte/4K-8 82.13Gi ± 1% 65.61Gi ± 0% -20.11% (p=0.000 n=10) CountByte/4M-8 48.88Gi ± 2% 43.63Gi ± 2% -10.73% (p=0.000 n=10) CountByte/64M-8 16.11Gi ± 2% 15.96Gi ± 3% ~ (p=0.123 n=10) IndexByte_Bytes/10-8 2.809Gi ± 0% 2.285Gi ± 0% -18.65% (p=0.000 n=10) IndexByte_Bytes/32-8 7.501Gi ± 0% 6.336Gi ± 0% -15.54% (p=0.000 n=10) IndexByte_Bytes/4K-8 63.00Gi ± 0% 53.52Gi ± 0% -15.05% (p=0.000 n=10) IndexByte_Bytes/4M-8 43.07Gi ± 2% 40.73Gi ± 2% -5.43% (p=0.000 n=10) IndexByte_Bytes/64M-8 17.82Gi ± 3% 17.13Gi ± 2% -3.90% (p=0.001 n=10) IndexRune_Bytes/10-8 793.9Mi ± 1% 729.2Mi ± 0% -8.15% (p=0.000 n=10) IndexRune_Bytes/32-8 2.529Gi ± 1% 2.136Gi ± 0% -15.53% (p=0.000 n=10) IndexRune_Bytes/4K-8 46.95Gi ± 0% 47.47Gi ± 1% +1.10% (p=0.000 n=10) IndexRune_Bytes/4M-8 38.79Gi ± 2% 38.42Gi ± 2% ~ (p=0.315 n=10) IndexRune_Bytes/64M-8 17.06Gi ± 2% 16.98Gi ± 4% ~ (p=0.579 n=10) IndexRuneASCII_Bytes/10-8 2.858Gi ± 0% 1.514Gi ± 0% -47.03% (p=0.000 n=10) IndexRuneASCII_Bytes/32-8 7.342Gi ± 0% 4.293Gi ± 1% -41.53% (p=0.000 n=10) IndexRuneASCII_Bytes/4K-8 62.62Gi ± 0% 51.55Gi ± 0% -17.68% (p=0.000 n=10) IndexRuneASCII_Bytes/4M-8 43.75Gi ± 2% 40.63Gi ± 2% -7.14% (p=0.000 n=10) IndexRuneASCII_Bytes/64M-8 17.58Gi ± 3% 16.82Gi ± 1% -4.32% (p=0.000 n=10) IndexNonASCII_Bytes/10-8 2.605Gi ± 0% 3.152Gi ± 0% +21.00% (p=0.000 n=10) IndexNonASCII_Bytes/32-8 3.393Gi ± 1% 8.203Gi ± 0% +141.79% (p=0.000 n=10) IndexNonASCII_Bytes/4K-8 4.369Gi ± 0% 53.652Gi ± 0% +1128.03% (p=0.000 n=10) IndexNonASCII_Bytes/4M-8 4.388Gi ± 1% 39.403Gi ± 2% +797.98% (p=0.000 n=10) IndexNonASCII_Bytes/64M-8 4.157Gi ± 2% 16.825Gi ± 2% +304.69% (p=0.000 n=10) geomean 10.68Gi 12.49Gi +16.95% strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.22rc2/stdlib.10.1706899847.07e88bec.txt 0000664 0000000 0000000 00000276776 14720254634 0027505 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz BenchmarkIndexRune-8 100000000 10.78 ns/op BenchmarkIndexRune-8 100000000 10.72 ns/op BenchmarkIndexRune-8 100000000 10.75 ns/op BenchmarkIndexRune-8 100000000 10.75 ns/op BenchmarkIndexRune-8 100000000 10.77 ns/op BenchmarkIndexRune-8 100000000 10.86 ns/op BenchmarkIndexRune-8 100000000 10.77 ns/op BenchmarkIndexRune-8 100000000 10.79 ns/op BenchmarkIndexRune-8 100000000 10.73 ns/op BenchmarkIndexRune-8 98323509 10.72 ns/op BenchmarkIndexRuneLongString-8 81195566 14.71 ns/op BenchmarkIndexRuneLongString-8 81372525 14.68 ns/op BenchmarkIndexRuneLongString-8 80859236 14.90 ns/op BenchmarkIndexRuneLongString-8 80230802 14.94 ns/op BenchmarkIndexRuneLongString-8 72654441 14.78 ns/op BenchmarkIndexRuneLongString-8 70893284 14.99 ns/op BenchmarkIndexRuneLongString-8 79690752 14.93 ns/op BenchmarkIndexRuneLongString-8 80638646 14.83 ns/op BenchmarkIndexRuneLongString-8 80981554 14.74 ns/op BenchmarkIndexRuneLongString-8 81176193 14.69 ns/op BenchmarkIndexRuneFastPath-8 275145798 4.362 ns/op BenchmarkIndexRuneFastPath-8 275595266 4.357 ns/op BenchmarkIndexRuneFastPath-8 274500685 4.352 ns/op BenchmarkIndexRuneFastPath-8 275777722 4.331 ns/op BenchmarkIndexRuneFastPath-8 276562698 4.346 ns/op BenchmarkIndexRuneFastPath-8 274489304 4.354 ns/op BenchmarkIndexRuneFastPath-8 277100017 4.320 ns/op BenchmarkIndexRuneFastPath-8 275960020 4.349 ns/op BenchmarkIndexRuneFastPath-8 267550122 4.351 ns/op BenchmarkIndexRuneFastPath-8 275640778 4.324 ns/op BenchmarkIndex-8 302126377 3.935 ns/op BenchmarkIndex-8 308075210 3.941 ns/op BenchmarkIndex-8 304051663 3.923 ns/op BenchmarkIndex-8 305638437 3.929 ns/op BenchmarkIndex-8 305460282 3.907 ns/op BenchmarkIndex-8 302065308 3.921 ns/op BenchmarkIndex-8 306725899 3.897 ns/op BenchmarkIndex-8 304700949 3.921 ns/op BenchmarkIndex-8 307878975 3.928 ns/op BenchmarkIndex-8 306603388 3.923 ns/op BenchmarkLastIndex-8 316139919 3.789 ns/op BenchmarkLastIndex-8 320166292 3.772 ns/op BenchmarkLastIndex-8 312780968 3.805 ns/op BenchmarkLastIndex-8 314352868 3.770 ns/op BenchmarkLastIndex-8 318892383 3.809 ns/op BenchmarkLastIndex-8 316522959 3.766 ns/op BenchmarkLastIndex-8 318356379 3.775 ns/op BenchmarkLastIndex-8 316360722 3.831 ns/op BenchmarkLastIndex-8 315999570 3.766 ns/op BenchmarkLastIndex-8 317065590 3.760 ns/op BenchmarkIndexByte-8 442521475 2.744 ns/op BenchmarkIndexByte-8 434397555 2.728 ns/op BenchmarkIndexByte-8 444573540 2.736 ns/op BenchmarkIndexByte-8 435753129 2.734 ns/op BenchmarkIndexByte-8 445276604 2.725 ns/op BenchmarkIndexByte-8 435565262 2.727 ns/op BenchmarkIndexByte-8 440439613 2.728 ns/op BenchmarkIndexByte-8 438330828 2.722 ns/op BenchmarkIndexByte-8 438500605 2.733 ns/op BenchmarkIndexByte-8 433333504 2.715 ns/op BenchmarkEqualFold/ASCII-8 121610912 9.884 ns/op BenchmarkEqualFold/ASCII-8 121342414 9.870 ns/op BenchmarkEqualFold/ASCII-8 121770594 9.811 ns/op BenchmarkEqualFold/ASCII-8 121493623 9.898 ns/op BenchmarkEqualFold/ASCII-8 121279735 9.938 ns/op BenchmarkEqualFold/ASCII-8 121722663 9.872 ns/op BenchmarkEqualFold/ASCII-8 121593490 9.820 ns/op BenchmarkEqualFold/ASCII-8 121456572 9.841 ns/op BenchmarkEqualFold/ASCII-8 121656459 9.887 ns/op BenchmarkEqualFold/ASCII-8 121226810 9.857 ns/op BenchmarkEqualFold/UnicodePrefix-8 15386274 77.79 ns/op BenchmarkEqualFold/UnicodePrefix-8 15745212 76.68 ns/op BenchmarkEqualFold/UnicodePrefix-8 15694081 77.50 ns/op BenchmarkEqualFold/UnicodePrefix-8 15339033 77.72 ns/op BenchmarkEqualFold/UnicodePrefix-8 15629427 76.94 ns/op BenchmarkEqualFold/UnicodePrefix-8 15705385 77.11 ns/op BenchmarkEqualFold/UnicodePrefix-8 15254126 77.98 ns/op BenchmarkEqualFold/UnicodePrefix-8 15297560 78.72 ns/op BenchmarkEqualFold/UnicodePrefix-8 15513660 77.19 ns/op BenchmarkEqualFold/UnicodePrefix-8 15415034 76.80 ns/op BenchmarkEqualFold/UnicodeSuffix-8 16803139 70.26 ns/op BenchmarkEqualFold/UnicodeSuffix-8 17132985 69.93 ns/op BenchmarkEqualFold/UnicodeSuffix-8 17152245 70.42 ns/op BenchmarkEqualFold/UnicodeSuffix-8 16914812 70.23 ns/op BenchmarkEqualFold/UnicodeSuffix-8 16768534 70.60 ns/op BenchmarkEqualFold/UnicodeSuffix-8 17089660 70.33 ns/op BenchmarkEqualFold/UnicodeSuffix-8 17283048 70.22 ns/op BenchmarkEqualFold/UnicodeSuffix-8 16791547 70.44 ns/op BenchmarkEqualFold/UnicodeSuffix-8 17028414 70.27 ns/op BenchmarkEqualFold/UnicodeSuffix-8 17028036 70.22 ns/op BenchmarkIndexHard1-8 15188 78631 ns/op BenchmarkIndexHard1-8 15124 78716 ns/op BenchmarkIndexHard1-8 15091 78884 ns/op BenchmarkIndexHard1-8 15151 78723 ns/op BenchmarkIndexHard1-8 15177 78739 ns/op BenchmarkIndexHard1-8 15184 78317 ns/op BenchmarkIndexHard1-8 15128 78686 ns/op BenchmarkIndexHard1-8 15158 78430 ns/op BenchmarkIndexHard1-8 15218 78568 ns/op BenchmarkIndexHard1-8 15255 78704 ns/op BenchmarkIndexHard2-8 10821 110272 ns/op BenchmarkIndexHard2-8 10826 111013 ns/op BenchmarkIndexHard2-8 10827 111872 ns/op BenchmarkIndexHard2-8 10851 111459 ns/op BenchmarkIndexHard2-8 10860 111019 ns/op BenchmarkIndexHard2-8 10860 110380 ns/op BenchmarkIndexHard2-8 10803 110808 ns/op BenchmarkIndexHard2-8 10867 110342 ns/op BenchmarkIndexHard2-8 10856 112499 ns/op BenchmarkIndexHard2-8 10848 110236 ns/op BenchmarkIndexHard3-8 2524 441194 ns/op BenchmarkIndexHard3-8 2598 441240 ns/op BenchmarkIndexHard3-8 2580 441539 ns/op BenchmarkIndexHard3-8 2562 442542 ns/op BenchmarkIndexHard3-8 2547 442249 ns/op BenchmarkIndexHard3-8 2590 443728 ns/op BenchmarkIndexHard3-8 2504 441511 ns/op BenchmarkIndexHard3-8 2520 440636 ns/op BenchmarkIndexHard3-8 2542 442610 ns/op BenchmarkIndexHard3-8 2584 441674 ns/op BenchmarkIndexHard4-8 2563 444885 ns/op BenchmarkIndexHard4-8 2583 443153 ns/op BenchmarkIndexHard4-8 2570 442433 ns/op BenchmarkIndexHard4-8 2581 442883 ns/op BenchmarkIndexHard4-8 2586 441731 ns/op BenchmarkIndexHard4-8 2557 440196 ns/op BenchmarkIndexHard4-8 2592 439960 ns/op BenchmarkIndexHard4-8 2559 443250 ns/op BenchmarkIndexHard4-8 2562 441428 ns/op BenchmarkIndexHard4-8 2620 445868 ns/op BenchmarkLastIndexHard1-8 1048 1110008 ns/op BenchmarkLastIndexHard1-8 1068 1108266 ns/op BenchmarkLastIndexHard1-8 1045 1109256 ns/op BenchmarkLastIndexHard1-8 1059 1109695 ns/op BenchmarkLastIndexHard1-8 1030 1108087 ns/op BenchmarkLastIndexHard1-8 1005 1113483 ns/op BenchmarkLastIndexHard1-8 1051 1110619 ns/op BenchmarkLastIndexHard1-8 1042 1125658 ns/op BenchmarkLastIndexHard1-8 1044 1123337 ns/op BenchmarkLastIndexHard1-8 1035 1119377 ns/op BenchmarkLastIndexHard2-8 1045 1110018 ns/op BenchmarkLastIndexHard2-8 1044 1113099 ns/op BenchmarkLastIndexHard2-8 1052 1109073 ns/op BenchmarkLastIndexHard2-8 1050 1107711 ns/op BenchmarkLastIndexHard2-8 1042 1114099 ns/op BenchmarkLastIndexHard2-8 1059 1105750 ns/op BenchmarkLastIndexHard2-8 1052 1112188 ns/op BenchmarkLastIndexHard2-8 1056 1107857 ns/op BenchmarkLastIndexHard2-8 1044 1111240 ns/op BenchmarkLastIndexHard2-8 1064 1110107 ns/op BenchmarkLastIndexHard3-8 1052 1106741 ns/op BenchmarkLastIndexHard3-8 1046 1113828 ns/op BenchmarkLastIndexHard3-8 1047 1113720 ns/op BenchmarkLastIndexHard3-8 1050 1110705 ns/op BenchmarkLastIndexHard3-8 1048 1106395 ns/op BenchmarkLastIndexHard3-8 1038 1113482 ns/op BenchmarkLastIndexHard3-8 1066 1108874 ns/op BenchmarkLastIndexHard3-8 1048 1114049 ns/op BenchmarkLastIndexHard3-8 1039 1110570 ns/op BenchmarkLastIndexHard3-8 1047 1113115 ns/op BenchmarkCountHard1-8 15135 78668 ns/op BenchmarkCountHard1-8 15158 78885 ns/op BenchmarkCountHard1-8 15200 78429 ns/op BenchmarkCountHard1-8 15178 79201 ns/op BenchmarkCountHard1-8 15206 79145 ns/op BenchmarkCountHard1-8 15201 79196 ns/op BenchmarkCountHard1-8 15164 78779 ns/op BenchmarkCountHard1-8 15182 79015 ns/op BenchmarkCountHard1-8 15248 78240 ns/op BenchmarkCountHard1-8 15172 78609 ns/op BenchmarkCountHard2-8 10842 110588 ns/op BenchmarkCountHard2-8 10810 110277 ns/op BenchmarkCountHard2-8 10850 110516 ns/op BenchmarkCountHard2-8 10899 110556 ns/op BenchmarkCountHard2-8 10864 110783 ns/op BenchmarkCountHard2-8 10879 110161 ns/op BenchmarkCountHard2-8 10843 110718 ns/op BenchmarkCountHard2-8 10890 110478 ns/op BenchmarkCountHard2-8 10858 110424 ns/op BenchmarkCountHard2-8 10851 110357 ns/op BenchmarkCountHard3-8 2536 444120 ns/op BenchmarkCountHard3-8 2545 440096 ns/op BenchmarkCountHard3-8 2578 444850 ns/op BenchmarkCountHard3-8 2526 445974 ns/op BenchmarkCountHard3-8 2589 441428 ns/op BenchmarkCountHard3-8 2474 443884 ns/op BenchmarkCountHard3-8 2528 441263 ns/op BenchmarkCountHard3-8 2493 443307 ns/op BenchmarkCountHard3-8 2569 442216 ns/op BenchmarkCountHard3-8 2565 439268 ns/op BenchmarkIndexTorture-8 139500 8689 ns/op BenchmarkIndexTorture-8 138212 8636 ns/op BenchmarkIndexTorture-8 138086 8580 ns/op BenchmarkIndexTorture-8 139524 8607 ns/op BenchmarkIndexTorture-8 140108 8664 ns/op BenchmarkIndexTorture-8 138552 8623 ns/op BenchmarkIndexTorture-8 138723 8643 ns/op BenchmarkIndexTorture-8 140251 8605 ns/op BenchmarkIndexTorture-8 138121 8629 ns/op BenchmarkIndexTorture-8 139263 8612 ns/op BenchmarkCountTorture-8 138610 8669 ns/op BenchmarkCountTorture-8 137734 8684 ns/op BenchmarkCountTorture-8 137443 8644 ns/op BenchmarkCountTorture-8 138723 8596 ns/op BenchmarkCountTorture-8 138828 8634 ns/op BenchmarkCountTorture-8 138363 8609 ns/op BenchmarkCountTorture-8 137330 8599 ns/op BenchmarkCountTorture-8 139296 8612 ns/op BenchmarkCountTorture-8 139064 8646 ns/op BenchmarkCountTorture-8 138687 8598 ns/op BenchmarkCountTortureOverlapping-8 19606 64202 ns/op BenchmarkCountTortureOverlapping-8 17587 65680 ns/op BenchmarkCountTortureOverlapping-8 19360 68700 ns/op BenchmarkCountTortureOverlapping-8 17808 63542 ns/op BenchmarkCountTortureOverlapping-8 19207 62112 ns/op BenchmarkCountTortureOverlapping-8 18530 64627 ns/op BenchmarkCountTortureOverlapping-8 17631 67374 ns/op BenchmarkCountTortureOverlapping-8 18202 61495 ns/op BenchmarkCountTortureOverlapping-8 18596 60961 ns/op BenchmarkCountTortureOverlapping-8 18531 61605 ns/op BenchmarkCountByte/10-8 338250264 3.528 ns/op 2834.63 MB/s BenchmarkCountByte/10-8 341278838 3.534 ns/op 2829.90 MB/s BenchmarkCountByte/10-8 339060670 3.516 ns/op 2844.05 MB/s BenchmarkCountByte/10-8 338783458 3.519 ns/op 2841.94 MB/s BenchmarkCountByte/10-8 341258562 3.498 ns/op 2858.55 MB/s BenchmarkCountByte/10-8 337714167 3.502 ns/op 2855.52 MB/s BenchmarkCountByte/10-8 340831123 3.508 ns/op 2850.28 MB/s BenchmarkCountByte/10-8 335888410 3.521 ns/op 2839.73 MB/s BenchmarkCountByte/10-8 341040706 3.513 ns/op 2846.19 MB/s BenchmarkCountByte/10-8 336357951 3.505 ns/op 2853.07 MB/s BenchmarkCountByte/32-8 275491636 4.413 ns/op 7250.92 MB/s BenchmarkCountByte/32-8 272803003 4.370 ns/op 7322.35 MB/s BenchmarkCountByte/32-8 272069502 4.372 ns/op 7318.64 MB/s BenchmarkCountByte/32-8 277988947 4.355 ns/op 7347.77 MB/s BenchmarkCountByte/32-8 271618111 4.375 ns/op 7314.35 MB/s BenchmarkCountByte/32-8 273316075 4.365 ns/op 7330.35 MB/s BenchmarkCountByte/32-8 276760107 4.361 ns/op 7337.94 MB/s BenchmarkCountByte/32-8 274179724 4.373 ns/op 7317.12 MB/s BenchmarkCountByte/32-8 272814440 4.374 ns/op 7315.40 MB/s BenchmarkCountByte/32-8 274730894 4.371 ns/op 7320.42 MB/s BenchmarkCountByte/4K-8 25495108 46.75 ns/op 87620.69 MB/s BenchmarkCountByte/4K-8 25707501 46.38 ns/op 88318.27 MB/s BenchmarkCountByte/4K-8 22277356 46.41 ns/op 88263.14 MB/s BenchmarkCountByte/4K-8 25909982 46.29 ns/op 88488.37 MB/s BenchmarkCountByte/4K-8 26237185 46.74 ns/op 87629.65 MB/s BenchmarkCountByte/4K-8 25438346 46.52 ns/op 88053.89 MB/s BenchmarkCountByte/4K-8 25728355 46.37 ns/op 88331.61 MB/s BenchmarkCountByte/4K-8 25940278 46.27 ns/op 88530.13 MB/s BenchmarkCountByte/4K-8 26010204 46.55 ns/op 87990.74 MB/s BenchmarkCountByte/4K-8 25473980 46.49 ns/op 88099.26 MB/s BenchmarkCountByte/4M-8 14704 78834 ns/op 53204.09 MB/s BenchmarkCountByte/4M-8 14719 81852 ns/op 51242.69 MB/s BenchmarkCountByte/4M-8 14533 82431 ns/op 50882.69 MB/s BenchmarkCountByte/4M-8 14344 81720 ns/op 51325.13 MB/s BenchmarkCountByte/4M-8 15217 81365 ns/op 51549.22 MB/s BenchmarkCountByte/4M-8 14242 76531 ns/op 54805.63 MB/s BenchmarkCountByte/4M-8 14900 79718 ns/op 52613.95 MB/s BenchmarkCountByte/4M-8 15168 79276 ns/op 52907.31 MB/s BenchmarkCountByte/4M-8 14526 79330 ns/op 52871.63 MB/s BenchmarkCountByte/4M-8 14828 80128 ns/op 52345.17 MB/s BenchmarkCountByte/64M-8 308 3896404 ns/op 17223.28 MB/s BenchmarkCountByte/64M-8 320 3753864 ns/op 17877.27 MB/s BenchmarkCountByte/64M-8 325 3863494 ns/op 17369.99 MB/s BenchmarkCountByte/64M-8 296 3938088 ns/op 17040.98 MB/s BenchmarkCountByte/64M-8 313 3886910 ns/op 17265.35 MB/s BenchmarkCountByte/64M-8 307 3821420 ns/op 17561.24 MB/s BenchmarkCountByte/64M-8 310 3871563 ns/op 17333.79 MB/s BenchmarkCountByte/64M-8 307 3892941 ns/op 17238.60 MB/s BenchmarkCountByte/64M-8 302 3834906 ns/op 17499.48 MB/s BenchmarkCountByte/64M-8 316 3890953 ns/op 17247.41 MB/s BenchmarkIndexAnyASCII/1:1-8 257607552 4.598 ns/op BenchmarkIndexAnyASCII/1:1-8 258545998 4.638 ns/op BenchmarkIndexAnyASCII/1:1-8 260958776 4.629 ns/op BenchmarkIndexAnyASCII/1:1-8 259255576 4.625 ns/op BenchmarkIndexAnyASCII/1:1-8 259631474 4.621 ns/op BenchmarkIndexAnyASCII/1:1-8 259655749 4.620 ns/op BenchmarkIndexAnyASCII/1:1-8 258282000 4.607 ns/op BenchmarkIndexAnyASCII/1:1-8 258891820 4.639 ns/op BenchmarkIndexAnyASCII/1:1-8 260772265 4.633 ns/op BenchmarkIndexAnyASCII/1:1-8 259408232 4.616 ns/op BenchmarkIndexAnyASCII/1:2-8 221043176 5.410 ns/op BenchmarkIndexAnyASCII/1:2-8 222299466 5.420 ns/op BenchmarkIndexAnyASCII/1:2-8 223283426 5.390 ns/op BenchmarkIndexAnyASCII/1:2-8 220479050 5.421 ns/op BenchmarkIndexAnyASCII/1:2-8 220877434 5.426 ns/op BenchmarkIndexAnyASCII/1:2-8 221764639 5.434 ns/op BenchmarkIndexAnyASCII/1:2-8 219294986 5.409 ns/op BenchmarkIndexAnyASCII/1:2-8 222177753 5.424 ns/op BenchmarkIndexAnyASCII/1:2-8 220921102 5.388 ns/op BenchmarkIndexAnyASCII/1:2-8 221911647 5.398 ns/op BenchmarkIndexAnyASCII/1:4-8 223617871 5.514 ns/op BenchmarkIndexAnyASCII/1:4-8 219957086 5.406 ns/op BenchmarkIndexAnyASCII/1:4-8 221338288 5.408 ns/op BenchmarkIndexAnyASCII/1:4-8 221923425 5.407 ns/op BenchmarkIndexAnyASCII/1:4-8 221836058 5.413 ns/op BenchmarkIndexAnyASCII/1:4-8 220635016 5.429 ns/op BenchmarkIndexAnyASCII/1:4-8 221071015 5.440 ns/op BenchmarkIndexAnyASCII/1:4-8 220767988 5.385 ns/op BenchmarkIndexAnyASCII/1:4-8 222160945 5.411 ns/op BenchmarkIndexAnyASCII/1:4-8 220744291 5.420 ns/op BenchmarkIndexAnyASCII/1:8-8 220747966 5.391 ns/op BenchmarkIndexAnyASCII/1:8-8 222364785 5.418 ns/op BenchmarkIndexAnyASCII/1:8-8 221245496 5.425 ns/op BenchmarkIndexAnyASCII/1:8-8 219743058 5.401 ns/op BenchmarkIndexAnyASCII/1:8-8 221235945 5.431 ns/op BenchmarkIndexAnyASCII/1:8-8 221613655 5.420 ns/op BenchmarkIndexAnyASCII/1:8-8 222257332 5.416 ns/op BenchmarkIndexAnyASCII/1:8-8 223014117 5.410 ns/op BenchmarkIndexAnyASCII/1:8-8 220855692 5.422 ns/op BenchmarkIndexAnyASCII/1:8-8 220216191 5.404 ns/op BenchmarkIndexAnyASCII/1:16-8 213537016 5.655 ns/op BenchmarkIndexAnyASCII/1:16-8 212016412 5.673 ns/op BenchmarkIndexAnyASCII/1:16-8 212867928 5.617 ns/op BenchmarkIndexAnyASCII/1:16-8 214947252 5.650 ns/op BenchmarkIndexAnyASCII/1:16-8 215479651 5.606 ns/op BenchmarkIndexAnyASCII/1:16-8 211217955 5.575 ns/op BenchmarkIndexAnyASCII/1:16-8 213085140 5.595 ns/op BenchmarkIndexAnyASCII/1:16-8 214381947 5.611 ns/op BenchmarkIndexAnyASCII/1:16-8 213884193 5.661 ns/op BenchmarkIndexAnyASCII/1:16-8 214047686 5.608 ns/op BenchmarkIndexAnyASCII/1:32-8 187415289 6.387 ns/op BenchmarkIndexAnyASCII/1:32-8 188429826 6.394 ns/op BenchmarkIndexAnyASCII/1:32-8 188275168 6.379 ns/op BenchmarkIndexAnyASCII/1:32-8 187203823 6.420 ns/op BenchmarkIndexAnyASCII/1:32-8 186926419 6.387 ns/op BenchmarkIndexAnyASCII/1:32-8 187428626 6.397 ns/op BenchmarkIndexAnyASCII/1:32-8 187429886 6.394 ns/op BenchmarkIndexAnyASCII/1:32-8 186913819 6.389 ns/op BenchmarkIndexAnyASCII/1:32-8 186306127 6.412 ns/op BenchmarkIndexAnyASCII/1:32-8 186647404 6.355 ns/op BenchmarkIndexAnyASCII/1:64-8 181844527 6.565 ns/op BenchmarkIndexAnyASCII/1:64-8 181377368 6.566 ns/op BenchmarkIndexAnyASCII/1:64-8 183837204 6.576 ns/op BenchmarkIndexAnyASCII/1:64-8 182492253 6.571 ns/op BenchmarkIndexAnyASCII/1:64-8 182587479 6.565 ns/op BenchmarkIndexAnyASCII/1:64-8 182163924 6.570 ns/op BenchmarkIndexAnyASCII/1:64-8 182643388 6.582 ns/op BenchmarkIndexAnyASCII/1:64-8 182905827 6.544 ns/op BenchmarkIndexAnyASCII/1:64-8 182485714 6.587 ns/op BenchmarkIndexAnyASCII/1:64-8 182418315 6.579 ns/op BenchmarkIndexAnyASCII/16:1-8 251159467 4.735 ns/op BenchmarkIndexAnyASCII/16:1-8 250626482 4.773 ns/op BenchmarkIndexAnyASCII/16:1-8 251153623 4.765 ns/op BenchmarkIndexAnyASCII/16:1-8 252233983 4.776 ns/op BenchmarkIndexAnyASCII/16:1-8 251236082 4.777 ns/op BenchmarkIndexAnyASCII/16:1-8 249878292 4.764 ns/op BenchmarkIndexAnyASCII/16:1-8 253677399 4.745 ns/op BenchmarkIndexAnyASCII/16:1-8 251459425 4.750 ns/op BenchmarkIndexAnyASCII/16:1-8 251020863 4.783 ns/op BenchmarkIndexAnyASCII/16:1-8 253327191 4.751 ns/op BenchmarkIndexAnyASCII/16:2-8 81030841 14.08 ns/op BenchmarkIndexAnyASCII/16:2-8 84267242 14.13 ns/op BenchmarkIndexAnyASCII/16:2-8 82107811 14.02 ns/op BenchmarkIndexAnyASCII/16:2-8 84144142 14.02 ns/op BenchmarkIndexAnyASCII/16:2-8 84945726 14.08 ns/op BenchmarkIndexAnyASCII/16:2-8 79233264 14.01 ns/op BenchmarkIndexAnyASCII/16:2-8 80953442 14.02 ns/op BenchmarkIndexAnyASCII/16:2-8 83374250 14.07 ns/op BenchmarkIndexAnyASCII/16:2-8 84025398 14.15 ns/op BenchmarkIndexAnyASCII/16:2-8 86782440 14.08 ns/op BenchmarkIndexAnyASCII/16:4-8 78110104 15.36 ns/op BenchmarkIndexAnyASCII/16:4-8 68711096 15.35 ns/op BenchmarkIndexAnyASCII/16:4-8 77334630 15.32 ns/op BenchmarkIndexAnyASCII/16:4-8 77497272 15.35 ns/op BenchmarkIndexAnyASCII/16:4-8 77653401 15.31 ns/op BenchmarkIndexAnyASCII/16:4-8 75974283 15.39 ns/op BenchmarkIndexAnyASCII/16:4-8 78502712 15.46 ns/op BenchmarkIndexAnyASCII/16:4-8 76944033 15.41 ns/op BenchmarkIndexAnyASCII/16:4-8 77343463 15.35 ns/op BenchmarkIndexAnyASCII/16:4-8 77068498 15.34 ns/op BenchmarkIndexAnyASCII/16:8-8 62672590 19.10 ns/op BenchmarkIndexAnyASCII/16:8-8 61868511 19.20 ns/op BenchmarkIndexAnyASCII/16:8-8 60855493 19.19 ns/op BenchmarkIndexAnyASCII/16:8-8 61758444 19.22 ns/op BenchmarkIndexAnyASCII/16:8-8 62525762 19.13 ns/op BenchmarkIndexAnyASCII/16:8-8 62011459 19.16 ns/op BenchmarkIndexAnyASCII/16:8-8 61369958 19.35 ns/op BenchmarkIndexAnyASCII/16:8-8 59728316 19.10 ns/op BenchmarkIndexAnyASCII/16:8-8 61209942 19.20 ns/op BenchmarkIndexAnyASCII/16:8-8 62226549 19.33 ns/op BenchmarkIndexAnyASCII/16:16-8 47528588 25.48 ns/op BenchmarkIndexAnyASCII/16:16-8 43885105 25.28 ns/op BenchmarkIndexAnyASCII/16:16-8 47455206 25.35 ns/op BenchmarkIndexAnyASCII/16:16-8 47223438 25.30 ns/op BenchmarkIndexAnyASCII/16:16-8 47230478 25.26 ns/op BenchmarkIndexAnyASCII/16:16-8 47577822 25.36 ns/op BenchmarkIndexAnyASCII/16:16-8 40569247 25.54 ns/op BenchmarkIndexAnyASCII/16:16-8 46494694 25.21 ns/op BenchmarkIndexAnyASCII/16:16-8 46524076 25.32 ns/op BenchmarkIndexAnyASCII/16:16-8 47083455 25.29 ns/op BenchmarkIndexAnyASCII/16:32-8 28699809 42.77 ns/op BenchmarkIndexAnyASCII/16:32-8 27791883 42.89 ns/op BenchmarkIndexAnyASCII/16:32-8 28075220 42.80 ns/op BenchmarkIndexAnyASCII/16:32-8 28249753 42.73 ns/op BenchmarkIndexAnyASCII/16:32-8 27999837 42.89 ns/op BenchmarkIndexAnyASCII/16:32-8 27224449 42.79 ns/op BenchmarkIndexAnyASCII/16:32-8 28007329 42.67 ns/op BenchmarkIndexAnyASCII/16:32-8 28322040 42.85 ns/op BenchmarkIndexAnyASCII/16:32-8 28147873 42.69 ns/op BenchmarkIndexAnyASCII/16:32-8 27579236 42.91 ns/op BenchmarkIndexAnyASCII/16:64-8 17277625 70.06 ns/op BenchmarkIndexAnyASCII/16:64-8 17417490 69.96 ns/op BenchmarkIndexAnyASCII/16:64-8 17317971 70.00 ns/op BenchmarkIndexAnyASCII/16:64-8 16744042 69.94 ns/op BenchmarkIndexAnyASCII/16:64-8 17067796 69.83 ns/op BenchmarkIndexAnyASCII/16:64-8 17312666 70.15 ns/op BenchmarkIndexAnyASCII/16:64-8 17284669 69.86 ns/op BenchmarkIndexAnyASCII/16:64-8 17081384 69.77 ns/op BenchmarkIndexAnyASCII/16:64-8 17333445 69.88 ns/op BenchmarkIndexAnyASCII/16:64-8 17116630 69.79 ns/op BenchmarkIndexAnyASCII/256:1-8 141889767 8.376 ns/op BenchmarkIndexAnyASCII/256:1-8 142506085 8.410 ns/op BenchmarkIndexAnyASCII/256:1-8 143312878 8.472 ns/op BenchmarkIndexAnyASCII/256:1-8 142367311 8.415 ns/op BenchmarkIndexAnyASCII/256:1-8 143416292 8.411 ns/op BenchmarkIndexAnyASCII/256:1-8 142477689 8.432 ns/op BenchmarkIndexAnyASCII/256:1-8 142896391 8.385 ns/op BenchmarkIndexAnyASCII/256:1-8 143123847 8.423 ns/op BenchmarkIndexAnyASCII/256:1-8 142705252 8.392 ns/op BenchmarkIndexAnyASCII/256:1-8 142536205 8.377 ns/op BenchmarkIndexAnyASCII/256:2-8 9203018 129.7 ns/op BenchmarkIndexAnyASCII/256:2-8 9223105 130.9 ns/op BenchmarkIndexAnyASCII/256:2-8 8988306 130.7 ns/op BenchmarkIndexAnyASCII/256:2-8 9248294 129.5 ns/op BenchmarkIndexAnyASCII/256:2-8 9265459 129.9 ns/op BenchmarkIndexAnyASCII/256:2-8 9098988 130.3 ns/op BenchmarkIndexAnyASCII/256:2-8 9217377 129.8 ns/op BenchmarkIndexAnyASCII/256:2-8 9211491 131.2 ns/op BenchmarkIndexAnyASCII/256:2-8 9156645 129.6 ns/op BenchmarkIndexAnyASCII/256:2-8 9241332 129.7 ns/op BenchmarkIndexAnyASCII/256:4-8 9112186 131.7 ns/op BenchmarkIndexAnyASCII/256:4-8 8954677 132.4 ns/op BenchmarkIndexAnyASCII/256:4-8 9092858 131.5 ns/op BenchmarkIndexAnyASCII/256:4-8 9093646 132.3 ns/op BenchmarkIndexAnyASCII/256:4-8 9007556 131.7 ns/op BenchmarkIndexAnyASCII/256:4-8 9163294 131.3 ns/op BenchmarkIndexAnyASCII/256:4-8 9043515 131.4 ns/op BenchmarkIndexAnyASCII/256:4-8 8944621 132.1 ns/op BenchmarkIndexAnyASCII/256:4-8 9090890 131.7 ns/op BenchmarkIndexAnyASCII/256:4-8 9077876 131.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8886787 135.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8853764 135.9 ns/op BenchmarkIndexAnyASCII/256:8-8 8904778 135.2 ns/op BenchmarkIndexAnyASCII/256:8-8 8835906 135.0 ns/op BenchmarkIndexAnyASCII/256:8-8 8951938 135.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8833894 135.8 ns/op BenchmarkIndexAnyASCII/256:8-8 8661373 136.1 ns/op BenchmarkIndexAnyASCII/256:8-8 8814238 134.8 ns/op BenchmarkIndexAnyASCII/256:8-8 8873126 135.5 ns/op BenchmarkIndexAnyASCII/256:8-8 8842172 136.2 ns/op BenchmarkIndexAnyASCII/256:16-8 8477092 141.5 ns/op BenchmarkIndexAnyASCII/256:16-8 8451098 141.4 ns/op BenchmarkIndexAnyASCII/256:16-8 8577996 141.6 ns/op BenchmarkIndexAnyASCII/256:16-8 8572327 140.8 ns/op BenchmarkIndexAnyASCII/256:16-8 8430898 142.0 ns/op BenchmarkIndexAnyASCII/256:16-8 8387643 141.5 ns/op BenchmarkIndexAnyASCII/256:16-8 8505392 140.8 ns/op BenchmarkIndexAnyASCII/256:16-8 8293393 141.1 ns/op BenchmarkIndexAnyASCII/256:16-8 8303155 141.3 ns/op BenchmarkIndexAnyASCII/256:16-8 8503369 140.4 ns/op BenchmarkIndexAnyASCII/256:32-8 7483494 160.4 ns/op BenchmarkIndexAnyASCII/256:32-8 7424463 159.9 ns/op BenchmarkIndexAnyASCII/256:32-8 7519819 158.9 ns/op BenchmarkIndexAnyASCII/256:32-8 7488228 159.6 ns/op BenchmarkIndexAnyASCII/256:32-8 7479781 158.9 ns/op BenchmarkIndexAnyASCII/256:32-8 7568133 159.2 ns/op BenchmarkIndexAnyASCII/256:32-8 7465332 158.9 ns/op BenchmarkIndexAnyASCII/256:32-8 7560996 160.6 ns/op BenchmarkIndexAnyASCII/256:32-8 7576340 160.3 ns/op BenchmarkIndexAnyASCII/256:32-8 7476363 158.8 ns/op BenchmarkIndexAnyASCII/256:64-8 6543466 184.0 ns/op BenchmarkIndexAnyASCII/256:64-8 6490274 184.0 ns/op BenchmarkIndexAnyASCII/256:64-8 6436592 184.4 ns/op BenchmarkIndexAnyASCII/256:64-8 6503752 184.5 ns/op BenchmarkIndexAnyASCII/256:64-8 6557097 184.2 ns/op BenchmarkIndexAnyASCII/256:64-8 6516142 183.7 ns/op BenchmarkIndexAnyASCII/256:64-8 6492320 185.3 ns/op BenchmarkIndexAnyASCII/256:64-8 6527905 185.9 ns/op BenchmarkIndexAnyASCII/256:64-8 6532860 184.4 ns/op BenchmarkIndexAnyASCII/256:64-8 6467931 183.5 ns/op BenchmarkIndexAnyUTF8/1:1-8 354022010 3.359 ns/op BenchmarkIndexAnyUTF8/1:1-8 358184542 3.355 ns/op BenchmarkIndexAnyUTF8/1:1-8 357771442 3.357 ns/op BenchmarkIndexAnyUTF8/1:1-8 356332528 3.361 ns/op BenchmarkIndexAnyUTF8/1:1-8 357706662 3.361 ns/op BenchmarkIndexAnyUTF8/1:1-8 359997442 3.359 ns/op BenchmarkIndexAnyUTF8/1:1-8 355446729 3.357 ns/op BenchmarkIndexAnyUTF8/1:1-8 356293687 3.349 ns/op BenchmarkIndexAnyUTF8/1:1-8 356794371 3.352 ns/op BenchmarkIndexAnyUTF8/1:1-8 355154400 3.360 ns/op BenchmarkIndexAnyUTF8/1:2-8 224380903 5.381 ns/op BenchmarkIndexAnyUTF8/1:2-8 227927500 5.259 ns/op BenchmarkIndexAnyUTF8/1:2-8 225993889 5.324 ns/op BenchmarkIndexAnyUTF8/1:2-8 227941971 5.257 ns/op BenchmarkIndexAnyUTF8/1:2-8 227927708 5.227 ns/op BenchmarkIndexAnyUTF8/1:2-8 227735439 5.279 ns/op BenchmarkIndexAnyUTF8/1:2-8 228781314 5.238 ns/op BenchmarkIndexAnyUTF8/1:2-8 228380758 5.250 ns/op BenchmarkIndexAnyUTF8/1:2-8 227931898 5.241 ns/op BenchmarkIndexAnyUTF8/1:2-8 228522740 5.263 ns/op BenchmarkIndexAnyUTF8/1:4-8 227457234 5.247 ns/op BenchmarkIndexAnyUTF8/1:4-8 228381714 5.332 ns/op BenchmarkIndexAnyUTF8/1:4-8 222752552 5.372 ns/op BenchmarkIndexAnyUTF8/1:4-8 227647386 5.304 ns/op BenchmarkIndexAnyUTF8/1:4-8 224980644 5.397 ns/op BenchmarkIndexAnyUTF8/1:4-8 228233497 5.262 ns/op BenchmarkIndexAnyUTF8/1:4-8 222078465 5.355 ns/op BenchmarkIndexAnyUTF8/1:4-8 227722776 5.238 ns/op BenchmarkIndexAnyUTF8/1:4-8 224751250 5.396 ns/op BenchmarkIndexAnyUTF8/1:4-8 227977939 5.226 ns/op BenchmarkIndexAnyUTF8/1:8-8 223390736 5.348 ns/op BenchmarkIndexAnyUTF8/1:8-8 226104320 5.264 ns/op BenchmarkIndexAnyUTF8/1:8-8 229725990 5.258 ns/op BenchmarkIndexAnyUTF8/1:8-8 228408315 5.254 ns/op BenchmarkIndexAnyUTF8/1:8-8 226602180 5.254 ns/op BenchmarkIndexAnyUTF8/1:8-8 229001404 5.250 ns/op BenchmarkIndexAnyUTF8/1:8-8 228822630 5.252 ns/op BenchmarkIndexAnyUTF8/1:8-8 228474994 5.216 ns/op BenchmarkIndexAnyUTF8/1:8-8 226967222 5.279 ns/op BenchmarkIndexAnyUTF8/1:8-8 228457069 5.297 ns/op BenchmarkIndexAnyUTF8/1:16-8 217926547 5.483 ns/op BenchmarkIndexAnyUTF8/1:16-8 214616287 5.480 ns/op BenchmarkIndexAnyUTF8/1:16-8 211003076 5.674 ns/op BenchmarkIndexAnyUTF8/1:16-8 221765203 5.583 ns/op BenchmarkIndexAnyUTF8/1:16-8 211764420 5.655 ns/op BenchmarkIndexAnyUTF8/1:16-8 216746956 5.457 ns/op BenchmarkIndexAnyUTF8/1:16-8 210436021 5.684 ns/op BenchmarkIndexAnyUTF8/1:16-8 221274813 5.508 ns/op BenchmarkIndexAnyUTF8/1:16-8 212664304 5.688 ns/op BenchmarkIndexAnyUTF8/1:16-8 212976452 5.507 ns/op BenchmarkIndexAnyUTF8/1:32-8 190393515 6.256 ns/op BenchmarkIndexAnyUTF8/1:32-8 198737095 6.090 ns/op BenchmarkIndexAnyUTF8/1:32-8 199593663 6.085 ns/op BenchmarkIndexAnyUTF8/1:32-8 196953388 6.045 ns/op BenchmarkIndexAnyUTF8/1:32-8 195543338 6.034 ns/op BenchmarkIndexAnyUTF8/1:32-8 196929861 6.037 ns/op BenchmarkIndexAnyUTF8/1:32-8 197972911 6.066 ns/op BenchmarkIndexAnyUTF8/1:32-8 197915841 6.083 ns/op BenchmarkIndexAnyUTF8/1:32-8 199942501 6.091 ns/op BenchmarkIndexAnyUTF8/1:32-8 197472397 6.073 ns/op BenchmarkIndexAnyUTF8/1:64-8 182916411 6.535 ns/op BenchmarkIndexAnyUTF8/1:64-8 183764697 6.517 ns/op BenchmarkIndexAnyUTF8/1:64-8 184719628 6.545 ns/op BenchmarkIndexAnyUTF8/1:64-8 184623685 6.522 ns/op BenchmarkIndexAnyUTF8/1:64-8 184002548 6.531 ns/op BenchmarkIndexAnyUTF8/1:64-8 184067262 6.512 ns/op BenchmarkIndexAnyUTF8/1:64-8 181585164 6.497 ns/op BenchmarkIndexAnyUTF8/1:64-8 183972220 6.578 ns/op BenchmarkIndexAnyUTF8/1:64-8 182496498 6.497 ns/op BenchmarkIndexAnyUTF8/1:64-8 183900720 6.523 ns/op BenchmarkIndexAnyUTF8/16:1-8 90148834 13.37 ns/op BenchmarkIndexAnyUTF8/16:1-8 91529191 14.79 ns/op BenchmarkIndexAnyUTF8/16:1-8 72325110 15.75 ns/op BenchmarkIndexAnyUTF8/16:1-8 87672684 13.54 ns/op BenchmarkIndexAnyUTF8/16:1-8 95479969 14.47 ns/op BenchmarkIndexAnyUTF8/16:1-8 89489829 15.09 ns/op BenchmarkIndexAnyUTF8/16:1-8 86288911 13.11 ns/op BenchmarkIndexAnyUTF8/16:1-8 85674290 13.53 ns/op BenchmarkIndexAnyUTF8/16:1-8 91462402 12.75 ns/op BenchmarkIndexAnyUTF8/16:1-8 91346883 14.93 ns/op BenchmarkIndexAnyUTF8/16:2-8 19009827 62.90 ns/op BenchmarkIndexAnyUTF8/16:2-8 18935517 63.12 ns/op BenchmarkIndexAnyUTF8/16:2-8 18961882 63.01 ns/op BenchmarkIndexAnyUTF8/16:2-8 19042766 62.83 ns/op BenchmarkIndexAnyUTF8/16:2-8 18988862 62.99 ns/op BenchmarkIndexAnyUTF8/16:2-8 18953223 63.02 ns/op BenchmarkIndexAnyUTF8/16:2-8 19021830 63.00 ns/op BenchmarkIndexAnyUTF8/16:2-8 19173541 62.73 ns/op BenchmarkIndexAnyUTF8/16:2-8 19180279 62.74 ns/op BenchmarkIndexAnyUTF8/16:2-8 18824259 63.22 ns/op BenchmarkIndexAnyUTF8/16:4-8 19279184 62.89 ns/op BenchmarkIndexAnyUTF8/16:4-8 19171616 62.50 ns/op BenchmarkIndexAnyUTF8/16:4-8 19096656 62.96 ns/op BenchmarkIndexAnyUTF8/16:4-8 18844231 62.65 ns/op BenchmarkIndexAnyUTF8/16:4-8 19150281 62.68 ns/op BenchmarkIndexAnyUTF8/16:4-8 19082660 62.69 ns/op BenchmarkIndexAnyUTF8/16:4-8 19113152 63.19 ns/op BenchmarkIndexAnyUTF8/16:4-8 19025361 62.92 ns/op BenchmarkIndexAnyUTF8/16:4-8 19338441 63.02 ns/op BenchmarkIndexAnyUTF8/16:4-8 19021496 63.58 ns/op BenchmarkIndexAnyUTF8/16:8-8 19061900 63.01 ns/op BenchmarkIndexAnyUTF8/16:8-8 18998419 62.80 ns/op BenchmarkIndexAnyUTF8/16:8-8 19148179 64.06 ns/op BenchmarkIndexAnyUTF8/16:8-8 19063719 63.07 ns/op BenchmarkIndexAnyUTF8/16:8-8 18222579 62.97 ns/op BenchmarkIndexAnyUTF8/16:8-8 19051348 62.71 ns/op BenchmarkIndexAnyUTF8/16:8-8 19045594 63.00 ns/op BenchmarkIndexAnyUTF8/16:8-8 19132443 62.78 ns/op BenchmarkIndexAnyUTF8/16:8-8 18933476 62.97 ns/op BenchmarkIndexAnyUTF8/16:8-8 19267940 63.15 ns/op BenchmarkIndexAnyUTF8/16:16-8 18183523 66.05 ns/op BenchmarkIndexAnyUTF8/16:16-8 18042862 66.19 ns/op BenchmarkIndexAnyUTF8/16:16-8 17874630 66.14 ns/op BenchmarkIndexAnyUTF8/16:16-8 18366810 66.28 ns/op BenchmarkIndexAnyUTF8/16:16-8 18049550 66.34 ns/op BenchmarkIndexAnyUTF8/16:16-8 18060583 66.36 ns/op BenchmarkIndexAnyUTF8/16:16-8 17725873 66.31 ns/op BenchmarkIndexAnyUTF8/16:16-8 17915509 66.49 ns/op BenchmarkIndexAnyUTF8/16:16-8 18118732 66.36 ns/op BenchmarkIndexAnyUTF8/16:16-8 18147048 66.07 ns/op BenchmarkIndexAnyUTF8/16:32-8 16489251 72.73 ns/op BenchmarkIndexAnyUTF8/16:32-8 16276746 72.55 ns/op BenchmarkIndexAnyUTF8/16:32-8 16463740 73.06 ns/op BenchmarkIndexAnyUTF8/16:32-8 16523684 72.93 ns/op BenchmarkIndexAnyUTF8/16:32-8 16467610 72.33 ns/op BenchmarkIndexAnyUTF8/16:32-8 16716208 72.80 ns/op BenchmarkIndexAnyUTF8/16:32-8 16424917 72.75 ns/op BenchmarkIndexAnyUTF8/16:32-8 16032250 72.45 ns/op BenchmarkIndexAnyUTF8/16:32-8 16587843 72.28 ns/op BenchmarkIndexAnyUTF8/16:32-8 16550196 72.51 ns/op BenchmarkIndexAnyUTF8/16:64-8 15079100 79.51 ns/op BenchmarkIndexAnyUTF8/16:64-8 14718075 79.54 ns/op BenchmarkIndexAnyUTF8/16:64-8 15113007 79.77 ns/op BenchmarkIndexAnyUTF8/16:64-8 15015128 80.26 ns/op BenchmarkIndexAnyUTF8/16:64-8 15192710 79.44 ns/op BenchmarkIndexAnyUTF8/16:64-8 15091395 79.08 ns/op BenchmarkIndexAnyUTF8/16:64-8 15135490 79.30 ns/op BenchmarkIndexAnyUTF8/16:64-8 14951958 80.69 ns/op BenchmarkIndexAnyUTF8/16:64-8 14872095 79.36 ns/op BenchmarkIndexAnyUTF8/16:64-8 15275638 79.64 ns/op BenchmarkIndexAnyUTF8/256:1-8 7092302 168.7 ns/op BenchmarkIndexAnyUTF8/256:1-8 7037379 169.2 ns/op BenchmarkIndexAnyUTF8/256:1-8 7140982 168.7 ns/op BenchmarkIndexAnyUTF8/256:1-8 7084068 168.5 ns/op BenchmarkIndexAnyUTF8/256:1-8 7073514 169.0 ns/op BenchmarkIndexAnyUTF8/256:1-8 7086486 168.9 ns/op BenchmarkIndexAnyUTF8/256:1-8 7089578 170.3 ns/op BenchmarkIndexAnyUTF8/256:1-8 7094545 168.0 ns/op BenchmarkIndexAnyUTF8/256:1-8 7058451 169.0 ns/op BenchmarkIndexAnyUTF8/256:1-8 7083022 169.6 ns/op BenchmarkIndexAnyUTF8/256:2-8 1376575 871.7 ns/op BenchmarkIndexAnyUTF8/256:2-8 1366316 873.5 ns/op BenchmarkIndexAnyUTF8/256:2-8 1373178 871.4 ns/op BenchmarkIndexAnyUTF8/256:2-8 1371030 872.7 ns/op BenchmarkIndexAnyUTF8/256:2-8 1365417 873.5 ns/op BenchmarkIndexAnyUTF8/256:2-8 1379504 871.4 ns/op BenchmarkIndexAnyUTF8/256:2-8 1378018 871.5 ns/op BenchmarkIndexAnyUTF8/256:2-8 1380351 877.6 ns/op BenchmarkIndexAnyUTF8/256:2-8 1375903 871.3 ns/op BenchmarkIndexAnyUTF8/256:2-8 1372681 876.8 ns/op BenchmarkIndexAnyUTF8/256:4-8 1373998 875.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 1371951 871.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 1375366 870.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 1374448 872.3 ns/op BenchmarkIndexAnyUTF8/256:4-8 1375174 867.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 1373727 872.5 ns/op BenchmarkIndexAnyUTF8/256:4-8 1360609 870.3 ns/op BenchmarkIndexAnyUTF8/256:4-8 1359765 876.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 1368279 871.1 ns/op BenchmarkIndexAnyUTF8/256:4-8 1351957 876.9 ns/op BenchmarkIndexAnyUTF8/256:8-8 1375597 873.8 ns/op BenchmarkIndexAnyUTF8/256:8-8 1372846 870.3 ns/op BenchmarkIndexAnyUTF8/256:8-8 1358385 873.6 ns/op BenchmarkIndexAnyUTF8/256:8-8 1378044 874.8 ns/op BenchmarkIndexAnyUTF8/256:8-8 1371133 871.4 ns/op BenchmarkIndexAnyUTF8/256:8-8 1373292 873.8 ns/op BenchmarkIndexAnyUTF8/256:8-8 1375609 876.6 ns/op BenchmarkIndexAnyUTF8/256:8-8 1382335 876.0 ns/op BenchmarkIndexAnyUTF8/256:8-8 1370604 874.7 ns/op BenchmarkIndexAnyUTF8/256:8-8 1378585 873.3 ns/op BenchmarkIndexAnyUTF8/256:16-8 1296664 929.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 1294264 928.3 ns/op BenchmarkIndexAnyUTF8/256:16-8 1287007 928.1 ns/op BenchmarkIndexAnyUTF8/256:16-8 1291596 924.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 1288128 924.5 ns/op BenchmarkIndexAnyUTF8/256:16-8 1294438 926.8 ns/op BenchmarkIndexAnyUTF8/256:16-8 1294582 923.5 ns/op BenchmarkIndexAnyUTF8/256:16-8 1300570 930.5 ns/op BenchmarkIndexAnyUTF8/256:16-8 1296531 944.2 ns/op BenchmarkIndexAnyUTF8/256:16-8 1293595 929.2 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1029 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1037 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1027 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1034 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1034 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1028 ns/op BenchmarkIndexAnyUTF8/256:32-8 1158300 1029 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1028 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1033 ns/op BenchmarkIndexAnyUTF8/256:32-8 1000000 1034 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1140 ns/op BenchmarkIndexAnyUTF8/256:64-8 937630 1134 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1136 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1140 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1137 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1136 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1144 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1143 ns/op BenchmarkIndexAnyUTF8/256:64-8 1054339 1137 ns/op BenchmarkIndexAnyUTF8/256:64-8 1000000 1144 ns/op BenchmarkLastIndexAnyASCII/1:1-8 239236346 4.999 ns/op BenchmarkLastIndexAnyASCII/1:1-8 237193195 4.999 ns/op BenchmarkLastIndexAnyASCII/1:1-8 238663128 5.013 ns/op BenchmarkLastIndexAnyASCII/1:1-8 238793578 5.024 ns/op BenchmarkLastIndexAnyASCII/1:1-8 238510047 5.039 ns/op BenchmarkLastIndexAnyASCII/1:1-8 238069060 4.994 ns/op BenchmarkLastIndexAnyASCII/1:1-8 240592857 5.035 ns/op BenchmarkLastIndexAnyASCII/1:1-8 240526957 4.985 ns/op BenchmarkLastIndexAnyASCII/1:1-8 237279693 5.011 ns/op BenchmarkLastIndexAnyASCII/1:1-8 238554666 5.017 ns/op BenchmarkLastIndexAnyASCII/1:2-8 239872053 5.006 ns/op BenchmarkLastIndexAnyASCII/1:2-8 239635471 5.003 ns/op BenchmarkLastIndexAnyASCII/1:2-8 238303014 4.997 ns/op BenchmarkLastIndexAnyASCII/1:2-8 240171218 5.045 ns/op BenchmarkLastIndexAnyASCII/1:2-8 238722618 4.978 ns/op BenchmarkLastIndexAnyASCII/1:2-8 237237273 4.997 ns/op BenchmarkLastIndexAnyASCII/1:2-8 240672586 5.020 ns/op BenchmarkLastIndexAnyASCII/1:2-8 239847009 5.010 ns/op BenchmarkLastIndexAnyASCII/1:2-8 237415332 5.022 ns/op BenchmarkLastIndexAnyASCII/1:2-8 238157343 5.010 ns/op BenchmarkLastIndexAnyASCII/1:4-8 240358821 5.010 ns/op BenchmarkLastIndexAnyASCII/1:4-8 237413640 5.006 ns/op BenchmarkLastIndexAnyASCII/1:4-8 238198617 5.002 ns/op BenchmarkLastIndexAnyASCII/1:4-8 240274789 5.028 ns/op BenchmarkLastIndexAnyASCII/1:4-8 238740500 4.993 ns/op BenchmarkLastIndexAnyASCII/1:4-8 238644620 5.009 ns/op BenchmarkLastIndexAnyASCII/1:4-8 239931939 5.037 ns/op BenchmarkLastIndexAnyASCII/1:4-8 239271985 5.000 ns/op BenchmarkLastIndexAnyASCII/1:4-8 238428702 4.999 ns/op BenchmarkLastIndexAnyASCII/1:4-8 238643512 5.001 ns/op BenchmarkLastIndexAnyASCII/1:8-8 240530493 4.983 ns/op BenchmarkLastIndexAnyASCII/1:8-8 238339219 4.990 ns/op BenchmarkLastIndexAnyASCII/1:8-8 239050102 4.997 ns/op BenchmarkLastIndexAnyASCII/1:8-8 238185310 4.998 ns/op BenchmarkLastIndexAnyASCII/1:8-8 240842896 4.988 ns/op BenchmarkLastIndexAnyASCII/1:8-8 238319841 5.003 ns/op BenchmarkLastIndexAnyASCII/1:8-8 237849286 5.017 ns/op BenchmarkLastIndexAnyASCII/1:8-8 240240766 4.987 ns/op BenchmarkLastIndexAnyASCII/1:8-8 238979457 5.018 ns/op BenchmarkLastIndexAnyASCII/1:8-8 238022355 5.033 ns/op BenchmarkLastIndexAnyASCII/1:16-8 252984508 4.753 ns/op BenchmarkLastIndexAnyASCII/1:16-8 253457662 4.728 ns/op BenchmarkLastIndexAnyASCII/1:16-8 252743326 4.715 ns/op BenchmarkLastIndexAnyASCII/1:16-8 255895262 4.749 ns/op BenchmarkLastIndexAnyASCII/1:16-8 253657467 4.734 ns/op BenchmarkLastIndexAnyASCII/1:16-8 251024599 4.728 ns/op BenchmarkLastIndexAnyASCII/1:16-8 255185614 4.745 ns/op BenchmarkLastIndexAnyASCII/1:16-8 251724232 4.729 ns/op BenchmarkLastIndexAnyASCII/1:16-8 246300488 4.711 ns/op BenchmarkLastIndexAnyASCII/1:16-8 252923282 4.740 ns/op BenchmarkLastIndexAnyASCII/1:32-8 240100568 5.055 ns/op BenchmarkLastIndexAnyASCII/1:32-8 236132204 5.034 ns/op BenchmarkLastIndexAnyASCII/1:32-8 237186948 5.059 ns/op BenchmarkLastIndexAnyASCII/1:32-8 238269601 5.059 ns/op BenchmarkLastIndexAnyASCII/1:32-8 235910876 5.031 ns/op BenchmarkLastIndexAnyASCII/1:32-8 235211486 5.039 ns/op BenchmarkLastIndexAnyASCII/1:32-8 238853188 5.061 ns/op BenchmarkLastIndexAnyASCII/1:32-8 238343752 5.068 ns/op BenchmarkLastIndexAnyASCII/1:32-8 237101523 5.045 ns/op BenchmarkLastIndexAnyASCII/1:32-8 237444339 5.079 ns/op BenchmarkLastIndexAnyASCII/1:64-8 225089340 5.346 ns/op BenchmarkLastIndexAnyASCII/1:64-8 223222182 5.345 ns/op BenchmarkLastIndexAnyASCII/1:64-8 221873845 5.369 ns/op BenchmarkLastIndexAnyASCII/1:64-8 225009488 5.376 ns/op BenchmarkLastIndexAnyASCII/1:64-8 225342042 5.417 ns/op BenchmarkLastIndexAnyASCII/1:64-8 222625040 5.360 ns/op BenchmarkLastIndexAnyASCII/1:64-8 223766922 5.393 ns/op BenchmarkLastIndexAnyASCII/1:64-8 224383122 5.360 ns/op BenchmarkLastIndexAnyASCII/1:64-8 223615738 5.362 ns/op BenchmarkLastIndexAnyASCII/1:64-8 222917692 5.383 ns/op BenchmarkLastIndexAnyASCII/16:1-8 81748446 13.66 ns/op BenchmarkLastIndexAnyASCII/16:1-8 86435478 13.69 ns/op BenchmarkLastIndexAnyASCII/16:1-8 87067449 13.64 ns/op BenchmarkLastIndexAnyASCII/16:1-8 85290186 13.59 ns/op BenchmarkLastIndexAnyASCII/16:1-8 87042838 13.58 ns/op BenchmarkLastIndexAnyASCII/16:1-8 88033470 13.70 ns/op BenchmarkLastIndexAnyASCII/16:1-8 86532112 13.63 ns/op BenchmarkLastIndexAnyASCII/16:1-8 85152442 13.70 ns/op BenchmarkLastIndexAnyASCII/16:1-8 87070255 13.69 ns/op BenchmarkLastIndexAnyASCII/16:1-8 88401520 13.65 ns/op BenchmarkLastIndexAnyASCII/16:2-8 81807687 14.11 ns/op BenchmarkLastIndexAnyASCII/16:2-8 85483114 14.03 ns/op BenchmarkLastIndexAnyASCII/16:2-8 84116085 14.10 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83344746 13.99 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83661208 14.17 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83924170 14.01 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83132572 14.10 ns/op BenchmarkLastIndexAnyASCII/16:2-8 84354946 14.06 ns/op BenchmarkLastIndexAnyASCII/16:2-8 83833094 14.09 ns/op BenchmarkLastIndexAnyASCII/16:2-8 84638863 14.03 ns/op BenchmarkLastIndexAnyASCII/16:4-8 76601395 15.41 ns/op BenchmarkLastIndexAnyASCII/16:4-8 77737627 15.34 ns/op BenchmarkLastIndexAnyASCII/16:4-8 75010322 15.37 ns/op BenchmarkLastIndexAnyASCII/16:4-8 77648823 15.43 ns/op BenchmarkLastIndexAnyASCII/16:4-8 75388186 15.32 ns/op BenchmarkLastIndexAnyASCII/16:4-8 78135417 15.44 ns/op BenchmarkLastIndexAnyASCII/16:4-8 76493720 15.49 ns/op BenchmarkLastIndexAnyASCII/16:4-8 75732813 15.40 ns/op BenchmarkLastIndexAnyASCII/16:4-8 78463034 15.32 ns/op BenchmarkLastIndexAnyASCII/16:4-8 76688547 15.38 ns/op BenchmarkLastIndexAnyASCII/16:8-8 60898190 19.63 ns/op BenchmarkLastIndexAnyASCII/16:8-8 61935055 19.50 ns/op BenchmarkLastIndexAnyASCII/16:8-8 60011767 19.64 ns/op BenchmarkLastIndexAnyASCII/16:8-8 60090152 19.44 ns/op BenchmarkLastIndexAnyASCII/16:8-8 59886156 19.46 ns/op BenchmarkLastIndexAnyASCII/16:8-8 61018635 19.52 ns/op BenchmarkLastIndexAnyASCII/16:8-8 61386128 19.42 ns/op BenchmarkLastIndexAnyASCII/16:8-8 61117483 19.41 ns/op BenchmarkLastIndexAnyASCII/16:8-8 60774999 19.41 ns/op BenchmarkLastIndexAnyASCII/16:8-8 58773142 19.51 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46533534 25.71 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46073408 25.64 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46335445 25.65 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46698588 25.68 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46416362 25.63 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46122340 25.57 ns/op BenchmarkLastIndexAnyASCII/16:16-8 45489499 25.56 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46559298 25.67 ns/op BenchmarkLastIndexAnyASCII/16:16-8 44952838 25.50 ns/op BenchmarkLastIndexAnyASCII/16:16-8 46793856 25.56 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27468625 43.44 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27388809 43.55 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27646621 43.58 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27355300 43.40 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27130922 43.54 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26954052 43.46 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27386768 43.53 ns/op BenchmarkLastIndexAnyASCII/16:32-8 26614731 43.83 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27360079 43.57 ns/op BenchmarkLastIndexAnyASCII/16:32-8 27251343 43.65 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16790611 70.32 ns/op BenchmarkLastIndexAnyASCII/16:64-8 17286271 70.03 ns/op BenchmarkLastIndexAnyASCII/16:64-8 17092548 69.81 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16905405 69.99 ns/op BenchmarkLastIndexAnyASCII/16:64-8 17206837 70.27 ns/op BenchmarkLastIndexAnyASCII/16:64-8 16879472 70.25 ns/op BenchmarkLastIndexAnyASCII/16:64-8 17021475 70.50 ns/op BenchmarkLastIndexAnyASCII/16:64-8 17058819 69.97 ns/op BenchmarkLastIndexAnyASCII/16:64-8 17278333 70.47 ns/op BenchmarkLastIndexAnyASCII/16:64-8 17014573 70.18 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9169006 129.5 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9320541 129.3 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9193845 129.0 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9247729 128.8 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9243451 128.6 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9152919 129.2 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9222726 129.5 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9302408 129.0 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9213259 129.5 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9278872 129.4 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9216584 129.7 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9246903 130.1 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9203780 130.0 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9201874 130.6 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9169923 134.2 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9123337 129.9 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9289969 129.8 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9192739 129.8 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9170376 129.4 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9284701 129.6 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9088885 132.1 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8989671 132.4 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9020694 132.4 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9114897 132.1 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9048505 132.1 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9081535 131.6 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9080374 132.5 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9065910 131.7 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9052938 131.7 ns/op BenchmarkLastIndexAnyASCII/256:4-8 9111021 131.7 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8741462 135.8 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8777766 136.6 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8847369 136.6 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8699698 136.3 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8788336 135.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8875148 136.5 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8778948 135.5 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8869797 135.8 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8810821 136.2 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8754553 136.9 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8430426 141.4 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8505645 141.1 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8467298 140.9 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8562270 140.3 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8524218 142.5 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8478784 140.7 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8493640 141.4 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8567427 141.1 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8501856 141.2 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8487765 141.0 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7435974 158.6 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7478786 158.5 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7597981 158.6 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7527694 158.5 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7564556 158.3 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7569223 158.0 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7396783 157.9 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7579999 158.6 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7612597 158.7 ns/op BenchmarkLastIndexAnyASCII/256:32-8 7410524 158.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6446034 186.7 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6420070 186.2 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6446778 185.4 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6491779 185.4 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6356160 186.0 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6477818 185.4 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6518622 186.5 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6436556 185.4 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6479835 184.7 ns/op BenchmarkLastIndexAnyASCII/256:64-8 6456238 186.9 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 260855647 4.621 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 254935854 4.608 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 262175215 4.576 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 262370396 4.586 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 257119117 4.599 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 260730806 4.601 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 260882220 4.641 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 260258175 4.605 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 261436706 4.604 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 260624971 4.580 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 257628358 4.623 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 262009148 4.573 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 257761903 4.599 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 257896300 4.597 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 263002797 4.622 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 257120114 4.625 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 259480989 4.591 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 260336113 4.614 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 258052538 4.602 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 260331955 4.602 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 262409878 4.645 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 262665050 4.611 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 260609342 4.570 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 260518672 4.623 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 262419184 4.567 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 258708204 4.599 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 262106013 4.610 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 260004572 4.594 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 260717803 4.607 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 261439998 4.618 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 263430332 4.587 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 261130576 4.598 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 260448994 4.578 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 262125590 4.594 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 259601620 4.595 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 260262306 4.617 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 261954800 4.614 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 261766188 4.605 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 260613169 4.628 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 262760602 4.604 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 258180975 4.611 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 260222944 4.628 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 258756769 4.613 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 257653249 4.646 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 260347287 4.612 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 258707677 4.608 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 258974493 4.616 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 259330106 4.612 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 256881051 4.617 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 260327650 4.629 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 234390937 5.087 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 235885852 5.084 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 233243306 5.097 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 235821277 5.100 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 236836264 5.106 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 235739026 5.117 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 234779659 5.097 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 235454391 5.092 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 235389865 5.082 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 234957301 5.081 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 223613688 5.342 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 224698452 5.326 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 225314191 5.328 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 223873681 5.324 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 225603110 5.360 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 224308120 5.345 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 223182116 5.340 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 224264659 5.306 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 224938729 5.356 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 225962384 5.345 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 40229517 30.10 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 39717938 29.80 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 40472182 29.92 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 38944792 29.77 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 40231504 29.87 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 40586193 29.92 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 39035605 29.78 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 39094917 30.31 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 39870044 29.86 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 39449608 29.89 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 13774414 83.50 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14494741 82.74 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14344909 83.07 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14647618 82.98 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14423638 82.61 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14454002 82.94 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14496147 82.67 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14527737 83.32 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14495892 83.30 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 14442226 82.93 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14346037 82.59 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14363619 82.85 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14423166 82.67 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14442966 82.51 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 13872922 83.07 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14444007 82.67 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14519779 82.82 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14573650 82.93 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14233843 82.96 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 14444253 82.96 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14411569 82.56 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14645334 82.92 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14437113 83.05 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14391897 82.63 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14426307 83.38 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14399310 82.95 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14418106 82.71 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14342065 82.75 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14524298 82.70 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 14180220 82.68 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14491201 81.51 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14125359 81.57 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14852799 81.15 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14550150 81.30 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14680812 82.18 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14842840 81.30 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14610220 81.34 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14711662 81.49 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14800976 80.93 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 14782663 81.39 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13580504 87.40 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 11886003 87.15 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13771492 87.09 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13733089 87.19 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13504582 88.02 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13678299 87.31 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13754512 87.03 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13732522 87.90 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13534646 87.35 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 13683782 87.32 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12937198 93.34 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12339015 93.77 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12807937 93.50 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12774679 93.61 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12965358 93.53 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12853963 93.53 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12777007 93.58 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12904220 93.13 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12638210 93.20 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 12856525 92.91 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2730679 441.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2721754 442.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2725143 439.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2729618 440.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2746952 439.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2712451 438.0 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2736950 441.3 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2729856 437.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2726869 439.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2736944 438.6 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1165 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1170 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1159 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1167 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 976742 1163 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1169 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1158 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 1000000 1159 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1166 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 925399 1158 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1165 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1157 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1174 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 977900 1166 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1164 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1162 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1156 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 996711 1171 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1168 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1157 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 1000000 1163 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 955371 1164 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1172 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1176 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1166 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1166 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 997796 1170 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1159 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1159 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 1000000 1160 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 889466 1269 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 942865 1269 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 908264 1267 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 936332 1267 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 937747 1266 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 930339 1270 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 932209 1270 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 943184 1276 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 942727 1270 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 941566 1268 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 869385 1355 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 878955 1364 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 874276 1361 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 869792 1357 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 887914 1358 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 870924 1361 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 873522 1360 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 876054 1365 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 871122 1360 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 872164 1361 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239940 4988 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 237580 4999 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239918 4974 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 242148 4987 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 239085 4986 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 237531 5025 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 240687 5009 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 242422 4954 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 240378 4969 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 238248 4996 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 239078 5005 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 238346 4990 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241287 4980 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 236406 5028 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241548 4993 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241513 4985 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241197 4996 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 237400 5022 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241194 5017 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 241762 4988 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19885 60758 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19839 60278 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19917 60272 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19941 59938 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19844 60185 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19803 60189 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19777 59973 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 19701 60230 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 20150 60349 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 18934 60728 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 39196 31035 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 41169 30083 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 41055 29266 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 38881 29834 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 40176 29403 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 37694 30363 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 39486 30037 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 37498 29395 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 40083 29727 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 40890 30064 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 82101 15547 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 73588 16636 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 68096 14842 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 81746 14972 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 80304 16331 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 81166 15545 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 77994 15295 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 79513 14680 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 74239 16202 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 67934 15136 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 125505 9470 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 131054 8910 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 136792 9642 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 141236 9429 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 124087 9151 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 145107 9185 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 117319 8677 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 106958 9706 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 134487 9458 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 136555 9239 ns/op BenchmarkIndexByte_Bytes/10-8 359333658 3.325 ns/op 3007.60 MB/s BenchmarkIndexByte_Bytes/10-8 361895967 3.310 ns/op 3020.81 MB/s BenchmarkIndexByte_Bytes/10-8 358214613 3.314 ns/op 3017.44 MB/s BenchmarkIndexByte_Bytes/10-8 358638392 3.300 ns/op 3029.98 MB/s BenchmarkIndexByte_Bytes/10-8 360356082 3.316 ns/op 3015.74 MB/s BenchmarkIndexByte_Bytes/10-8 361002726 3.325 ns/op 3007.77 MB/s BenchmarkIndexByte_Bytes/10-8 362428142 3.331 ns/op 3001.87 MB/s BenchmarkIndexByte_Bytes/10-8 361530376 3.312 ns/op 3018.97 MB/s BenchmarkIndexByte_Bytes/10-8 364352397 3.325 ns/op 3007.18 MB/s BenchmarkIndexByte_Bytes/10-8 363626130 3.311 ns/op 3020.42 MB/s BenchmarkIndexByte_Bytes/32-8 302637279 3.991 ns/op 8017.76 MB/s BenchmarkIndexByte_Bytes/32-8 300488344 3.965 ns/op 8069.67 MB/s BenchmarkIndexByte_Bytes/32-8 301221831 3.962 ns/op 8077.39 MB/s BenchmarkIndexByte_Bytes/32-8 300711699 3.974 ns/op 8052.80 MB/s BenchmarkIndexByte_Bytes/32-8 303476288 3.969 ns/op 8062.36 MB/s BenchmarkIndexByte_Bytes/32-8 301661079 3.974 ns/op 8053.15 MB/s BenchmarkIndexByte_Bytes/32-8 301704286 3.994 ns/op 8011.92 MB/s BenchmarkIndexByte_Bytes/32-8 300871172 3.951 ns/op 8099.42 MB/s BenchmarkIndexByte_Bytes/32-8 300979392 3.972 ns/op 8055.72 MB/s BenchmarkIndexByte_Bytes/32-8 303794331 3.990 ns/op 8020.68 MB/s BenchmarkIndexByte_Bytes/4K-8 19085134 60.50 ns/op 67707.59 MB/s BenchmarkIndexByte_Bytes/4K-8 19762285 60.48 ns/op 67730.13 MB/s BenchmarkIndexByte_Bytes/4K-8 20065644 60.61 ns/op 67576.76 MB/s BenchmarkIndexByte_Bytes/4K-8 19624789 60.57 ns/op 67627.95 MB/s BenchmarkIndexByte_Bytes/4K-8 19874023 60.66 ns/op 67529.11 MB/s BenchmarkIndexByte_Bytes/4K-8 19410958 60.65 ns/op 67538.49 MB/s BenchmarkIndexByte_Bytes/4K-8 19706559 60.54 ns/op 67659.73 MB/s BenchmarkIndexByte_Bytes/4K-8 19739946 60.78 ns/op 67386.65 MB/s BenchmarkIndexByte_Bytes/4K-8 19758471 60.44 ns/op 67772.39 MB/s BenchmarkIndexByte_Bytes/4K-8 19695736 60.52 ns/op 67678.41 MB/s BenchmarkIndexByte_Bytes/4M-8 13137 89090 ns/op 47079.49 MB/s BenchmarkIndexByte_Bytes/4M-8 13420 91116 ns/op 46032.74 MB/s BenchmarkIndexByte_Bytes/4M-8 13882 90801 ns/op 46192.27 MB/s BenchmarkIndexByte_Bytes/4M-8 13225 90886 ns/op 46149.18 MB/s BenchmarkIndexByte_Bytes/4M-8 13153 90598 ns/op 46295.58 MB/s BenchmarkIndexByte_Bytes/4M-8 13143 89720 ns/op 46748.97 MB/s BenchmarkIndexByte_Bytes/4M-8 13239 92161 ns/op 45510.45 MB/s BenchmarkIndexByte_Bytes/4M-8 13118 88906 ns/op 47176.81 MB/s BenchmarkIndexByte_Bytes/4M-8 13200 89987 ns/op 46609.88 MB/s BenchmarkIndexByte_Bytes/4M-8 13206 92822 ns/op 45186.70 MB/s BenchmarkIndexByte_Bytes/64M-8 328 3483820 ns/op 19263.01 MB/s BenchmarkIndexByte_Bytes/64M-8 304 3351929 ns/op 20020.97 MB/s BenchmarkIndexByte_Bytes/64M-8 315 3571650 ns/op 18789.32 MB/s BenchmarkIndexByte_Bytes/64M-8 289 3557871 ns/op 18862.09 MB/s BenchmarkIndexByte_Bytes/64M-8 310 3633895 ns/op 18467.48 MB/s BenchmarkIndexByte_Bytes/64M-8 309 3506395 ns/op 19138.99 MB/s BenchmarkIndexByte_Bytes/64M-8 297 3506478 ns/op 19138.54 MB/s BenchmarkIndexByte_Bytes/64M-8 307 3467355 ns/op 19354.48 MB/s BenchmarkIndexByte_Bytes/64M-8 288 3485464 ns/op 19253.92 MB/s BenchmarkIndexByte_Bytes/64M-8 295 3606733 ns/op 18606.55 MB/s BenchmarkIndexRune_Bytes/10-8 98724300 12.01 ns/op 832.45 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 12.23 ns/op 817.54 MB/s BenchmarkIndexRune_Bytes/10-8 92021462 12.01 ns/op 832.44 MB/s BenchmarkIndexRune_Bytes/10-8 98078791 11.91 ns/op 839.55 MB/s BenchmarkIndexRune_Bytes/10-8 99649862 11.91 ns/op 839.48 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 12.01 ns/op 832.98 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 12.05 ns/op 829.69 MB/s BenchmarkIndexRune_Bytes/10-8 97995093 12.08 ns/op 827.82 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 12.06 ns/op 828.96 MB/s BenchmarkIndexRune_Bytes/10-8 100000000 11.93 ns/op 838.01 MB/s BenchmarkIndexRune_Bytes/32-8 99945529 11.81 ns/op 2709.60 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.77 ns/op 2718.26 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.79 ns/op 2715.02 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.82 ns/op 2708.17 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.85 ns/op 2700.87 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.78 ns/op 2716.24 MB/s BenchmarkIndexRune_Bytes/32-8 96864636 11.76 ns/op 2721.56 MB/s BenchmarkIndexRune_Bytes/32-8 98455785 11.77 ns/op 2719.50 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.90 ns/op 2689.30 MB/s BenchmarkIndexRune_Bytes/32-8 100000000 11.76 ns/op 2721.88 MB/s BenchmarkIndexRune_Bytes/4K-8 14775292 81.17 ns/op 50464.54 MB/s BenchmarkIndexRune_Bytes/4K-8 14116321 81.60 ns/op 50194.04 MB/s BenchmarkIndexRune_Bytes/4K-8 14854675 81.32 ns/op 50370.32 MB/s BenchmarkIndexRune_Bytes/4K-8 14555583 81.32 ns/op 50366.88 MB/s BenchmarkIndexRune_Bytes/4K-8 14799936 80.98 ns/op 50583.48 MB/s BenchmarkIndexRune_Bytes/4K-8 14810581 81.57 ns/op 50212.47 MB/s BenchmarkIndexRune_Bytes/4K-8 14735572 81.76 ns/op 50097.53 MB/s BenchmarkIndexRune_Bytes/4K-8 14814452 81.00 ns/op 50570.99 MB/s BenchmarkIndexRune_Bytes/4K-8 14874708 80.62 ns/op 50804.80 MB/s BenchmarkIndexRune_Bytes/4K-8 14801302 81.00 ns/op 50566.53 MB/s BenchmarkIndexRune_Bytes/4M-8 12066 102449 ns/op 40940.60 MB/s BenchmarkIndexRune_Bytes/4M-8 12002 101663 ns/op 41256.98 MB/s BenchmarkIndexRune_Bytes/4M-8 12099 102752 ns/op 40819.72 MB/s BenchmarkIndexRune_Bytes/4M-8 12108 100341 ns/op 41800.64 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100608 ns/op 41689.43 MB/s BenchmarkIndexRune_Bytes/4M-8 12224 100440 ns/op 41759.42 MB/s BenchmarkIndexRune_Bytes/4M-8 12284 99512 ns/op 42148.72 MB/s BenchmarkIndexRune_Bytes/4M-8 12231 99603 ns/op 42110.41 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100793 ns/op 41612.89 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100910 ns/op 41564.96 MB/s BenchmarkIndexRune_Bytes/64M-8 320 3575345 ns/op 18769.90 MB/s BenchmarkIndexRune_Bytes/64M-8 286 3717006 ns/op 18054.55 MB/s BenchmarkIndexRune_Bytes/64M-8 328 3638018 ns/op 18446.54 MB/s BenchmarkIndexRune_Bytes/64M-8 302 3689547 ns/op 18188.92 MB/s BenchmarkIndexRune_Bytes/64M-8 285 3626349 ns/op 18505.90 MB/s BenchmarkIndexRune_Bytes/64M-8 282 3615883 ns/op 18559.47 MB/s BenchmarkIndexRune_Bytes/64M-8 318 3531832 ns/op 19001.15 MB/s BenchmarkIndexRune_Bytes/64M-8 279 3708728 ns/op 18094.85 MB/s BenchmarkIndexRune_Bytes/64M-8 289 3805051 ns/op 17636.78 MB/s BenchmarkIndexRune_Bytes/64M-8 298 3704147 ns/op 18117.22 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 367728465 3.251 ns/op 3076.13 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 361013571 3.276 ns/op 3052.19 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 368847470 3.252 ns/op 3075.12 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 364649592 3.269 ns/op 3059.18 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 368514912 3.254 ns/op 3073.35 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 366399015 3.267 ns/op 3061.31 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 369356274 3.263 ns/op 3065.01 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 369628909 3.263 ns/op 3064.29 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 365615770 3.253 ns/op 3073.94 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 369931294 3.252 ns/op 3075.44 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 293263214 4.070 ns/op 7862.27 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 298335062 4.060 ns/op 7880.88 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 293145861 4.055 ns/op 7891.50 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 291669778 4.130 ns/op 7749.12 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 295778320 4.058 ns/op 7886.42 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 294146040 4.056 ns/op 7890.51 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 297423151 4.044 ns/op 7912.94 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 293799499 4.063 ns/op 7875.06 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 295232821 4.071 ns/op 7860.79 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 294507548 4.055 ns/op 7891.12 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19459438 61.11 ns/op 67026.30 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19166635 61.11 ns/op 67028.80 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19706820 60.58 ns/op 67610.29 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19774746 60.98 ns/op 67165.80 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19879110 60.78 ns/op 67388.65 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19459209 60.69 ns/op 67490.94 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19644123 60.85 ns/op 67314.89 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19606806 60.99 ns/op 67161.59 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19871080 61.09 ns/op 67043.33 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 19374093 60.85 ns/op 67315.06 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13928 90792 ns/op 46196.82 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13596 91974 ns/op 45603.06 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13377 90338 ns/op 46428.84 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12967 88557 ns/op 47362.76 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13038 89088 ns/op 47080.44 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13902 89228 ns/op 47006.76 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13371 90284 ns/op 46456.98 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13662 88172 ns/op 47569.55 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13712 88533 ns/op 47375.82 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 13436 89344 ns/op 46945.61 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 322 3583773 ns/op 18725.76 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 295 3643025 ns/op 18421.19 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 307 3394756 ns/op 19768.39 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 304 3479924 ns/op 19284.58 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 298 3611587 ns/op 18581.55 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 351 3452283 ns/op 19438.98 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 303 3716874 ns/op 18055.19 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 290 3526784 ns/op 19028.34 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 296 3442406 ns/op 19494.76 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 286 3613787 ns/op 18570.23 MB/s BenchmarkIndexNonASCII_Bytes/10-8 333589720 3.564 ns/op 2805.88 MB/s BenchmarkIndexNonASCII_Bytes/10-8 334368531 3.587 ns/op 2788.16 MB/s BenchmarkIndexNonASCII_Bytes/10-8 333199066 3.569 ns/op 2801.78 MB/s BenchmarkIndexNonASCII_Bytes/10-8 335435422 3.556 ns/op 2811.99 MB/s BenchmarkIndexNonASCII_Bytes/10-8 338351493 3.563 ns/op 2806.36 MB/s BenchmarkIndexNonASCII_Bytes/10-8 334216116 3.573 ns/op 2798.90 MB/s BenchmarkIndexNonASCII_Bytes/10-8 336578322 3.576 ns/op 2796.04 MB/s BenchmarkIndexNonASCII_Bytes/10-8 337069467 3.579 ns/op 2794.31 MB/s BenchmarkIndexNonASCII_Bytes/10-8 335426512 3.580 ns/op 2793.41 MB/s BenchmarkIndexNonASCII_Bytes/10-8 336170392 3.580 ns/op 2793.27 MB/s BenchmarkIndexNonASCII_Bytes/32-8 137329638 8.751 ns/op 3656.64 MB/s BenchmarkIndexNonASCII_Bytes/32-8 136926594 8.848 ns/op 3616.53 MB/s BenchmarkIndexNonASCII_Bytes/32-8 136308098 8.719 ns/op 3670.16 MB/s BenchmarkIndexNonASCII_Bytes/32-8 134172145 8.791 ns/op 3640.05 MB/s BenchmarkIndexNonASCII_Bytes/32-8 136814281 8.797 ns/op 3637.44 MB/s BenchmarkIndexNonASCII_Bytes/32-8 136827390 8.762 ns/op 3652.16 MB/s BenchmarkIndexNonASCII_Bytes/32-8 135491032 8.820 ns/op 3627.97 MB/s BenchmarkIndexNonASCII_Bytes/32-8 136585009 8.778 ns/op 3645.65 MB/s BenchmarkIndexNonASCII_Bytes/32-8 136896999 8.870 ns/op 3607.64 MB/s BenchmarkIndexNonASCII_Bytes/32-8 136715480 8.760 ns/op 3652.98 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1362591 881.5 ns/op 4646.40 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1370221 874.0 ns/op 4686.38 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1377715 873.1 ns/op 4691.30 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1368613 872.3 ns/op 4695.60 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1380738 875.3 ns/op 4679.68 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1374972 873.2 ns/op 4690.89 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1370091 869.9 ns/op 4708.35 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1373899 870.8 ns/op 4703.92 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1365498 868.5 ns/op 4715.95 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 1371648 875.6 ns/op 4677.86 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1324 894030 ns/op 4691.46 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1315 888959 ns/op 4718.22 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1312 888722 ns/op 4719.48 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1363 900802 ns/op 4656.19 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1302 889233 ns/op 4716.76 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1328 895454 ns/op 4684.00 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1364 884672 ns/op 4741.09 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1308 877005 ns/op 4782.53 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1350 902707 ns/op 4646.36 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 1308 891215 ns/op 4706.28 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 76 14884468 ns/op 4508.65 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15324948 ns/op 4379.06 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 78 14912693 ns/op 4500.12 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 72 14862275 ns/op 4515.38 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15398782 ns/op 4358.06 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 15211303 ns/op 4411.78 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 73 15040911 ns/op 4461.76 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 75 15025696 ns/op 4466.27 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 79 14681099 ns/op 4571.11 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 76 15154000 ns/op 4428.46 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2065.591s strcase-0.0.5/internal/benchtest/results/i9-9900K/g1.22rc2/strcase.10.1706899847.07e88bec.txt 0000664 0000000 0000000 00000276737 14720254634 0027665 0 ustar 00root root 0000000 0000000 goos: linux goarch: amd64 pkg: github.com/charlievieth/strcase/internal/benchtest cpu: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz BenchmarkIndexRune-8 92339626 12.74 ns/op BenchmarkIndexRune-8 92968216 12.87 ns/op BenchmarkIndexRune-8 95885022 12.84 ns/op BenchmarkIndexRune-8 91621132 12.75 ns/op BenchmarkIndexRune-8 94471503 12.81 ns/op BenchmarkIndexRune-8 86134022 12.78 ns/op BenchmarkIndexRune-8 96534025 12.71 ns/op BenchmarkIndexRune-8 91255273 12.73 ns/op BenchmarkIndexRune-8 94120628 12.78 ns/op BenchmarkIndexRune-8 93626910 12.80 ns/op BenchmarkIndexRuneLongString-8 84662923 13.70 ns/op BenchmarkIndexRuneLongString-8 87151690 13.69 ns/op BenchmarkIndexRuneLongString-8 86201502 13.72 ns/op BenchmarkIndexRuneLongString-8 86141547 13.73 ns/op BenchmarkIndexRuneLongString-8 87452306 13.71 ns/op BenchmarkIndexRuneLongString-8 84230942 13.69 ns/op BenchmarkIndexRuneLongString-8 86051959 13.61 ns/op BenchmarkIndexRuneLongString-8 88798287 13.69 ns/op BenchmarkIndexRuneLongString-8 86892240 13.75 ns/op BenchmarkIndexRuneLongString-8 87106053 13.67 ns/op BenchmarkIndexRuneFastPath-8 207387597 5.798 ns/op BenchmarkIndexRuneFastPath-8 206536719 5.819 ns/op BenchmarkIndexRuneFastPath-8 206219695 5.814 ns/op BenchmarkIndexRuneFastPath-8 206955463 5.819 ns/op BenchmarkIndexRuneFastPath-8 208504672 5.858 ns/op BenchmarkIndexRuneFastPath-8 206863324 5.795 ns/op BenchmarkIndexRuneFastPath-8 206170946 5.791 ns/op BenchmarkIndexRuneFastPath-8 206379218 5.788 ns/op BenchmarkIndexRuneFastPath-8 206908087 5.810 ns/op BenchmarkIndexRuneFastPath-8 206694483 5.788 ns/op BenchmarkIndex-8 190092750 6.299 ns/op BenchmarkIndex-8 189082520 6.309 ns/op BenchmarkIndex-8 189354788 6.329 ns/op BenchmarkIndex-8 190612266 6.289 ns/op BenchmarkIndex-8 190352238 6.304 ns/op BenchmarkIndex-8 192130047 6.283 ns/op BenchmarkIndex-8 190781587 6.309 ns/op BenchmarkIndex-8 191284664 6.300 ns/op BenchmarkIndex-8 190628089 6.249 ns/op BenchmarkIndex-8 189497414 6.266 ns/op BenchmarkLastIndex-8 212681913 5.665 ns/op BenchmarkLastIndex-8 211614835 5.646 ns/op BenchmarkLastIndex-8 212030163 5.686 ns/op BenchmarkLastIndex-8 212001824 5.638 ns/op BenchmarkLastIndex-8 211931678 5.670 ns/op BenchmarkLastIndex-8 212958147 5.679 ns/op BenchmarkLastIndex-8 210724234 5.649 ns/op BenchmarkLastIndex-8 209845425 5.640 ns/op BenchmarkLastIndex-8 211613560 5.651 ns/op BenchmarkLastIndex-8 212981275 5.634 ns/op BenchmarkIndexByte-8 260076559 4.595 ns/op BenchmarkIndexByte-8 260080734 4.577 ns/op BenchmarkIndexByte-8 262760966 4.581 ns/op BenchmarkIndexByte-8 261365535 4.582 ns/op BenchmarkIndexByte-8 259555250 4.597 ns/op BenchmarkIndexByte-8 262682881 4.585 ns/op BenchmarkIndexByte-8 261504771 4.588 ns/op BenchmarkIndexByte-8 261019970 4.601 ns/op BenchmarkIndexByte-8 261469652 4.605 ns/op BenchmarkIndexByte-8 260975334 4.595 ns/op BenchmarkEqualFold/ASCII-8 135305797 8.853 ns/op BenchmarkEqualFold/ASCII-8 135465481 8.853 ns/op BenchmarkEqualFold/ASCII-8 135562087 8.974 ns/op BenchmarkEqualFold/ASCII-8 136213315 8.820 ns/op BenchmarkEqualFold/ASCII-8 135386659 8.853 ns/op BenchmarkEqualFold/ASCII-8 135399820 8.899 ns/op BenchmarkEqualFold/ASCII-8 135444676 8.823 ns/op BenchmarkEqualFold/ASCII-8 134787236 8.821 ns/op BenchmarkEqualFold/ASCII-8 135680220 8.856 ns/op BenchmarkEqualFold/ASCII-8 135682500 8.870 ns/op BenchmarkEqualFold/UnicodePrefix-8 32040829 37.48 ns/op BenchmarkEqualFold/UnicodePrefix-8 31963114 37.34 ns/op BenchmarkEqualFold/UnicodePrefix-8 31355562 37.35 ns/op BenchmarkEqualFold/UnicodePrefix-8 31878394 37.36 ns/op BenchmarkEqualFold/UnicodePrefix-8 31925716 37.18 ns/op BenchmarkEqualFold/UnicodePrefix-8 32248299 37.40 ns/op BenchmarkEqualFold/UnicodePrefix-8 32134886 37.41 ns/op BenchmarkEqualFold/UnicodePrefix-8 31955377 37.36 ns/op BenchmarkEqualFold/UnicodePrefix-8 32136666 37.19 ns/op BenchmarkEqualFold/UnicodePrefix-8 32467695 37.31 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41625232 28.41 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42200398 28.41 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41428485 28.35 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42038552 28.45 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41735266 28.40 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41820108 28.38 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42345487 28.37 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42240144 28.47 ns/op BenchmarkEqualFold/UnicodeSuffix-8 42722360 28.36 ns/op BenchmarkEqualFold/UnicodeSuffix-8 41239950 28.31 ns/op BenchmarkIndexHard1-8 15202 78176 ns/op BenchmarkIndexHard1-8 15216 78901 ns/op BenchmarkIndexHard1-8 15218 78867 ns/op BenchmarkIndexHard1-8 15138 78434 ns/op BenchmarkIndexHard1-8 15190 78857 ns/op BenchmarkIndexHard1-8 15181 78479 ns/op BenchmarkIndexHard1-8 15214 78658 ns/op BenchmarkIndexHard1-8 15205 78593 ns/op BenchmarkIndexHard1-8 15199 78702 ns/op BenchmarkIndexHard1-8 15165 78579 ns/op BenchmarkIndexHard2-8 550 2163376 ns/op BenchmarkIndexHard2-8 543 2168748 ns/op BenchmarkIndexHard2-8 553 2159718 ns/op BenchmarkIndexHard2-8 544 2162530 ns/op BenchmarkIndexHard2-8 547 2178147 ns/op BenchmarkIndexHard2-8 549 2181851 ns/op BenchmarkIndexHard2-8 548 2159058 ns/op BenchmarkIndexHard2-8 547 2167324 ns/op BenchmarkIndexHard2-8 550 2163517 ns/op BenchmarkIndexHard2-8 547 2157925 ns/op BenchmarkIndexHard3-8 583 2021317 ns/op BenchmarkIndexHard3-8 574 2022103 ns/op BenchmarkIndexHard3-8 588 2022010 ns/op BenchmarkIndexHard3-8 584 2021584 ns/op BenchmarkIndexHard3-8 583 2021881 ns/op BenchmarkIndexHard3-8 585 2016951 ns/op BenchmarkIndexHard3-8 585 2018600 ns/op BenchmarkIndexHard3-8 582 2023785 ns/op BenchmarkIndexHard3-8 577 2020279 ns/op BenchmarkIndexHard3-8 584 2032465 ns/op BenchmarkIndexHard4-8 680 1735511 ns/op BenchmarkIndexHard4-8 684 1732966 ns/op BenchmarkIndexHard4-8 680 1733226 ns/op BenchmarkIndexHard4-8 693 1731414 ns/op BenchmarkIndexHard4-8 685 1729685 ns/op BenchmarkIndexHard4-8 684 1728243 ns/op BenchmarkIndexHard4-8 679 1722522 ns/op BenchmarkIndexHard4-8 688 1726321 ns/op BenchmarkIndexHard4-8 687 1719242 ns/op BenchmarkIndexHard4-8 680 1729465 ns/op BenchmarkLastIndexHard1-8 717 1624370 ns/op BenchmarkLastIndexHard1-8 727 1631712 ns/op BenchmarkLastIndexHard1-8 718 1624456 ns/op BenchmarkLastIndexHard1-8 723 1622236 ns/op BenchmarkLastIndexHard1-8 733 1620384 ns/op BenchmarkLastIndexHard1-8 721 1634470 ns/op BenchmarkLastIndexHard1-8 728 1624881 ns/op BenchmarkLastIndexHard1-8 735 1630347 ns/op BenchmarkLastIndexHard1-8 720 1624314 ns/op BenchmarkLastIndexHard1-8 720 1631940 ns/op BenchmarkLastIndexHard2-8 732 1627402 ns/op BenchmarkLastIndexHard2-8 727 1625096 ns/op BenchmarkLastIndexHard2-8 726 1628065 ns/op BenchmarkLastIndexHard2-8 716 1651862 ns/op BenchmarkLastIndexHard2-8 715 1638262 ns/op BenchmarkLastIndexHard2-8 726 1621160 ns/op BenchmarkLastIndexHard2-8 679 1644919 ns/op BenchmarkLastIndexHard2-8 724 1628568 ns/op BenchmarkLastIndexHard2-8 721 1677268 ns/op BenchmarkLastIndexHard2-8 720 1620780 ns/op BenchmarkLastIndexHard3-8 722 1628324 ns/op BenchmarkLastIndexHard3-8 723 1624377 ns/op BenchmarkLastIndexHard3-8 726 1627754 ns/op BenchmarkLastIndexHard3-8 723 1629151 ns/op BenchmarkLastIndexHard3-8 733 1634766 ns/op BenchmarkLastIndexHard3-8 708 1642211 ns/op BenchmarkLastIndexHard3-8 723 1629813 ns/op BenchmarkLastIndexHard3-8 732 1625786 ns/op BenchmarkLastIndexHard3-8 716 1638157 ns/op BenchmarkLastIndexHard3-8 723 1630275 ns/op BenchmarkCountHard1-8 15088 78634 ns/op BenchmarkCountHard1-8 15082 78792 ns/op BenchmarkCountHard1-8 15219 78635 ns/op BenchmarkCountHard1-8 15112 78875 ns/op BenchmarkCountHard1-8 15182 78754 ns/op BenchmarkCountHard1-8 15147 78680 ns/op BenchmarkCountHard1-8 15135 78698 ns/op BenchmarkCountHard1-8 15166 78386 ns/op BenchmarkCountHard1-8 15058 78659 ns/op BenchmarkCountHard1-8 15144 78713 ns/op BenchmarkCountHard2-8 547 2168271 ns/op BenchmarkCountHard2-8 536 2168954 ns/op BenchmarkCountHard2-8 547 2167929 ns/op BenchmarkCountHard2-8 544 2154068 ns/op BenchmarkCountHard2-8 546 2165111 ns/op BenchmarkCountHard2-8 543 2176871 ns/op BenchmarkCountHard2-8 541 2155205 ns/op BenchmarkCountHard2-8 552 2174387 ns/op BenchmarkCountHard2-8 554 2169185 ns/op BenchmarkCountHard2-8 541 2173129 ns/op BenchmarkCountHard3-8 584 2012876 ns/op BenchmarkCountHard3-8 572 2025207 ns/op BenchmarkCountHard3-8 588 2014972 ns/op BenchmarkCountHard3-8 582 2034442 ns/op BenchmarkCountHard3-8 565 2019592 ns/op BenchmarkCountHard3-8 590 2030328 ns/op BenchmarkCountHard3-8 582 2030765 ns/op BenchmarkCountHard3-8 589 2032641 ns/op BenchmarkCountHard3-8 591 2028802 ns/op BenchmarkCountHard3-8 579 2016053 ns/op BenchmarkIndexTorture-8 75315 15980 ns/op BenchmarkIndexTorture-8 75476 15999 ns/op BenchmarkIndexTorture-8 75310 15924 ns/op BenchmarkIndexTorture-8 75679 16019 ns/op BenchmarkIndexTorture-8 74458 15969 ns/op BenchmarkIndexTorture-8 75676 15873 ns/op BenchmarkIndexTorture-8 74595 15948 ns/op BenchmarkIndexTorture-8 73045 15968 ns/op BenchmarkIndexTorture-8 66262 15949 ns/op BenchmarkIndexTorture-8 73812 15993 ns/op BenchmarkCountTorture-8 66314 17935 ns/op BenchmarkCountTorture-8 67243 17922 ns/op BenchmarkCountTorture-8 66823 17867 ns/op BenchmarkCountTorture-8 65871 17934 ns/op BenchmarkCountTorture-8 66804 17928 ns/op BenchmarkCountTorture-8 65700 18014 ns/op BenchmarkCountTorture-8 66114 18011 ns/op BenchmarkCountTorture-8 66952 17962 ns/op BenchmarkCountTorture-8 66362 17955 ns/op BenchmarkCountTorture-8 66824 17916 ns/op BenchmarkCountTortureOverlapping-8 320 3587922 ns/op BenchmarkCountTortureOverlapping-8 332 3560051 ns/op BenchmarkCountTortureOverlapping-8 330 3575265 ns/op BenchmarkCountTortureOverlapping-8 331 3591981 ns/op BenchmarkCountTortureOverlapping-8 326 3592682 ns/op BenchmarkCountTortureOverlapping-8 326 3566392 ns/op BenchmarkCountTortureOverlapping-8 330 3568769 ns/op BenchmarkCountTortureOverlapping-8 330 3583439 ns/op BenchmarkCountTortureOverlapping-8 330 3578240 ns/op BenchmarkCountTortureOverlapping-8 333 3554826 ns/op BenchmarkCountByte/10-8 241160464 4.882 ns/op 2048.45 MB/s BenchmarkCountByte/10-8 244225251 4.914 ns/op 2034.81 MB/s BenchmarkCountByte/10-8 245241066 4.937 ns/op 2025.46 MB/s BenchmarkCountByte/10-8 245762851 4.897 ns/op 2041.89 MB/s BenchmarkCountByte/10-8 243913036 4.952 ns/op 2019.26 MB/s BenchmarkCountByte/10-8 243077168 4.909 ns/op 2037.25 MB/s BenchmarkCountByte/10-8 247060461 4.923 ns/op 2031.13 MB/s BenchmarkCountByte/10-8 245497272 4.921 ns/op 2032.26 MB/s BenchmarkCountByte/10-8 243878415 4.901 ns/op 2040.20 MB/s BenchmarkCountByte/10-8 247046539 4.917 ns/op 2033.82 MB/s BenchmarkCountByte/32-8 224219959 5.349 ns/op 5982.77 MB/s BenchmarkCountByte/32-8 222449958 5.340 ns/op 5992.18 MB/s BenchmarkCountByte/32-8 222174394 5.344 ns/op 5988.40 MB/s BenchmarkCountByte/32-8 224506622 5.362 ns/op 5967.80 MB/s BenchmarkCountByte/32-8 225083546 5.325 ns/op 6009.46 MB/s BenchmarkCountByte/32-8 224532609 5.331 ns/op 6003.02 MB/s BenchmarkCountByte/32-8 224014789 5.353 ns/op 5977.55 MB/s BenchmarkCountByte/32-8 224922078 5.353 ns/op 5977.52 MB/s BenchmarkCountByte/32-8 221884765 5.331 ns/op 6002.30 MB/s BenchmarkCountByte/32-8 222689457 5.337 ns/op 5996.21 MB/s BenchmarkCountByte/4K-8 20800116 58.17 ns/op 70413.67 MB/s BenchmarkCountByte/4K-8 20321091 58.15 ns/op 70441.76 MB/s BenchmarkCountByte/4K-8 20484008 58.22 ns/op 70359.75 MB/s BenchmarkCountByte/4K-8 20453427 58.22 ns/op 70357.12 MB/s BenchmarkCountByte/4K-8 20595326 58.03 ns/op 70579.10 MB/s BenchmarkCountByte/4K-8 20938606 58.13 ns/op 70459.44 MB/s BenchmarkCountByte/4K-8 20610164 58.23 ns/op 70338.31 MB/s BenchmarkCountByte/4K-8 20807907 57.75 ns/op 70920.73 MB/s BenchmarkCountByte/4K-8 20911833 58.05 ns/op 70564.28 MB/s BenchmarkCountByte/4K-8 20576462 57.86 ns/op 70787.72 MB/s BenchmarkCountByte/4M-8 13686 87917 ns/op 47707.66 MB/s BenchmarkCountByte/4M-8 13711 88176 ns/op 47567.17 MB/s BenchmarkCountByte/4M-8 13353 88081 ns/op 47618.58 MB/s BenchmarkCountByte/4M-8 13923 91181 ns/op 45999.76 MB/s BenchmarkCountByte/4M-8 13204 91352 ns/op 45913.87 MB/s BenchmarkCountByte/4M-8 13602 90933 ns/op 46125.01 MB/s BenchmarkCountByte/4M-8 13454 92979 ns/op 45110.09 MB/s BenchmarkCountByte/4M-8 13111 91584 ns/op 45797.39 MB/s BenchmarkCountByte/4M-8 12962 87073 ns/op 48170.14 MB/s BenchmarkCountByte/4M-8 12902 87909 ns/op 47711.86 MB/s BenchmarkCountByte/64M-8 286 4003406 ns/op 16762.94 MB/s BenchmarkCountByte/64M-8 295 3821375 ns/op 17561.44 MB/s BenchmarkCountByte/64M-8 307 3931513 ns/op 17069.48 MB/s BenchmarkCountByte/64M-8 304 3811468 ns/op 17607.09 MB/s BenchmarkCountByte/64M-8 292 3900911 ns/op 17203.38 MB/s BenchmarkCountByte/64M-8 296 3894656 ns/op 17231.01 MB/s BenchmarkCountByte/64M-8 306 4019393 ns/op 16696.27 MB/s BenchmarkCountByte/64M-8 294 3837622 ns/op 17487.09 MB/s BenchmarkCountByte/64M-8 308 4025174 ns/op 16672.29 MB/s BenchmarkCountByte/64M-8 308 3950015 ns/op 16989.52 MB/s BenchmarkIndexAnyASCII/1:1-8 203303299 5.872 ns/op BenchmarkIndexAnyASCII/1:1-8 205654363 5.893 ns/op BenchmarkIndexAnyASCII/1:1-8 203372868 5.853 ns/op BenchmarkIndexAnyASCII/1:1-8 204165450 5.911 ns/op BenchmarkIndexAnyASCII/1:1-8 203277510 5.891 ns/op BenchmarkIndexAnyASCII/1:1-8 203223361 5.849 ns/op BenchmarkIndexAnyASCII/1:1-8 204817450 5.874 ns/op BenchmarkIndexAnyASCII/1:1-8 205566512 5.868 ns/op BenchmarkIndexAnyASCII/1:1-8 204929820 5.900 ns/op BenchmarkIndexAnyASCII/1:1-8 203874643 5.849 ns/op BenchmarkIndexAnyASCII/1:2-8 165816267 7.207 ns/op BenchmarkIndexAnyASCII/1:2-8 167603479 7.212 ns/op BenchmarkIndexAnyASCII/1:2-8 168257526 7.193 ns/op BenchmarkIndexAnyASCII/1:2-8 167059794 7.179 ns/op BenchmarkIndexAnyASCII/1:2-8 167277628 7.189 ns/op BenchmarkIndexAnyASCII/1:2-8 166664649 7.183 ns/op BenchmarkIndexAnyASCII/1:2-8 166410308 7.169 ns/op BenchmarkIndexAnyASCII/1:2-8 166709064 7.160 ns/op BenchmarkIndexAnyASCII/1:2-8 165979372 7.206 ns/op BenchmarkIndexAnyASCII/1:2-8 167116296 7.185 ns/op BenchmarkIndexAnyASCII/1:4-8 166615357 7.175 ns/op BenchmarkIndexAnyASCII/1:4-8 166306142 7.165 ns/op BenchmarkIndexAnyASCII/1:4-8 167300706 7.171 ns/op BenchmarkIndexAnyASCII/1:4-8 165834891 7.171 ns/op BenchmarkIndexAnyASCII/1:4-8 167198500 7.157 ns/op BenchmarkIndexAnyASCII/1:4-8 166689433 7.156 ns/op BenchmarkIndexAnyASCII/1:4-8 167802314 7.172 ns/op BenchmarkIndexAnyASCII/1:4-8 167207204 7.169 ns/op BenchmarkIndexAnyASCII/1:4-8 167529117 7.161 ns/op BenchmarkIndexAnyASCII/1:4-8 166499596 7.175 ns/op BenchmarkIndexAnyASCII/1:8-8 167616181 7.185 ns/op BenchmarkIndexAnyASCII/1:8-8 166731390 7.175 ns/op BenchmarkIndexAnyASCII/1:8-8 167305512 7.125 ns/op BenchmarkIndexAnyASCII/1:8-8 167565852 7.201 ns/op BenchmarkIndexAnyASCII/1:8-8 164007543 7.194 ns/op BenchmarkIndexAnyASCII/1:8-8 167415000 7.200 ns/op BenchmarkIndexAnyASCII/1:8-8 168055882 7.165 ns/op BenchmarkIndexAnyASCII/1:8-8 166362931 7.143 ns/op BenchmarkIndexAnyASCII/1:8-8 167097940 7.222 ns/op BenchmarkIndexAnyASCII/1:8-8 166736308 7.154 ns/op BenchmarkIndexAnyASCII/1:16-8 162135199 7.363 ns/op BenchmarkIndexAnyASCII/1:16-8 162504028 7.383 ns/op BenchmarkIndexAnyASCII/1:16-8 161901450 7.337 ns/op BenchmarkIndexAnyASCII/1:16-8 161698384 7.343 ns/op BenchmarkIndexAnyASCII/1:16-8 162270182 7.373 ns/op BenchmarkIndexAnyASCII/1:16-8 162582552 7.368 ns/op BenchmarkIndexAnyASCII/1:16-8 161953040 7.418 ns/op BenchmarkIndexAnyASCII/1:16-8 162252632 7.388 ns/op BenchmarkIndexAnyASCII/1:16-8 162061410 7.383 ns/op BenchmarkIndexAnyASCII/1:16-8 162104253 7.382 ns/op BenchmarkIndexAnyASCII/1:32-8 151757756 7.905 ns/op BenchmarkIndexAnyASCII/1:32-8 151264009 7.879 ns/op BenchmarkIndexAnyASCII/1:32-8 152200351 7.952 ns/op BenchmarkIndexAnyASCII/1:32-8 152059449 7.890 ns/op BenchmarkIndexAnyASCII/1:32-8 151123054 7.879 ns/op BenchmarkIndexAnyASCII/1:32-8 151583685 7.883 ns/op BenchmarkIndexAnyASCII/1:32-8 151591488 7.951 ns/op BenchmarkIndexAnyASCII/1:32-8 151776513 7.903 ns/op BenchmarkIndexAnyASCII/1:32-8 151770111 7.905 ns/op BenchmarkIndexAnyASCII/1:32-8 150889078 7.897 ns/op BenchmarkIndexAnyASCII/1:64-8 139458874 8.559 ns/op BenchmarkIndexAnyASCII/1:64-8 140284548 8.601 ns/op BenchmarkIndexAnyASCII/1:64-8 140229608 8.602 ns/op BenchmarkIndexAnyASCII/1:64-8 139701940 8.574 ns/op BenchmarkIndexAnyASCII/1:64-8 139070640 8.563 ns/op BenchmarkIndexAnyASCII/1:64-8 140456415 8.595 ns/op BenchmarkIndexAnyASCII/1:64-8 139600746 8.599 ns/op BenchmarkIndexAnyASCII/1:64-8 139459034 8.563 ns/op BenchmarkIndexAnyASCII/1:64-8 140004796 8.585 ns/op BenchmarkIndexAnyASCII/1:64-8 140290612 8.605 ns/op BenchmarkIndexAnyASCII/16:1-8 194005924 6.132 ns/op BenchmarkIndexAnyASCII/16:1-8 195157990 6.140 ns/op BenchmarkIndexAnyASCII/16:1-8 195383242 6.158 ns/op BenchmarkIndexAnyASCII/16:1-8 194730355 6.106 ns/op BenchmarkIndexAnyASCII/16:1-8 195558013 6.170 ns/op BenchmarkIndexAnyASCII/16:1-8 193998469 6.109 ns/op BenchmarkIndexAnyASCII/16:1-8 195495352 6.153 ns/op BenchmarkIndexAnyASCII/16:1-8 196107163 6.170 ns/op BenchmarkIndexAnyASCII/16:1-8 194968594 6.178 ns/op BenchmarkIndexAnyASCII/16:1-8 194997643 6.150 ns/op BenchmarkIndexAnyASCII/16:2-8 72247592 16.59 ns/op BenchmarkIndexAnyASCII/16:2-8 70857225 16.59 ns/op BenchmarkIndexAnyASCII/16:2-8 71260218 16.54 ns/op BenchmarkIndexAnyASCII/16:2-8 69492022 16.53 ns/op BenchmarkIndexAnyASCII/16:2-8 71831468 16.58 ns/op BenchmarkIndexAnyASCII/16:2-8 71768475 16.58 ns/op BenchmarkIndexAnyASCII/16:2-8 72242137 16.59 ns/op BenchmarkIndexAnyASCII/16:2-8 72053022 16.62 ns/op BenchmarkIndexAnyASCII/16:2-8 72022749 16.50 ns/op BenchmarkIndexAnyASCII/16:2-8 72724800 16.59 ns/op BenchmarkIndexAnyASCII/16:4-8 67087576 17.66 ns/op BenchmarkIndexAnyASCII/16:4-8 67426870 17.70 ns/op BenchmarkIndexAnyASCII/16:4-8 66269948 17.75 ns/op BenchmarkIndexAnyASCII/16:4-8 66524190 17.74 ns/op BenchmarkIndexAnyASCII/16:4-8 67729018 17.80 ns/op BenchmarkIndexAnyASCII/16:4-8 67007518 17.77 ns/op BenchmarkIndexAnyASCII/16:4-8 68207158 17.65 ns/op BenchmarkIndexAnyASCII/16:4-8 67904497 17.67 ns/op BenchmarkIndexAnyASCII/16:4-8 67419987 17.67 ns/op BenchmarkIndexAnyASCII/16:4-8 67793208 17.72 ns/op BenchmarkIndexAnyASCII/16:8-8 53411805 21.12 ns/op BenchmarkIndexAnyASCII/16:8-8 54611140 21.14 ns/op BenchmarkIndexAnyASCII/16:8-8 57178304 21.13 ns/op BenchmarkIndexAnyASCII/16:8-8 50164033 21.17 ns/op BenchmarkIndexAnyASCII/16:8-8 56223226 21.14 ns/op BenchmarkIndexAnyASCII/16:8-8 56432211 21.13 ns/op BenchmarkIndexAnyASCII/16:8-8 50349883 21.06 ns/op BenchmarkIndexAnyASCII/16:8-8 57008647 21.11 ns/op BenchmarkIndexAnyASCII/16:8-8 56463668 21.07 ns/op BenchmarkIndexAnyASCII/16:8-8 56052747 21.05 ns/op BenchmarkIndexAnyASCII/16:16-8 38681721 31.03 ns/op BenchmarkIndexAnyASCII/16:16-8 38322396 31.10 ns/op BenchmarkIndexAnyASCII/16:16-8 39141706 31.00 ns/op BenchmarkIndexAnyASCII/16:16-8 38767852 30.89 ns/op BenchmarkIndexAnyASCII/16:16-8 38629986 31.10 ns/op BenchmarkIndexAnyASCII/16:16-8 34745946 30.77 ns/op BenchmarkIndexAnyASCII/16:16-8 38453112 30.97 ns/op BenchmarkIndexAnyASCII/16:16-8 39207237 30.90 ns/op BenchmarkIndexAnyASCII/16:16-8 38870055 30.82 ns/op BenchmarkIndexAnyASCII/16:16-8 37946334 30.99 ns/op BenchmarkIndexAnyASCII/16:32-8 21547312 54.17 ns/op BenchmarkIndexAnyASCII/16:32-8 22234764 54.09 ns/op BenchmarkIndexAnyASCII/16:32-8 21979161 54.19 ns/op BenchmarkIndexAnyASCII/16:32-8 22111362 54.02 ns/op BenchmarkIndexAnyASCII/16:32-8 21481407 54.22 ns/op BenchmarkIndexAnyASCII/16:32-8 21773384 54.13 ns/op BenchmarkIndexAnyASCII/16:32-8 22111826 54.14 ns/op BenchmarkIndexAnyASCII/16:32-8 21830343 54.28 ns/op BenchmarkIndexAnyASCII/16:32-8 21937540 54.11 ns/op BenchmarkIndexAnyASCII/16:32-8 21950353 54.29 ns/op BenchmarkIndexAnyASCII/16:64-8 13033581 91.63 ns/op BenchmarkIndexAnyASCII/16:64-8 13114490 92.06 ns/op BenchmarkIndexAnyASCII/16:64-8 12808354 92.15 ns/op BenchmarkIndexAnyASCII/16:64-8 13132569 92.42 ns/op BenchmarkIndexAnyASCII/16:64-8 13030414 91.89 ns/op BenchmarkIndexAnyASCII/16:64-8 12941756 91.77 ns/op BenchmarkIndexAnyASCII/16:64-8 12977636 91.87 ns/op BenchmarkIndexAnyASCII/16:64-8 12857919 92.05 ns/op BenchmarkIndexAnyASCII/16:64-8 12937587 91.95 ns/op BenchmarkIndexAnyASCII/16:64-8 12485214 91.84 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.17 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.16 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.18 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.20 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.18 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.18 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.13 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.17 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.12 ns/op BenchmarkIndexAnyASCII/256:1-8 100000000 10.14 ns/op BenchmarkIndexAnyASCII/256:2-8 9108418 131.6 ns/op BenchmarkIndexAnyASCII/256:2-8 9051860 131.5 ns/op BenchmarkIndexAnyASCII/256:2-8 9081872 132.2 ns/op BenchmarkIndexAnyASCII/256:2-8 9076010 131.6 ns/op BenchmarkIndexAnyASCII/256:2-8 9101397 132.0 ns/op BenchmarkIndexAnyASCII/256:2-8 9158786 131.9 ns/op BenchmarkIndexAnyASCII/256:2-8 9118326 131.5 ns/op BenchmarkIndexAnyASCII/256:2-8 9088756 131.8 ns/op BenchmarkIndexAnyASCII/256:2-8 9089541 131.5 ns/op BenchmarkIndexAnyASCII/256:2-8 9141122 131.6 ns/op BenchmarkIndexAnyASCII/256:4-8 8995272 133.8 ns/op BenchmarkIndexAnyASCII/256:4-8 8930898 134.1 ns/op BenchmarkIndexAnyASCII/256:4-8 8954602 133.5 ns/op BenchmarkIndexAnyASCII/256:4-8 8973025 133.7 ns/op BenchmarkIndexAnyASCII/256:4-8 8918950 133.2 ns/op BenchmarkIndexAnyASCII/256:4-8 9049856 133.0 ns/op BenchmarkIndexAnyASCII/256:4-8 8937060 133.6 ns/op BenchmarkIndexAnyASCII/256:4-8 9001263 133.9 ns/op BenchmarkIndexAnyASCII/256:4-8 8977977 133.8 ns/op BenchmarkIndexAnyASCII/256:4-8 8994862 133.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8594379 137.7 ns/op BenchmarkIndexAnyASCII/256:8-8 8543124 138.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8728688 140.1 ns/op BenchmarkIndexAnyASCII/256:8-8 8633512 137.8 ns/op BenchmarkIndexAnyASCII/256:8-8 8677020 137.6 ns/op BenchmarkIndexAnyASCII/256:8-8 8670962 138.9 ns/op BenchmarkIndexAnyASCII/256:8-8 8687122 137.7 ns/op BenchmarkIndexAnyASCII/256:8-8 8708390 138.0 ns/op BenchmarkIndexAnyASCII/256:8-8 8720977 137.9 ns/op BenchmarkIndexAnyASCII/256:8-8 8726478 138.2 ns/op BenchmarkIndexAnyASCII/256:16-8 8033329 148.3 ns/op BenchmarkIndexAnyASCII/256:16-8 8084124 148.6 ns/op BenchmarkIndexAnyASCII/256:16-8 8047968 148.7 ns/op BenchmarkIndexAnyASCII/256:16-8 8056035 148.9 ns/op BenchmarkIndexAnyASCII/256:16-8 8051558 148.8 ns/op BenchmarkIndexAnyASCII/256:16-8 8029965 150.1 ns/op BenchmarkIndexAnyASCII/256:16-8 8039862 150.8 ns/op BenchmarkIndexAnyASCII/256:16-8 8065224 148.6 ns/op BenchmarkIndexAnyASCII/256:16-8 8055421 149.4 ns/op BenchmarkIndexAnyASCII/256:16-8 8050904 149.3 ns/op BenchmarkIndexAnyASCII/256:32-8 6653170 180.5 ns/op BenchmarkIndexAnyASCII/256:32-8 6696919 178.7 ns/op BenchmarkIndexAnyASCII/256:32-8 6754242 177.8 ns/op BenchmarkIndexAnyASCII/256:32-8 6701690 179.0 ns/op BenchmarkIndexAnyASCII/256:32-8 6750577 175.4 ns/op BenchmarkIndexAnyASCII/256:32-8 6866952 176.7 ns/op BenchmarkIndexAnyASCII/256:32-8 6795100 176.3 ns/op BenchmarkIndexAnyASCII/256:32-8 6778468 179.9 ns/op BenchmarkIndexAnyASCII/256:32-8 6669116 180.5 ns/op BenchmarkIndexAnyASCII/256:32-8 6749053 177.5 ns/op BenchmarkIndexAnyASCII/256:64-8 5566948 218.0 ns/op BenchmarkIndexAnyASCII/256:64-8 5523910 218.0 ns/op BenchmarkIndexAnyASCII/256:64-8 5560046 218.2 ns/op BenchmarkIndexAnyASCII/256:64-8 5532910 218.5 ns/op BenchmarkIndexAnyASCII/256:64-8 5408422 220.4 ns/op BenchmarkIndexAnyASCII/256:64-8 5412975 220.4 ns/op BenchmarkIndexAnyASCII/256:64-8 5436690 220.5 ns/op BenchmarkIndexAnyASCII/256:64-8 5455826 221.2 ns/op BenchmarkIndexAnyASCII/256:64-8 5454645 220.8 ns/op BenchmarkIndexAnyASCII/256:64-8 5442546 221.7 ns/op BenchmarkIndexAnyUTF8/1:1-8 343565229 3.435 ns/op BenchmarkIndexAnyUTF8/1:1-8 345138838 3.460 ns/op BenchmarkIndexAnyUTF8/1:1-8 343718931 3.477 ns/op BenchmarkIndexAnyUTF8/1:1-8 346911030 3.441 ns/op BenchmarkIndexAnyUTF8/1:1-8 350355166 3.451 ns/op BenchmarkIndexAnyUTF8/1:1-8 348736251 3.449 ns/op BenchmarkIndexAnyUTF8/1:1-8 341473693 3.468 ns/op BenchmarkIndexAnyUTF8/1:1-8 349202690 3.456 ns/op BenchmarkIndexAnyUTF8/1:1-8 351379666 3.466 ns/op BenchmarkIndexAnyUTF8/1:1-8 345929491 3.450 ns/op BenchmarkIndexAnyUTF8/1:2-8 161930818 7.469 ns/op BenchmarkIndexAnyUTF8/1:2-8 163653879 7.363 ns/op BenchmarkIndexAnyUTF8/1:2-8 163664186 7.466 ns/op BenchmarkIndexAnyUTF8/1:2-8 162447356 7.358 ns/op BenchmarkIndexAnyUTF8/1:2-8 163269776 7.328 ns/op BenchmarkIndexAnyUTF8/1:2-8 166623986 7.167 ns/op BenchmarkIndexAnyUTF8/1:2-8 166889979 7.152 ns/op BenchmarkIndexAnyUTF8/1:2-8 167148169 7.167 ns/op BenchmarkIndexAnyUTF8/1:2-8 167133164 7.185 ns/op BenchmarkIndexAnyUTF8/1:2-8 164078034 7.310 ns/op BenchmarkIndexAnyUTF8/1:4-8 165821594 7.265 ns/op BenchmarkIndexAnyUTF8/1:4-8 166826908 7.237 ns/op BenchmarkIndexAnyUTF8/1:4-8 167507814 7.244 ns/op BenchmarkIndexAnyUTF8/1:4-8 165913848 7.185 ns/op BenchmarkIndexAnyUTF8/1:4-8 166901098 7.157 ns/op BenchmarkIndexAnyUTF8/1:4-8 167644712 7.212 ns/op BenchmarkIndexAnyUTF8/1:4-8 168084171 7.173 ns/op BenchmarkIndexAnyUTF8/1:4-8 167927424 7.164 ns/op BenchmarkIndexAnyUTF8/1:4-8 166396110 7.175 ns/op BenchmarkIndexAnyUTF8/1:4-8 167066710 7.158 ns/op BenchmarkIndexAnyUTF8/1:8-8 166200286 7.245 ns/op BenchmarkIndexAnyUTF8/1:8-8 167186172 7.237 ns/op BenchmarkIndexAnyUTF8/1:8-8 162306102 7.362 ns/op BenchmarkIndexAnyUTF8/1:8-8 161569662 7.398 ns/op BenchmarkIndexAnyUTF8/1:8-8 162271098 7.386 ns/op BenchmarkIndexAnyUTF8/1:8-8 162430968 7.386 ns/op BenchmarkIndexAnyUTF8/1:8-8 162452036 7.357 ns/op BenchmarkIndexAnyUTF8/1:8-8 161526250 7.369 ns/op BenchmarkIndexAnyUTF8/1:8-8 162890407 7.374 ns/op BenchmarkIndexAnyUTF8/1:8-8 162799759 7.356 ns/op BenchmarkIndexAnyUTF8/1:16-8 157253547 7.579 ns/op BenchmarkIndexAnyUTF8/1:16-8 158423006 7.450 ns/op BenchmarkIndexAnyUTF8/1:16-8 161678360 7.441 ns/op BenchmarkIndexAnyUTF8/1:16-8 163932272 7.358 ns/op BenchmarkIndexAnyUTF8/1:16-8 163152408 7.389 ns/op BenchmarkIndexAnyUTF8/1:16-8 163056225 7.388 ns/op BenchmarkIndexAnyUTF8/1:16-8 161998360 7.398 ns/op BenchmarkIndexAnyUTF8/1:16-8 160433989 7.398 ns/op BenchmarkIndexAnyUTF8/1:16-8 162686782 7.346 ns/op BenchmarkIndexAnyUTF8/1:16-8 162796047 7.378 ns/op BenchmarkIndexAnyUTF8/1:32-8 150473745 7.928 ns/op BenchmarkIndexAnyUTF8/1:32-8 150444752 7.949 ns/op BenchmarkIndexAnyUTF8/1:32-8 151306192 7.930 ns/op BenchmarkIndexAnyUTF8/1:32-8 149982045 7.923 ns/op BenchmarkIndexAnyUTF8/1:32-8 148440964 7.956 ns/op BenchmarkIndexAnyUTF8/1:32-8 150818509 7.931 ns/op BenchmarkIndexAnyUTF8/1:32-8 150059018 7.954 ns/op BenchmarkIndexAnyUTF8/1:32-8 150931138 7.946 ns/op BenchmarkIndexAnyUTF8/1:32-8 150569521 7.940 ns/op BenchmarkIndexAnyUTF8/1:32-8 150812499 7.950 ns/op BenchmarkIndexAnyUTF8/1:64-8 139866208 8.554 ns/op BenchmarkIndexAnyUTF8/1:64-8 139726532 8.575 ns/op BenchmarkIndexAnyUTF8/1:64-8 139311726 8.534 ns/op BenchmarkIndexAnyUTF8/1:64-8 140055600 8.543 ns/op BenchmarkIndexAnyUTF8/1:64-8 139160970 8.532 ns/op BenchmarkIndexAnyUTF8/1:64-8 139840425 8.530 ns/op BenchmarkIndexAnyUTF8/1:64-8 139959901 8.627 ns/op BenchmarkIndexAnyUTF8/1:64-8 139807587 8.568 ns/op BenchmarkIndexAnyUTF8/1:64-8 139911159 8.566 ns/op BenchmarkIndexAnyUTF8/1:64-8 140258406 8.566 ns/op BenchmarkIndexAnyUTF8/16:1-8 74622312 14.01 ns/op BenchmarkIndexAnyUTF8/16:1-8 79364312 14.44 ns/op BenchmarkIndexAnyUTF8/16:1-8 93652016 14.01 ns/op BenchmarkIndexAnyUTF8/16:1-8 70717718 15.38 ns/op BenchmarkIndexAnyUTF8/16:1-8 93515902 14.71 ns/op BenchmarkIndexAnyUTF8/16:1-8 92731388 13.76 ns/op BenchmarkIndexAnyUTF8/16:1-8 74835338 15.34 ns/op BenchmarkIndexAnyUTF8/16:1-8 71387922 15.13 ns/op BenchmarkIndexAnyUTF8/16:1-8 74453307 15.29 ns/op BenchmarkIndexAnyUTF8/16:1-8 80550762 14.08 ns/op BenchmarkIndexAnyUTF8/16:2-8 36879328 32.73 ns/op BenchmarkIndexAnyUTF8/16:2-8 37147712 32.76 ns/op BenchmarkIndexAnyUTF8/16:2-8 36018145 33.08 ns/op BenchmarkIndexAnyUTF8/16:2-8 36910626 32.48 ns/op BenchmarkIndexAnyUTF8/16:2-8 36141486 32.60 ns/op BenchmarkIndexAnyUTF8/16:2-8 36539242 32.79 ns/op BenchmarkIndexAnyUTF8/16:2-8 36741498 32.75 ns/op BenchmarkIndexAnyUTF8/16:2-8 36906985 32.61 ns/op BenchmarkIndexAnyUTF8/16:2-8 36489999 32.60 ns/op BenchmarkIndexAnyUTF8/16:2-8 35247025 32.64 ns/op BenchmarkIndexAnyUTF8/16:4-8 34246011 34.96 ns/op BenchmarkIndexAnyUTF8/16:4-8 34381003 35.25 ns/op BenchmarkIndexAnyUTF8/16:4-8 33848034 34.99 ns/op BenchmarkIndexAnyUTF8/16:4-8 34213395 35.01 ns/op BenchmarkIndexAnyUTF8/16:4-8 32213034 35.17 ns/op BenchmarkIndexAnyUTF8/16:4-8 33949875 35.05 ns/op BenchmarkIndexAnyUTF8/16:4-8 34359423 35.11 ns/op BenchmarkIndexAnyUTF8/16:4-8 33807087 34.98 ns/op BenchmarkIndexAnyUTF8/16:4-8 33768333 34.93 ns/op BenchmarkIndexAnyUTF8/16:4-8 34645936 35.11 ns/op BenchmarkIndexAnyUTF8/16:8-8 12945844 92.56 ns/op BenchmarkIndexAnyUTF8/16:8-8 12917157 92.82 ns/op BenchmarkIndexAnyUTF8/16:8-8 12895936 93.20 ns/op BenchmarkIndexAnyUTF8/16:8-8 12894484 92.86 ns/op BenchmarkIndexAnyUTF8/16:8-8 12822156 92.98 ns/op BenchmarkIndexAnyUTF8/16:8-8 12965547 93.56 ns/op BenchmarkIndexAnyUTF8/16:8-8 12860341 92.70 ns/op BenchmarkIndexAnyUTF8/16:8-8 12918661 92.78 ns/op BenchmarkIndexAnyUTF8/16:8-8 12603192 92.92 ns/op BenchmarkIndexAnyUTF8/16:8-8 12875322 92.51 ns/op BenchmarkIndexAnyUTF8/16:16-8 12745047 93.79 ns/op BenchmarkIndexAnyUTF8/16:16-8 12778107 93.57 ns/op BenchmarkIndexAnyUTF8/16:16-8 12667239 94.19 ns/op BenchmarkIndexAnyUTF8/16:16-8 12638824 93.85 ns/op BenchmarkIndexAnyUTF8/16:16-8 12836263 93.43 ns/op BenchmarkIndexAnyUTF8/16:16-8 12857370 94.37 ns/op BenchmarkIndexAnyUTF8/16:16-8 12619474 93.84 ns/op BenchmarkIndexAnyUTF8/16:16-8 12941683 94.01 ns/op BenchmarkIndexAnyUTF8/16:16-8 12720681 93.90 ns/op BenchmarkIndexAnyUTF8/16:16-8 12682910 93.26 ns/op BenchmarkIndexAnyUTF8/16:32-8 11752015 101.2 ns/op BenchmarkIndexAnyUTF8/16:32-8 11782088 100.9 ns/op BenchmarkIndexAnyUTF8/16:32-8 12007759 101.4 ns/op BenchmarkIndexAnyUTF8/16:32-8 11765409 101.3 ns/op BenchmarkIndexAnyUTF8/16:32-8 11766006 101.9 ns/op BenchmarkIndexAnyUTF8/16:32-8 11830362 101.3 ns/op BenchmarkIndexAnyUTF8/16:32-8 11470117 102.0 ns/op BenchmarkIndexAnyUTF8/16:32-8 11805774 101.1 ns/op BenchmarkIndexAnyUTF8/16:32-8 11760699 101.1 ns/op BenchmarkIndexAnyUTF8/16:32-8 11869274 101.8 ns/op BenchmarkIndexAnyUTF8/16:64-8 11050711 108.6 ns/op BenchmarkIndexAnyUTF8/16:64-8 10992235 108.4 ns/op BenchmarkIndexAnyUTF8/16:64-8 11033180 108.5 ns/op BenchmarkIndexAnyUTF8/16:64-8 11015899 108.9 ns/op BenchmarkIndexAnyUTF8/16:64-8 10991626 108.5 ns/op BenchmarkIndexAnyUTF8/16:64-8 11047514 108.4 ns/op BenchmarkIndexAnyUTF8/16:64-8 11008796 108.9 ns/op BenchmarkIndexAnyUTF8/16:64-8 11081838 108.3 ns/op BenchmarkIndexAnyUTF8/16:64-8 11045708 108.9 ns/op BenchmarkIndexAnyUTF8/16:64-8 10883056 108.6 ns/op BenchmarkIndexAnyUTF8/256:1-8 7224132 167.6 ns/op BenchmarkIndexAnyUTF8/256:1-8 7175158 168.2 ns/op BenchmarkIndexAnyUTF8/256:1-8 7130223 167.9 ns/op BenchmarkIndexAnyUTF8/256:1-8 7119057 167.5 ns/op BenchmarkIndexAnyUTF8/256:1-8 6921888 167.8 ns/op BenchmarkIndexAnyUTF8/256:1-8 7106394 167.9 ns/op BenchmarkIndexAnyUTF8/256:1-8 7147911 167.0 ns/op BenchmarkIndexAnyUTF8/256:1-8 7145133 167.6 ns/op BenchmarkIndexAnyUTF8/256:1-8 7141143 168.0 ns/op BenchmarkIndexAnyUTF8/256:1-8 7124553 168.4 ns/op BenchmarkIndexAnyUTF8/256:2-8 3373219 349.1 ns/op BenchmarkIndexAnyUTF8/256:2-8 3431863 348.8 ns/op BenchmarkIndexAnyUTF8/256:2-8 3434940 350.4 ns/op BenchmarkIndexAnyUTF8/256:2-8 3442185 350.0 ns/op BenchmarkIndexAnyUTF8/256:2-8 3436249 348.0 ns/op BenchmarkIndexAnyUTF8/256:2-8 3437278 350.6 ns/op BenchmarkIndexAnyUTF8/256:2-8 3429684 350.2 ns/op BenchmarkIndexAnyUTF8/256:2-8 3421207 349.9 ns/op BenchmarkIndexAnyUTF8/256:2-8 3446161 349.1 ns/op BenchmarkIndexAnyUTF8/256:2-8 3424880 348.8 ns/op BenchmarkIndexAnyUTF8/256:4-8 6203734 193.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 6264324 193.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 6168391 193.4 ns/op BenchmarkIndexAnyUTF8/256:4-8 6173080 194.1 ns/op BenchmarkIndexAnyUTF8/256:4-8 6164762 194.1 ns/op BenchmarkIndexAnyUTF8/256:4-8 6193653 192.6 ns/op BenchmarkIndexAnyUTF8/256:4-8 6187147 192.8 ns/op BenchmarkIndexAnyUTF8/256:4-8 6208710 193.7 ns/op BenchmarkIndexAnyUTF8/256:4-8 6213387 192.8 ns/op BenchmarkIndexAnyUTF8/256:4-8 6176784 193.1 ns/op BenchmarkIndexAnyUTF8/256:8-8 3103555 387.2 ns/op BenchmarkIndexAnyUTF8/256:8-8 3096924 387.6 ns/op BenchmarkIndexAnyUTF8/256:8-8 3106794 391.8 ns/op BenchmarkIndexAnyUTF8/256:8-8 3093295 386.5 ns/op BenchmarkIndexAnyUTF8/256:8-8 3081429 387.1 ns/op BenchmarkIndexAnyUTF8/256:8-8 3080293 390.0 ns/op BenchmarkIndexAnyUTF8/256:8-8 3041104 388.0 ns/op BenchmarkIndexAnyUTF8/256:8-8 3096775 396.6 ns/op BenchmarkIndexAnyUTF8/256:8-8 3085948 386.3 ns/op BenchmarkIndexAnyUTF8/256:8-8 3082846 387.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 9710362 122.8 ns/op BenchmarkIndexAnyUTF8/256:16-8 9763641 122.4 ns/op BenchmarkIndexAnyUTF8/256:16-8 9704925 123.5 ns/op BenchmarkIndexAnyUTF8/256:16-8 9686367 123.3 ns/op BenchmarkIndexAnyUTF8/256:16-8 9717289 123.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 9788605 122.8 ns/op BenchmarkIndexAnyUTF8/256:16-8 9698268 123.0 ns/op BenchmarkIndexAnyUTF8/256:16-8 9712966 122.5 ns/op BenchmarkIndexAnyUTF8/256:16-8 9740505 123.5 ns/op BenchmarkIndexAnyUTF8/256:16-8 9698328 123.3 ns/op BenchmarkIndexAnyUTF8/256:32-8 1839310 645.1 ns/op BenchmarkIndexAnyUTF8/256:32-8 1863435 647.6 ns/op BenchmarkIndexAnyUTF8/256:32-8 1865517 642.7 ns/op BenchmarkIndexAnyUTF8/256:32-8 1867467 641.8 ns/op BenchmarkIndexAnyUTF8/256:32-8 1869774 639.9 ns/op BenchmarkIndexAnyUTF8/256:32-8 1859253 641.8 ns/op BenchmarkIndexAnyUTF8/256:32-8 1868328 641.6 ns/op BenchmarkIndexAnyUTF8/256:32-8 1859073 641.9 ns/op BenchmarkIndexAnyUTF8/256:32-8 1862130 641.0 ns/op BenchmarkIndexAnyUTF8/256:32-8 1862324 640.3 ns/op BenchmarkIndexAnyUTF8/256:64-8 1592314 752.3 ns/op BenchmarkIndexAnyUTF8/256:64-8 1601677 752.4 ns/op BenchmarkIndexAnyUTF8/256:64-8 1601821 752.1 ns/op BenchmarkIndexAnyUTF8/256:64-8 1590198 755.9 ns/op BenchmarkIndexAnyUTF8/256:64-8 1580721 754.0 ns/op BenchmarkIndexAnyUTF8/256:64-8 1593616 754.1 ns/op BenchmarkIndexAnyUTF8/256:64-8 1588642 751.6 ns/op BenchmarkIndexAnyUTF8/256:64-8 1584496 750.0 ns/op BenchmarkIndexAnyUTF8/256:64-8 1581778 748.9 ns/op BenchmarkIndexAnyUTF8/256:64-8 1592691 751.7 ns/op BenchmarkLastIndexAnyASCII/1:1-8 200710561 6.043 ns/op BenchmarkLastIndexAnyASCII/1:1-8 198964934 6.011 ns/op BenchmarkLastIndexAnyASCII/1:1-8 198469695 6.007 ns/op BenchmarkLastIndexAnyASCII/1:1-8 198843458 6.006 ns/op BenchmarkLastIndexAnyASCII/1:1-8 199012914 6.011 ns/op BenchmarkLastIndexAnyASCII/1:1-8 199744465 6.014 ns/op BenchmarkLastIndexAnyASCII/1:1-8 199316936 6.023 ns/op BenchmarkLastIndexAnyASCII/1:1-8 200587404 6.022 ns/op BenchmarkLastIndexAnyASCII/1:1-8 199219177 6.009 ns/op BenchmarkLastIndexAnyASCII/1:1-8 199658539 6.023 ns/op BenchmarkLastIndexAnyASCII/1:2-8 199580206 6.007 ns/op BenchmarkLastIndexAnyASCII/1:2-8 200599754 6.012 ns/op BenchmarkLastIndexAnyASCII/1:2-8 200350510 6.024 ns/op BenchmarkLastIndexAnyASCII/1:2-8 198886306 6.034 ns/op BenchmarkLastIndexAnyASCII/1:2-8 198307608 5.977 ns/op BenchmarkLastIndexAnyASCII/1:2-8 198944349 6.008 ns/op BenchmarkLastIndexAnyASCII/1:2-8 199854460 6.010 ns/op BenchmarkLastIndexAnyASCII/1:2-8 199219808 6.031 ns/op BenchmarkLastIndexAnyASCII/1:2-8 199820695 5.980 ns/op BenchmarkLastIndexAnyASCII/1:2-8 200396121 6.019 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199472869 6.046 ns/op BenchmarkLastIndexAnyASCII/1:4-8 200402940 6.016 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199639527 6.008 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199859682 6.010 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199337044 6.013 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199415157 6.004 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199220898 6.013 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199048362 6.002 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199340498 6.017 ns/op BenchmarkLastIndexAnyASCII/1:4-8 199432195 6.027 ns/op BenchmarkLastIndexAnyASCII/1:8-8 200146768 6.017 ns/op BenchmarkLastIndexAnyASCII/1:8-8 200023924 6.009 ns/op BenchmarkLastIndexAnyASCII/1:8-8 198820731 6.016 ns/op BenchmarkLastIndexAnyASCII/1:8-8 191185243 6.005 ns/op BenchmarkLastIndexAnyASCII/1:8-8 197070805 6.037 ns/op BenchmarkLastIndexAnyASCII/1:8-8 199635218 6.006 ns/op BenchmarkLastIndexAnyASCII/1:8-8 199139139 5.996 ns/op BenchmarkLastIndexAnyASCII/1:8-8 196949666 6.037 ns/op BenchmarkLastIndexAnyASCII/1:8-8 197631703 6.009 ns/op BenchmarkLastIndexAnyASCII/1:8-8 199448605 6.016 ns/op BenchmarkLastIndexAnyASCII/1:16-8 191865362 6.250 ns/op BenchmarkLastIndexAnyASCII/1:16-8 191936076 6.241 ns/op BenchmarkLastIndexAnyASCII/1:16-8 190446879 6.259 ns/op BenchmarkLastIndexAnyASCII/1:16-8 192352110 6.230 ns/op BenchmarkLastIndexAnyASCII/1:16-8 190950690 6.246 ns/op BenchmarkLastIndexAnyASCII/1:16-8 192043054 6.263 ns/op BenchmarkLastIndexAnyASCII/1:16-8 191295500 6.222 ns/op BenchmarkLastIndexAnyASCII/1:16-8 189261444 6.273 ns/op BenchmarkLastIndexAnyASCII/1:16-8 191130994 6.235 ns/op BenchmarkLastIndexAnyASCII/1:16-8 191524832 6.243 ns/op BenchmarkLastIndexAnyASCII/1:32-8 177408387 6.764 ns/op BenchmarkLastIndexAnyASCII/1:32-8 176518831 6.761 ns/op BenchmarkLastIndexAnyASCII/1:32-8 175543066 6.771 ns/op BenchmarkLastIndexAnyASCII/1:32-8 177926953 6.789 ns/op BenchmarkLastIndexAnyASCII/1:32-8 177039758 6.736 ns/op BenchmarkLastIndexAnyASCII/1:32-8 177108474 6.832 ns/op BenchmarkLastIndexAnyASCII/1:32-8 176518084 6.761 ns/op BenchmarkLastIndexAnyASCII/1:32-8 176361295 6.763 ns/op BenchmarkLastIndexAnyASCII/1:32-8 177997516 6.801 ns/op BenchmarkLastIndexAnyASCII/1:32-8 176917086 6.750 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165674568 7.276 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165098317 7.271 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165867926 7.236 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165991304 7.257 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165620967 7.234 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165259922 7.226 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165325443 7.264 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165699033 7.223 ns/op BenchmarkLastIndexAnyASCII/1:64-8 165063351 7.226 ns/op BenchmarkLastIndexAnyASCII/1:64-8 166292908 7.279 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72721648 16.43 ns/op BenchmarkLastIndexAnyASCII/16:1-8 73148559 16.40 ns/op BenchmarkLastIndexAnyASCII/16:1-8 71630689 16.60 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72153316 16.40 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72854317 16.47 ns/op BenchmarkLastIndexAnyASCII/16:1-8 73221776 16.33 ns/op BenchmarkLastIndexAnyASCII/16:1-8 71732031 16.37 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72849447 16.42 ns/op BenchmarkLastIndexAnyASCII/16:1-8 70987758 16.34 ns/op BenchmarkLastIndexAnyASCII/16:1-8 72194841 16.35 ns/op BenchmarkLastIndexAnyASCII/16:2-8 72249418 16.54 ns/op BenchmarkLastIndexAnyASCII/16:2-8 73058817 16.61 ns/op BenchmarkLastIndexAnyASCII/16:2-8 70920727 16.56 ns/op BenchmarkLastIndexAnyASCII/16:2-8 72920103 16.57 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71776327 16.58 ns/op BenchmarkLastIndexAnyASCII/16:2-8 72564534 16.55 ns/op BenchmarkLastIndexAnyASCII/16:2-8 72779938 16.55 ns/op BenchmarkLastIndexAnyASCII/16:2-8 73541618 16.55 ns/op BenchmarkLastIndexAnyASCII/16:2-8 71074522 16.60 ns/op BenchmarkLastIndexAnyASCII/16:2-8 72085662 16.57 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67000858 17.63 ns/op BenchmarkLastIndexAnyASCII/16:4-8 62819827 17.64 ns/op BenchmarkLastIndexAnyASCII/16:4-8 65427584 17.75 ns/op BenchmarkLastIndexAnyASCII/16:4-8 68202441 17.64 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67214449 17.72 ns/op BenchmarkLastIndexAnyASCII/16:4-8 68516552 17.78 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67234902 17.79 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67356535 17.70 ns/op BenchmarkLastIndexAnyASCII/16:4-8 65385206 17.72 ns/op BenchmarkLastIndexAnyASCII/16:4-8 67040143 17.72 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56470069 20.99 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56582448 21.08 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56867124 21.02 ns/op BenchmarkLastIndexAnyASCII/16:8-8 55709757 21.06 ns/op BenchmarkLastIndexAnyASCII/16:8-8 55228634 21.00 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56925838 21.04 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56590068 21.06 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56132277 21.10 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56826560 21.11 ns/op BenchmarkLastIndexAnyASCII/16:8-8 56936251 21.02 ns/op BenchmarkLastIndexAnyASCII/16:16-8 37822741 31.11 ns/op BenchmarkLastIndexAnyASCII/16:16-8 37341090 31.01 ns/op BenchmarkLastIndexAnyASCII/16:16-8 36088959 31.62 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38627924 31.57 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38338150 31.19 ns/op BenchmarkLastIndexAnyASCII/16:16-8 39053192 31.85 ns/op BenchmarkLastIndexAnyASCII/16:16-8 35357018 30.86 ns/op BenchmarkLastIndexAnyASCII/16:16-8 34636921 31.01 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38321338 30.97 ns/op BenchmarkLastIndexAnyASCII/16:16-8 38637057 30.86 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22130251 54.17 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22087318 54.37 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22045453 54.15 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22060268 54.76 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22071469 54.32 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22054111 54.15 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21985263 54.35 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22198141 54.27 ns/op BenchmarkLastIndexAnyASCII/16:32-8 22024453 54.34 ns/op BenchmarkLastIndexAnyASCII/16:32-8 21968258 54.26 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13013538 91.55 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13073325 92.41 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12786613 91.91 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12987985 91.80 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13001109 91.83 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13136550 92.17 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12860614 92.04 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13148371 91.30 ns/op BenchmarkLastIndexAnyASCII/16:64-8 13153809 92.94 ns/op BenchmarkLastIndexAnyASCII/16:64-8 12928659 91.93 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9153885 130.9 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9186850 130.3 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9089095 131.0 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9042306 130.6 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9176798 130.4 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9136552 130.4 ns/op BenchmarkLastIndexAnyASCII/256:1-8 8888946 130.5 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9065980 130.8 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9185284 131.1 ns/op BenchmarkLastIndexAnyASCII/256:1-8 9122059 130.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9064539 131.4 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9100258 131.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9110359 132.3 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9105952 131.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9108807 131.7 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9060316 132.4 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9077677 131.8 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9070599 131.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 8932753 131.5 ns/op BenchmarkLastIndexAnyASCII/256:2-8 9050721 131.3 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8985328 133.7 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8924671 134.0 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8973340 133.5 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8969157 133.9 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8829590 133.6 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8967806 134.4 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8971429 133.0 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8836486 133.9 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8935389 133.3 ns/op BenchmarkLastIndexAnyASCII/256:4-8 8921217 133.8 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8442972 139.2 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8715758 137.9 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8726272 138.1 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8578950 137.5 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8701651 138.3 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8671035 138.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8604224 137.9 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8640954 138.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8691021 137.0 ns/op BenchmarkLastIndexAnyASCII/256:8-8 8639876 138.1 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8064332 147.7 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8078838 147.9 ns/op BenchmarkLastIndexAnyASCII/256:16-8 7989684 148.1 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8095953 149.4 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8078876 148.3 ns/op BenchmarkLastIndexAnyASCII/256:16-8 7972149 148.1 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8036926 148.6 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8111008 148.0 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8098995 148.2 ns/op BenchmarkLastIndexAnyASCII/256:16-8 8067086 148.3 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6832122 175.9 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6811789 175.6 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6812190 175.9 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6720099 175.7 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6836840 177.3 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6850344 175.4 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6763470 175.4 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6787102 175.5 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6789393 176.2 ns/op BenchmarkLastIndexAnyASCII/256:32-8 6820148 177.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5636283 213.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5573841 213.3 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5647232 213.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5625166 214.5 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5570115 213.0 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5584083 214.6 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5530717 215.1 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5587359 214.0 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5601780 213.8 ns/op BenchmarkLastIndexAnyASCII/256:64-8 5640424 214.3 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 199879928 5.931 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 202624460 5.991 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 202392873 5.975 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 199935423 5.928 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 201307820 5.959 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 200694643 5.959 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 200461443 5.994 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 201338162 5.967 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 200141109 5.960 ns/op BenchmarkLastIndexAnyUTF8/1:1-8 201356894 5.961 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 200891809 5.933 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 201164624 6.018 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 201436486 5.951 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 200083818 5.953 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 200565980 5.963 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 201981840 5.956 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 202106798 5.974 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 201855638 5.956 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 201147930 5.955 ns/op BenchmarkLastIndexAnyUTF8/1:2-8 199920865 6.001 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 199541380 5.949 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 202436649 5.972 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 201454110 5.956 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 199999994 5.976 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 200763882 5.945 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 200487640 5.950 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 201611862 5.952 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 201771199 5.965 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 200810540 5.982 ns/op BenchmarkLastIndexAnyUTF8/1:4-8 200981445 5.973 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 200342266 5.964 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 199308450 5.966 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 198922465 5.965 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 200190790 5.952 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 200324856 5.967 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 200162796 5.973 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 201125953 5.995 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 202610547 5.945 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 201243332 5.968 ns/op BenchmarkLastIndexAnyUTF8/1:8-8 201183478 5.978 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 193629464 6.151 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 192393154 6.203 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 194708534 6.136 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 194772219 6.175 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 195207987 6.162 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 191889037 6.136 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 195652857 6.173 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 196103695 6.157 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 195439554 6.148 ns/op BenchmarkLastIndexAnyUTF8/1:16-8 195894979 6.142 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 179009860 6.682 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 179128917 6.693 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 178698806 6.701 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 180138648 6.695 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 180022885 6.674 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 180005112 6.682 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 178299775 6.684 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 179250060 6.678 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 177407713 6.684 ns/op BenchmarkLastIndexAnyUTF8/1:32-8 178877620 6.683 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165333684 7.226 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165601128 7.205 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165676080 7.265 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 166364040 7.239 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165832443 7.270 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 166064229 7.240 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165545893 7.232 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165240152 7.227 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165804110 7.249 ns/op BenchmarkLastIndexAnyUTF8/1:64-8 165698988 7.263 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36523323 31.05 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 34859060 31.32 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 38578200 31.08 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 38259186 31.19 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 36037216 31.07 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 37307491 31.07 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 38664170 31.04 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 37100274 31.17 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 37941880 31.08 ns/op BenchmarkLastIndexAnyUTF8/16:1-8 38283364 31.08 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 11003444 108.8 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 11094918 109.4 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 11040547 109.0 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10984257 108.9 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 11033294 108.7 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 11021229 108.4 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 11036760 108.9 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 11080159 108.9 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10975416 108.8 ns/op BenchmarkLastIndexAnyUTF8/16:2-8 10979218 108.8 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10941366 108.3 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10757313 109.0 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10934773 109.2 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 11024686 108.9 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 11045934 108.6 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10667286 109.0 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10924941 108.7 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10951249 108.4 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10967037 109.1 ns/op BenchmarkLastIndexAnyUTF8/16:4-8 10957182 109.0 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 11080087 108.7 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10931757 108.6 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10966280 108.6 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10996456 108.9 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 11064980 109.1 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10967521 109.0 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10998712 108.9 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 11057804 109.2 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 10912129 108.4 ns/op BenchmarkLastIndexAnyUTF8/16:8-8 11160238 108.6 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10882431 111.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10722870 110.7 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10830116 110.8 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10814148 111.0 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10752879 110.7 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10805290 110.8 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10912369 110.5 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10595190 110.4 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10752594 110.5 ns/op BenchmarkLastIndexAnyUTF8/16:16-8 10828909 110.7 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10181179 117.4 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10197777 117.2 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10219905 116.8 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10244642 117.6 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10196781 117.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10282999 116.6 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10219638 116.9 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10104952 117.2 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10225434 117.1 ns/op BenchmarkLastIndexAnyUTF8/16:32-8 10184886 116.8 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9342571 128.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9410234 126.9 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9333630 127.4 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9378231 127.5 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9412582 127.2 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9319174 127.2 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9441560 128.3 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9420608 127.9 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9404197 127.1 ns/op BenchmarkLastIndexAnyUTF8/16:64-8 9538450 127.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2677376 447.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2669424 449.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2665858 447.5 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2676702 446.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2665825 449.8 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2686544 448.7 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2690622 448.4 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2669584 448.2 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2685781 451.1 ns/op BenchmarkLastIndexAnyUTF8/256:1-8 2666488 447.5 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 790850 1523 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 771320 1532 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 781006 1528 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 787170 1532 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 783392 1524 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 775240 1533 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 780486 1532 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 783255 1530 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 782486 1536 ns/op BenchmarkLastIndexAnyUTF8/256:2-8 784333 1546 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 791576 1535 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 795136 1531 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 778578 1534 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 772570 1542 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 776090 1540 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 775832 1532 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 776887 1533 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 792052 1531 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 779079 1529 ns/op BenchmarkLastIndexAnyUTF8/256:4-8 790522 1528 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 775860 1534 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 781327 1527 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 792080 1528 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 785480 1533 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 790842 1542 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 763477 1536 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 793552 1530 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 776311 1523 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 765272 1529 ns/op BenchmarkLastIndexAnyUTF8/256:8-8 782870 1531 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 750650 1597 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 756960 1596 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 747813 1598 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 756025 1593 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 757012 1595 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 750799 1594 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 761200 1588 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 756676 1590 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 753711 1592 ns/op BenchmarkLastIndexAnyUTF8/256:16-8 737251 1588 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 712080 1692 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 700072 1694 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 707419 1690 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 705808 1689 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 672699 1682 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 697362 1694 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 701767 1694 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 710172 1699 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 706191 1695 ns/op BenchmarkLastIndexAnyUTF8/256:32-8 699876 1692 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 632066 1879 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 645164 1885 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 635778 1875 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 629074 1876 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 641833 1874 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 625299 1874 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 646278 1874 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 636504 1872 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 632287 1878 ns/op BenchmarkLastIndexAnyUTF8/256:64-8 637755 1872 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21781 55298 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21786 55051 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21570 54957 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21746 55014 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21661 55372 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21787 55338 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21656 55017 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21700 55135 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21658 55225 ns/op BenchmarkIndexPeriodic/IndexPeriodic2-8 21760 55033 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21708 55202 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21693 55271 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21756 55281 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21836 55224 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21739 55093 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21799 55140 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21588 55204 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21774 55319 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21691 54837 ns/op BenchmarkIndexPeriodic/IndexPeriodic4-8 21555 55093 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12633 93205 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12717 93713 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12726 93571 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12813 93588 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12835 94066 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12840 93568 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12741 93448 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12867 93666 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12764 93275 ns/op BenchmarkIndexPeriodic/IndexPeriodic8-8 12847 93627 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25771 46464 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25507 46626 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25572 46755 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25629 46656 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25675 47055 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 26014 46838 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25573 46845 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25761 46496 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25930 46637 ns/op BenchmarkIndexPeriodic/IndexPeriodic16-8 25364 46553 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51789 22866 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51049 23621 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51789 23362 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 52413 22881 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51992 22735 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 52225 23222 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51607 23231 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 50341 23420 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 51732 23551 ns/op BenchmarkIndexPeriodic/IndexPeriodic32-8 49359 23265 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 91147 12044 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 88423 12753 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 91704 12740 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 93619 12385 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 96981 12279 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 87637 12865 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 95659 12529 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 91332 12674 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 91030 12430 ns/op BenchmarkIndexPeriodic/IndexPeriodic64-8 90322 12307 ns/op BenchmarkIndexByte_Bytes/10-8 292397914 4.068 ns/op 2458.42 MB/s BenchmarkIndexByte_Bytes/10-8 296027995 4.089 ns/op 2445.60 MB/s BenchmarkIndexByte_Bytes/10-8 292227552 4.070 ns/op 2457.29 MB/s BenchmarkIndexByte_Bytes/10-8 292478582 4.081 ns/op 2450.25 MB/s BenchmarkIndexByte_Bytes/10-8 294356410 4.077 ns/op 2452.49 MB/s BenchmarkIndexByte_Bytes/10-8 290952984 4.081 ns/op 2450.67 MB/s BenchmarkIndexByte_Bytes/10-8 295515428 4.065 ns/op 2460.23 MB/s BenchmarkIndexByte_Bytes/10-8 290763415 4.069 ns/op 2457.31 MB/s BenchmarkIndexByte_Bytes/10-8 294356544 4.073 ns/op 2455.33 MB/s BenchmarkIndexByte_Bytes/10-8 294217840 4.098 ns/op 2440.07 MB/s BenchmarkIndexByte_Bytes/32-8 256499772 4.730 ns/op 6764.64 MB/s BenchmarkIndexByte_Bytes/32-8 255362811 4.698 ns/op 6811.09 MB/s BenchmarkIndexByte_Bytes/32-8 255717391 4.705 ns/op 6801.31 MB/s BenchmarkIndexByte_Bytes/32-8 254807683 4.702 ns/op 6805.29 MB/s BenchmarkIndexByte_Bytes/32-8 253974006 4.721 ns/op 6778.79 MB/s BenchmarkIndexByte_Bytes/32-8 254162976 4.703 ns/op 6803.90 MB/s BenchmarkIndexByte_Bytes/32-8 253401032 4.711 ns/op 6793.16 MB/s BenchmarkIndexByte_Bytes/32-8 255190095 4.696 ns/op 6814.26 MB/s BenchmarkIndexByte_Bytes/32-8 254808890 4.684 ns/op 6831.43 MB/s BenchmarkIndexByte_Bytes/32-8 253770078 4.704 ns/op 6802.12 MB/s BenchmarkIndexByte_Bytes/4K-8 16747131 71.17 ns/op 57551.14 MB/s BenchmarkIndexByte_Bytes/4K-8 16748402 71.01 ns/op 57683.16 MB/s BenchmarkIndexByte_Bytes/4K-8 16751769 71.21 ns/op 57520.46 MB/s BenchmarkIndexByte_Bytes/4K-8 16606876 71.63 ns/op 57182.52 MB/s BenchmarkIndexByte_Bytes/4K-8 16847712 71.49 ns/op 57296.84 MB/s BenchmarkIndexByte_Bytes/4K-8 16837882 71.48 ns/op 57306.27 MB/s BenchmarkIndexByte_Bytes/4K-8 17033865 71.42 ns/op 57347.05 MB/s BenchmarkIndexByte_Bytes/4K-8 16748281 70.89 ns/op 57777.17 MB/s BenchmarkIndexByte_Bytes/4K-8 16701385 71.24 ns/op 57497.55 MB/s BenchmarkIndexByte_Bytes/4K-8 16762828 71.32 ns/op 57434.04 MB/s BenchmarkIndexByte_Bytes/4M-8 12440 93960 ns/op 44639.28 MB/s BenchmarkIndexByte_Bytes/4M-8 12036 97677 ns/op 42940.53 MB/s BenchmarkIndexByte_Bytes/4M-8 12555 95962 ns/op 43708.12 MB/s BenchmarkIndexByte_Bytes/4M-8 12440 94063 ns/op 44590.49 MB/s BenchmarkIndexByte_Bytes/4M-8 12498 96978 ns/op 43250.18 MB/s BenchmarkIndexByte_Bytes/4M-8 12916 97827 ns/op 42874.54 MB/s BenchmarkIndexByte_Bytes/4M-8 12627 95860 ns/op 43754.58 MB/s BenchmarkIndexByte_Bytes/4M-8 12112 94850 ns/op 44220.58 MB/s BenchmarkIndexByte_Bytes/4M-8 12478 96569 ns/op 43433.13 MB/s BenchmarkIndexByte_Bytes/4M-8 12942 95510 ns/op 43914.88 MB/s BenchmarkIndexByte_Bytes/64M-8 328 3686078 ns/op 18206.04 MB/s BenchmarkIndexByte_Bytes/64M-8 336 3646807 ns/op 18402.09 MB/s BenchmarkIndexByte_Bytes/64M-8 306 3556815 ns/op 18867.68 MB/s BenchmarkIndexByte_Bytes/64M-8 302 3686678 ns/op 18203.07 MB/s BenchmarkIndexByte_Bytes/64M-8 301 3576836 ns/op 18762.08 MB/s BenchmarkIndexByte_Bytes/64M-8 301 3625062 ns/op 18512.47 MB/s BenchmarkIndexByte_Bytes/64M-8 288 3702151 ns/op 18126.99 MB/s BenchmarkIndexByte_Bytes/64M-8 278 3616964 ns/op 18553.92 MB/s BenchmarkIndexByte_Bytes/64M-8 295 3651043 ns/op 18380.74 MB/s BenchmarkIndexByte_Bytes/64M-8 289 3830922 ns/op 17517.68 MB/s BenchmarkIndexRune_Bytes/10-8 88124560 13.12 ns/op 762.17 MB/s BenchmarkIndexRune_Bytes/10-8 91059220 13.05 ns/op 766.35 MB/s BenchmarkIndexRune_Bytes/10-8 91844478 13.06 ns/op 765.46 MB/s BenchmarkIndexRune_Bytes/10-8 89777654 13.03 ns/op 767.24 MB/s BenchmarkIndexRune_Bytes/10-8 93121292 13.08 ns/op 764.34 MB/s BenchmarkIndexRune_Bytes/10-8 93640944 13.12 ns/op 762.26 MB/s BenchmarkIndexRune_Bytes/10-8 91639555 13.06 ns/op 765.83 MB/s BenchmarkIndexRune_Bytes/10-8 92595607 13.07 ns/op 764.88 MB/s BenchmarkIndexRune_Bytes/10-8 93290499 13.12 ns/op 762.06 MB/s BenchmarkIndexRune_Bytes/10-8 93290906 13.08 ns/op 764.25 MB/s BenchmarkIndexRune_Bytes/32-8 86118284 13.97 ns/op 2290.18 MB/s BenchmarkIndexRune_Bytes/32-8 83262409 13.92 ns/op 2298.09 MB/s BenchmarkIndexRune_Bytes/32-8 85940468 14.00 ns/op 2285.48 MB/s BenchmarkIndexRune_Bytes/32-8 84515481 13.97 ns/op 2290.57 MB/s BenchmarkIndexRune_Bytes/32-8 84199104 13.97 ns/op 2291.28 MB/s BenchmarkIndexRune_Bytes/32-8 87286622 13.89 ns/op 2304.63 MB/s BenchmarkIndexRune_Bytes/32-8 86374675 13.93 ns/op 2296.52 MB/s BenchmarkIndexRune_Bytes/32-8 82947930 13.98 ns/op 2288.78 MB/s BenchmarkIndexRune_Bytes/32-8 84917546 13.89 ns/op 2303.11 MB/s BenchmarkIndexRune_Bytes/32-8 86324140 13.94 ns/op 2296.24 MB/s BenchmarkIndexRune_Bytes/4K-8 15005634 80.16 ns/op 51095.17 MB/s BenchmarkIndexRune_Bytes/4K-8 14872506 80.02 ns/op 51187.95 MB/s BenchmarkIndexRune_Bytes/4K-8 15113822 79.79 ns/op 51337.26 MB/s BenchmarkIndexRune_Bytes/4K-8 15088704 80.28 ns/op 51020.38 MB/s BenchmarkIndexRune_Bytes/4K-8 14860064 80.74 ns/op 50730.61 MB/s BenchmarkIndexRune_Bytes/4K-8 14738617 80.86 ns/op 50657.61 MB/s BenchmarkIndexRune_Bytes/4K-8 14624791 80.56 ns/op 50846.73 MB/s BenchmarkIndexRune_Bytes/4K-8 15117675 80.23 ns/op 51054.37 MB/s BenchmarkIndexRune_Bytes/4K-8 14904231 81.28 ns/op 50391.67 MB/s BenchmarkIndexRune_Bytes/4K-8 14825296 80.43 ns/op 50927.12 MB/s BenchmarkIndexRune_Bytes/4M-8 12168 100551 ns/op 41713.08 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 101075 ns/op 41497.11 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 101629 ns/op 41270.89 MB/s BenchmarkIndexRune_Bytes/4M-8 12231 103352 ns/op 40582.65 MB/s BenchmarkIndexRune_Bytes/4M-8 12138 101882 ns/op 41168.29 MB/s BenchmarkIndexRune_Bytes/4M-8 12055 101741 ns/op 41225.13 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 102239 ns/op 41024.65 MB/s BenchmarkIndexRune_Bytes/4M-8 10000 100043 ns/op 41924.82 MB/s BenchmarkIndexRune_Bytes/4M-8 12213 97442 ns/op 43044.33 MB/s BenchmarkIndexRune_Bytes/4M-8 12076 103042 ns/op 40704.64 MB/s BenchmarkIndexRune_Bytes/64M-8 313 3823338 ns/op 17552.43 MB/s BenchmarkIndexRune_Bytes/64M-8 283 3688394 ns/op 18194.60 MB/s BenchmarkIndexRune_Bytes/64M-8 290 3622022 ns/op 18528.01 MB/s BenchmarkIndexRune_Bytes/64M-8 292 3674822 ns/op 18261.80 MB/s BenchmarkIndexRune_Bytes/64M-8 302 3924189 ns/op 17101.33 MB/s BenchmarkIndexRune_Bytes/64M-8 297 3759433 ns/op 17850.79 MB/s BenchmarkIndexRune_Bytes/64M-8 296 3630680 ns/op 18483.83 MB/s BenchmarkIndexRune_Bytes/64M-8 295 3590662 ns/op 18689.83 MB/s BenchmarkIndexRune_Bytes/64M-8 288 3740472 ns/op 17941.28 MB/s BenchmarkIndexRune_Bytes/64M-8 300 3560480 ns/op 18848.26 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 189937994 6.129 ns/op 1631.51 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 192604689 6.139 ns/op 1628.86 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 194680291 6.141 ns/op 1628.29 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 195305163 6.163 ns/op 1622.64 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 195152210 6.153 ns/op 1625.21 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 196428603 6.170 ns/op 1620.64 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 195326858 6.152 ns/op 1625.53 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 192948736 6.141 ns/op 1628.43 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 195077205 6.152 ns/op 1625.54 MB/s BenchmarkIndexRuneASCII_Bytes/10-8 195658538 6.149 ns/op 1626.16 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 172426334 6.937 ns/op 4612.77 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 172832871 6.953 ns/op 4602.03 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 172190428 6.947 ns/op 4606.62 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 171461898 6.916 ns/op 4627.14 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 171353643 6.939 ns/op 4611.95 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 171998300 6.948 ns/op 4605.40 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 171262290 6.916 ns/op 4626.85 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 171885865 6.938 ns/op 4612.60 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 172641333 7.045 ns/op 4542.35 MB/s BenchmarkIndexRuneASCII_Bytes/32-8 172690058 6.978 ns/op 4585.85 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16085332 74.21 ns/op 55191.79 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16055694 74.11 ns/op 55267.57 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16101654 73.94 ns/op 55397.19 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16409343 74.09 ns/op 55284.89 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16131348 73.79 ns/op 55509.69 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16196379 74.06 ns/op 55302.88 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16219970 73.89 ns/op 55431.20 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 15986008 74.28 ns/op 55145.33 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16439310 73.79 ns/op 55511.89 MB/s BenchmarkIndexRuneASCII_Bytes/4K-8 16104787 73.84 ns/op 55474.75 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12708 97637 ns/op 42957.93 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12679 95531 ns/op 43905.25 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12571 93193 ns/op 45006.80 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12873 97092 ns/op 43199.34 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12212 94454 ns/op 44405.77 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12556 98458 ns/op 42599.87 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12855 96779 ns/op 43339.09 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12232 95490 ns/op 43923.80 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12915 97845 ns/op 42866.81 MB/s BenchmarkIndexRuneASCII_Bytes/4M-8 12586 95003 ns/op 44149.39 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 313 3641051 ns/op 18431.18 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 295 3766978 ns/op 17815.04 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 283 3744935 ns/op 17919.90 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 278 3699790 ns/op 18138.56 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 277 3749242 ns/op 17899.31 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 277 3733797 ns/op 17973.36 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 326 3717619 ns/op 18051.57 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 283 3675233 ns/op 18259.76 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 289 3712759 ns/op 18075.20 MB/s BenchmarkIndexRuneASCII_Bytes/64M-8 284 3713403 ns/op 18072.07 MB/s BenchmarkIndexNonASCII_Bytes/10-8 408583712 2.958 ns/op 3380.39 MB/s BenchmarkIndexNonASCII_Bytes/10-8 400301898 2.958 ns/op 3380.87 MB/s BenchmarkIndexNonASCII_Bytes/10-8 407362164 2.953 ns/op 3386.12 MB/s BenchmarkIndexNonASCII_Bytes/10-8 403884031 2.948 ns/op 3391.72 MB/s BenchmarkIndexNonASCII_Bytes/10-8 407105536 2.952 ns/op 3387.24 MB/s BenchmarkIndexNonASCII_Bytes/10-8 404886192 2.957 ns/op 3381.94 MB/s BenchmarkIndexNonASCII_Bytes/10-8 402620328 2.955 ns/op 3383.55 MB/s BenchmarkIndexNonASCII_Bytes/10-8 403286774 2.949 ns/op 3390.90 MB/s BenchmarkIndexNonASCII_Bytes/10-8 404513790 2.962 ns/op 3376.28 MB/s BenchmarkIndexNonASCII_Bytes/10-8 404665173 2.946 ns/op 3394.55 MB/s BenchmarkIndexNonASCII_Bytes/32-8 332088981 3.639 ns/op 8792.94 MB/s BenchmarkIndexNonASCII_Bytes/32-8 329768508 3.632 ns/op 8810.25 MB/s BenchmarkIndexNonASCII_Bytes/32-8 330410503 3.651 ns/op 8765.07 MB/s BenchmarkIndexNonASCII_Bytes/32-8 330098121 3.618 ns/op 8845.30 MB/s BenchmarkIndexNonASCII_Bytes/32-8 328609316 3.647 ns/op 8775.02 MB/s BenchmarkIndexNonASCII_Bytes/32-8 330002648 3.634 ns/op 8805.58 MB/s BenchmarkIndexNonASCII_Bytes/32-8 333925856 3.632 ns/op 8810.39 MB/s BenchmarkIndexNonASCII_Bytes/32-8 329152226 3.626 ns/op 8825.42 MB/s BenchmarkIndexNonASCII_Bytes/32-8 328583979 3.613 ns/op 8857.93 MB/s BenchmarkIndexNonASCII_Bytes/32-8 329552058 3.653 ns/op 8759.07 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16873182 71.43 ns/op 57344.87 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16938042 71.30 ns/op 57450.37 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16846855 71.06 ns/op 57644.56 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16812309 71.25 ns/op 57489.25 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16179786 70.80 ns/op 57851.27 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 17038111 71.15 ns/op 57571.62 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16787751 70.81 ns/op 57843.72 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16846316 71.36 ns/op 57401.55 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16542514 70.94 ns/op 57739.67 MB/s BenchmarkIndexNonASCII_Bytes/4K-8 16754917 71.01 ns/op 57678.49 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12211 101294 ns/op 41407.04 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12412 96945 ns/op 43264.61 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12130 97140 ns/op 43177.88 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12121 98720 ns/op 42486.73 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12084 99276 ns/op 42248.90 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12214 99402 ns/op 42195.45 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12428 98998 ns/op 42367.69 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12334 99800 ns/op 42027.14 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 10000 100142 ns/op 41883.67 MB/s BenchmarkIndexNonASCII_Bytes/4M-8 12297 96426 ns/op 43497.45 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 319 3755911 ns/op 17867.53 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 292 3828526 ns/op 17528.64 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 285 3721798 ns/op 18031.30 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 276 3730191 ns/op 17990.73 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 290 3646318 ns/op 18404.55 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 289 3739248 ns/op 17947.16 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 283 3641370 ns/op 18429.57 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 285 3585368 ns/op 18717.43 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 292 3662162 ns/op 18324.93 MB/s BenchmarkIndexNonASCII_Bytes/64M-8 285 3707836 ns/op 18099.20 MB/s PASS ok github.com/charlievieth/strcase/internal/benchtest 2105.311s strcase-0.0.5/internal/bytealg/ 0000775 0000000 0000000 00000000000 14720254634 0016432 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/bytealg/bytealg_amd64.go 0000664 0000000 0000000 00000001475 14720254634 0021412 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. package bytealg import ( "unsafe" "golang.org/x/sys/cpu" ) // Offsets into internal/cpu records for use in assembly. const ( offsetX86HasAVX2 = unsafe.Offsetof(cpu.X86.HasAVX2) offsetX86HasPOPCNT = unsafe.Offsetof(cpu.X86.HasPOPCNT) ) // Make golangci-lint think these constants are accessed since it // cannot see accesses in assembly. const _ = offsetX86HasAVX2 const _ = offsetX86HasPOPCNT //go:noescape func IndexByte(b []byte, c byte) int //go:noescape func IndexByteString(s string, c byte) int //go:noescape func IndexNonASCII(s string) int //go:noescape func IndexByteNonASCII(b []byte) int //go:noescape func Count(b []byte, c byte) int //go:noescape func CountString(s string, c byte) int strcase-0.0.5/internal/bytealg/bytealg_arm64.go 0000664 0000000 0000000 00000000672 14720254634 0021426 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. package bytealg //go:noescape func IndexByte(b []byte, c byte) int //go:noescape func IndexByteString(s string, c byte) int //go:noescape func IndexNonASCII(s string) int //go:noescape func IndexByteNonASCII(b []byte) int //go:noescape func Count(b []byte, c byte) int //go:noescape func CountString(s string, c byte) int strcase-0.0.5/internal/bytealg/count_amd64.go 0000664 0000000 0000000 00000001763 14720254634 0021113 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. //go:build amd64 // +build amd64 package bytealg // Make golangci-lint think these functions are accessed since it // cannot see accesses in assembly. var _ = countGeneric var _ = countGenericString // Backup implementation to use by assembly when POPCNT is not available. func countGeneric(b []byte, c byte) int { if 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' { n := 0 c |= ' ' for _, cc := range b { if cc|' ' == c { n++ } } return n } n := 0 for _, x := range b { if x == c { n++ } } return n } // Backup implementation to use by assembly when POPCNT is not available. func countGenericString(s string, c byte) int { if 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' { n := 0 c |= ' ' for i := 0; i < len(s); i++ { if s[i]|' ' == c { n++ } } return n } n := 0 for i := 0; i < len(s); i++ { if s[i] == c { n++ } } return n } strcase-0.0.5/internal/bytealg/count_amd64.s 0000664 0000000 0000000 00000024173 14720254634 0020750 0 ustar 00root root 0000000 0000000 //go:build amd64 && !go1.22 // +build amd64,!go1.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. #include "go_asm.h" #include "asm_amd64.h" #include "textflag.h" TEXT ·Count(SB), NOSPLIT, $0-40 #ifndef hasPOPCNT CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasPOPCNT(SB), $1 JEQ 2(PC) JMP ·countGeneric(SB) #endif MOVQ b_base+0(FP), SI MOVQ b_len+8(FP), BX MOVB c+24(FP), AL LEAQ ret+32(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS count_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI count count_case: MOVB c+24(FP), AL JMP countbodyCase<>(SB) count: MOVB c+24(FP), AL JMP countbody<>(SB) TEXT ·CountString(SB), NOSPLIT, $0-32 #ifndef hasPOPCNT CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasPOPCNT(SB), $1 JEQ 2(PC) JMP ·countGenericString(SB) #endif MOVQ s_base+0(FP), SI MOVQ s_len+8(FP), BX MOVB c+16(FP), AL LEAQ ret+24(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS count_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI count count_case: MOVB c+16(FP), AL JMP countbodyCase<>(SB) count: MOVB c+16(FP), AL JMP countbody<>(SB) // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result // This function requires the POPCNT instruction. TEXT countbodyCase<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. ORL $32, AX // Convert byte to lowercase MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 // Add space (' ') mask to X2 // TODO: can we use a larger constant? MOVQ $32, CX MOVQ CX, X2 PUNPCKLBW X2, X2 PUNPCKLBW X2, X2 PSHUFL $0, X2, X2 CMPQ BX, $16 JLT small MOVQ $0, R12 // Accumulator MOVQ SI, DI CMPQ BX, $64 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Logical OR to convert data to lowercase POR X2, X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Count number of matching bytes POPCNTL DX, DX // Accumulate into R12 ADDQ DX, R12 // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JBE sseloop // Get the number of bytes to consider in the last 16 bytes ANDQ $15, BX JZ end // Create mask to ignore overlap between previous 16 byte block // and the next. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Process the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched so we need to mask part of it. MOVOU (AX), X1 POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX ADDQ DX, R12 end: MOVQ R12, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ endzero // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage // We must ignore high bytes as they aren't part of our slice. // Create mask. MOVB BX, CX MOVQ $1, R10 SALQ CL, R10 SUBQ $1, R10 // Load data MOVOU (SI), X1 // Convert data to lowercase POR X2, X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. MOVQ DX, (R8) RET endzero: MOVQ $0, (R8) RET endofpage: // We must ignore low bytes as they aren't part of our slice. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Load data into the high end of X1. MOVOU -16(SI)(BX*1), X1 // Convert data to lowercase POR X2, X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. POPCNTL DX, DX MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif // Create a mask in Y6 that converts text to upper case. VPBROADCASTB X2, Y6 MOVD AX, X0 LEAQ -64(SI)(BX*1), R11 LEAQ (SI)(BX*1), R13 VPBROADCASTB X0, Y1 avx2_loop: VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPOR Y6, Y2, Y2 // Convert data to lowercase VPOR Y6, Y4, Y4 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX POPCNTL DX, DX POPCNTL CX, CX ADDQ DX, R12 ADDQ CX, R12 ADDQ $64, DI CMPQ DI, R11 JLE avx2_loop // If last block is already processed, // skip to the end. // // This check is NOT an optimization; if the input length is a // multiple of 64, we must not go through the last leg of the // function because the bit shift count passed to SALQ below would // be 64, which is outside of the 0-63 range supported by those // instructions. // // Tests in the bytes and strings packages with input lengths that // are multiples of 64 will break if this condition were removed. CMPQ DI, R13 JEQ endavx // Load address of the last 64 bytes. // There is an overlap with the previous block. MOVQ R11, DI VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPOR Y6, Y2, Y2 // Convert data to lowercase VPOR Y6, Y4, Y4 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX // Exit AVX mode. VZEROUPPER SALQ $32, CX ORQ CX, DX // Create mask to ignore overlap between previous 64 byte block // and the next. ANDQ $63, BX MOVQ $64, CX SUBQ BX, CX MOVQ $0xFFFFFFFFFFFFFFFF, R10 SALQ CL, R10 // Apply mask ANDQ R10, DX POPCNTQ DX, DX ADDQ DX, R12 MOVQ R12, (R8) RET endavx: // Exit AVX mode. VZEROUPPER MOVQ R12, (R8) RET // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result // This function requires the POPCNT instruction. TEXT countbody<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 CMPQ BX, $16 JLT small MOVQ $0, R12 // Accumulator MOVQ SI, DI CMPQ BX, $64 JAE avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Count number of matching bytes POPCNTL DX, DX // Accumulate into R12 ADDQ DX, R12 // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JBE sseloop // Get the number of bytes to consider in the last 16 bytes ANDQ $15, BX JZ end // Create mask to ignore overlap between previous 16 byte block // and the next. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Process the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched so we need to mask part of it. MOVOU (AX), X1 PCMPEQB X0, X1 PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX ADDQ DX, R12 end: MOVQ R12, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ endzero // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage // We must ignore high bytes as they aren't part of our slice. // Create mask. MOVB BX, CX MOVQ $1, R10 SALQ CL, R10 SUBQ $1, R10 // Load data MOVOU (SI), X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. MOVQ DX, (R8) RET endzero: MOVQ $0, (R8) RET endofpage: // We must ignore low bytes as they aren't part of our slice. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Load data into the high end of X1. MOVOU -16(SI)(BX*1), X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. POPCNTL DX, DX MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif MOVD AX, X0 LEAQ -64(SI)(BX*1), R11 LEAQ (SI)(BX*1), R13 VPBROADCASTB X0, Y1 avx2_loop: VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX POPCNTL DX, DX POPCNTL CX, CX ADDQ DX, R12 ADDQ CX, R12 ADDQ $64, DI CMPQ DI, R11 JLE avx2_loop // If last block is already processed, // skip to the end. // // This check is NOT an optimization; if the input length is a // multiple of 64, we must not go through the last leg of the // function because the bit shift count passed to SALQ below would // be 64, which is outside of the 0-63 range supported by those // instructions. // // Tests in the bytes and strings packages with input lengths that // are multiples of 64 will break if this condition were removed. CMPQ DI, R13 JEQ endavx // Load address of the last 64 bytes. // There is an overlap with the previous block. MOVQ R11, DI VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX // Exit AVX mode. VZEROUPPER SALQ $32, CX ORQ CX, DX // Create mask to ignore overlap between previous 64 byte block // and the next. ANDQ $63, BX MOVQ $64, CX SUBQ BX, CX MOVQ $0xFFFFFFFFFFFFFFFF, R10 SALQ CL, R10 // Apply mask ANDQ R10, DX POPCNTQ DX, DX ADDQ DX, R12 MOVQ R12, (R8) RET endavx: // Exit AVX mode. VZEROUPPER MOVQ R12, (R8) RET strcase-0.0.5/internal/bytealg/count_arm64.s 0000664 0000000 0000000 00000010754 14720254634 0020766 0 ustar 00root root 0000000 0000000 //go:build arm64 && !go1.22 // +build arm64,!go1.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. #include "go_asm.h" #include "textflag.h" TEXT ·Count(SB), NOSPLIT, $0-40 MOVD b_base+0(FP), R0 MOVD b_len+8(FP), R2 MOVBU c+24(FP), R1 MOVD $ret+32(FP), R8 // Test if c is a letter. SUB $65, R1, R3 CMPW $25, R3 BLS index_case // c is a letter SUB $97, R1, R3 CMPW $25, R3 BHI index // c is a letter index_case: B countbytebodyCase<>(SB) index: B countbytebody<>(SB) TEXT ·CountString(SB), NOSPLIT, $0-32 MOVD s_base+0(FP), R0 MOVD s_len+8(FP), R2 MOVBU c+16(FP), R1 MOVD $ret+24(FP), R8 // Test if c is a letter. SUB $65, R1, R3 CMPW $25, R3 BLS index_case // c is a letter SUB $97, R1, R3 CMPW $25, R3 BHI index // c is not a letter index_case: B countbytebodyCase<>(SB) index: B countbytebody<>(SB) // input: // R0: data // R2: data len // R1: byte to find // R8: address to put result TEXT countbytebodyCase<>(SB), NOSPLIT, $0 // R11 = count of byte to search MOVD $0, R11 // short path to handle 0-byte case CBZ R2, done CMP $0x20, R2 // Convert byte being searched for to lowercase. ORR $32, R1, R1 // Bit mask to convert upper-case chars to lower-case. VMOVQ $0x2020202020202020, $0x2020202020202020, V9 // jump directly to tail if length < 32 BLO tail ANDS $0x1f, R0, R9 BEQ chunk // Work with not 32-byte aligned head BIC $0x1f, R0, R3 ADD $0x20, R3 head_loop: MOVBU.P 1(R0), R5 CMP R5, R1 CINC EQ, R11, R11 SUB $1, R2, R2 CMP R0, R3 BNE head_loop // Work with 32-byte aligned chunks chunk: BIC $0x1f, R2, R9 // The first chunk can also be the last CBZ R9, tail // R3 = end of 32-byte chunks ADD R0, R9, R3 MOVD $1, R5 VMOV R5, V5.B16 // R2 = length of tail SUB R9, R2, R2 // Duplicate R1 (byte to search) to 16 1-byte elements of V0 VMOV R1, V0.B16 // Clear the low 64-bit element of V7 and V8 VEOR V7.B8, V7.B8, V7.B8 VEOR V8.B8, V8.B8, V8.B8 // Count the target byte in 32-byte chunk chunk_loop: VLD1.P (R0), [V1.B16, V2.B16] VORR V9.B16, V1.B16, V1.B16 // Convert to lowercase VORR V9.B16, V2.B16, V2.B16 // Convert to lowercase CMP R0, R3 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 // Clear the higher 7 bits VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 // Count lanes match the requested byte VADDP V4.B16, V3.B16, V6.B16 // 32B->16B VUADDLV V6.B16, V7 // Accumulate the count in low 64-bit element of V8 when inside the loop VADD V7, V8 BNE chunk_loop VMOV V8.D[0], R6 ADD R6, R11, R11 CBZ R2, done tail: // Work with tail shorter than 32 bytes MOVBU.P 1(R0), R5 ORR $32, R5, R5 // Convert to lowercase SUB $1, R2, R2 CMP R5, R1 CINC EQ, R11, R11 CBNZ R2, tail done: MOVD R11, (R8) RET // input: // R0: data // R2: data len // R1: byte to find // R8: address to put result TEXT countbytebody<>(SB), NOSPLIT, $0 // R11 = count of byte to search MOVD $0, R11 // short path to handle 0-byte case CBZ R2, done CMP $0x20, R2 // jump directly to tail if length < 32 BLO tail ANDS $0x1f, R0, R9 BEQ chunk // Work with not 32-byte aligned head BIC $0x1f, R0, R3 ADD $0x20, R3 head_loop: MOVBU.P 1(R0), R5 CMP R5, R1 CINC EQ, R11, R11 SUB $1, R2, R2 CMP R0, R3 BNE head_loop // Work with 32-byte aligned chunks chunk: BIC $0x1f, R2, R9 // The first chunk can also be the last CBZ R9, tail // R3 = end of 32-byte chunks ADD R0, R9, R3 MOVD $1, R5 VMOV R5, V5.B16 // R2 = length of tail SUB R9, R2, R2 // Duplicate R1 (byte to search) to 16 1-byte elements of V0 VMOV R1, V0.B16 // Clear the low 64-bit element of V7 and V8 VEOR V7.B8, V7.B8, V7.B8 VEOR V8.B8, V8.B8, V8.B8 // Count the target byte in 32-byte chunk chunk_loop: VLD1.P (R0), [V1.B16, V2.B16] CMP R0, R3 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 // Clear the higher 7 bits VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 // Count lanes match the requested byte VADDP V4.B16, V3.B16, V6.B16 // 32B->16B VUADDLV V6.B16, V7 // Accumulate the count in low 64-bit element of V8 when inside the loop VADD V7, V8 BNE chunk_loop VMOV V8.D[0], R6 ADD R6, R11, R11 CBZ R2, done tail: // Work with tail shorter than 32 bytes MOVBU.P 1(R0), R5 SUB $1, R2, R2 CMP R5, R1 CINC EQ, R11, R11 CBNZ R2, tail done: MOVD R11, (R8) RET strcase-0.0.5/internal/bytealg/count_generic.go 0000664 0000000 0000000 00000001657 14720254634 0021616 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. //go:build !s390x && !ppc64 && !amd64 && !arm64 // +build !s390x,!ppc64,!amd64,!arm64 // NOTE(cev): See the comment in indexbyte_simd.go for how the list of GOARCH // build tags was created (note: wasm is included here because it lacks an // assembly implementation of Count). package bytealg func Count(b []byte, c byte) int { if 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' { n := 0 c |= ' ' for _, cc := range b { if cc|' ' == c { n++ } } return n } n := 0 for _, x := range b { if x == c { n++ } } return n } func CountString(s string, c byte) int { if 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' { n := 0 c |= ' ' for i := 0; i < len(s); i++ { if s[i]|' ' == c { n++ } } return n } n := 0 for i := 0; i < len(s); i++ { if s[i] == c { n++ } } return n } strcase-0.0.5/internal/bytealg/count_go122_amd64.s 0000664 0000000 0000000 00000024220 14720254634 0021653 0 ustar 00root root 0000000 0000000 //go:build amd64 && go1.22 // +build amd64,go1.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. #include "go_asm.h" #include "asm_amd64.h" #include "textflag.h" TEXT ·Count(SB), NOSPLIT, $0-40 #ifndef hasPOPCNT CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasPOPCNT(SB), $1 JEQ 2(PC) JMP ·countGeneric(SB) #endif MOVQ b_base+0(FP), SI MOVQ b_len+8(FP), BX MOVB c+24(FP), AL LEAQ ret+32(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS count_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI count count_case: MOVB c+24(FP), AL JMP countbodyCase<>(SB) count: MOVB c+24(FP), AL JMP countbody<>(SB) TEXT ·CountString(SB), NOSPLIT, $0-32 #ifndef hasPOPCNT CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasPOPCNT(SB), $1 JEQ 2(PC) JMP ·countGenericString(SB) #endif MOVQ s_base+0(FP), SI MOVQ s_len+8(FP), BX MOVB c+16(FP), AL LEAQ ret+24(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS count_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI count count_case: MOVB c+16(FP), AL JMP countbodyCase<>(SB) count: MOVB c+16(FP), AL JMP countbody<>(SB) // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result // This function requires the POPCNT instruction. TEXT countbodyCase<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. ORL $32, AX // Convert byte to lowercase MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 // Add space (' ') mask to X2 MOVQ $32, CX MOVQ CX, X2 PUNPCKLBW X2, X2 PUNPCKLBW X2, X2 PSHUFL $0, X2, X2 CMPQ BX, $16 JLT small MOVQ $0, R12 // Accumulator MOVQ SI, DI CMPQ BX, $64 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry PCALIGN $16 sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Logical OR to convert data to lowercase POR X2, X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Count number of matching bytes POPCNTL DX, DX // Accumulate into R12 ADDQ DX, R12 // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JBE sseloop // Get the number of bytes to consider in the last 16 bytes ANDQ $15, BX JZ end // Create mask to ignore overlap between previous 16 byte block // and the next. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Process the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched so we need to mask part of it. MOVOU (AX), X1 POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX ADDQ DX, R12 end: MOVQ R12, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ endzero // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage // We must ignore high bytes as they aren't part of our slice. // Create mask. MOVB BX, CX MOVQ $1, R10 SALQ CL, R10 SUBQ $1, R10 // Load data MOVOU (SI), X1 // Convert data to lowercase POR X2, X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. MOVQ DX, (R8) RET endzero: MOVQ $0, (R8) RET endofpage: // We must ignore low bytes as they aren't part of our slice. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Load data into the high end of X1. MOVOU -16(SI)(BX*1), X1 // Convert data to lowercase POR X2, X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. POPCNTL DX, DX MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif // Create a mask in Y6 that converts text to upper case. VPBROADCASTB X2, Y6 MOVD AX, X0 LEAQ -64(SI)(BX*1), R11 LEAQ (SI)(BX*1), R13 VPBROADCASTB X0, Y1 PCALIGN $32 avx2_loop: VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPOR Y6, Y2, Y2 // Convert data to lowercase VPOR Y6, Y4, Y4 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX POPCNTL DX, DX POPCNTL CX, CX ADDQ DX, R12 ADDQ CX, R12 ADDQ $64, DI CMPQ DI, R11 JLE avx2_loop // If last block is already processed, // skip to the end. // // This check is NOT an optimization; if the input length is a // multiple of 64, we must not go through the last leg of the // function because the bit shift count passed to SALQ below would // be 64, which is outside of the 0-63 range supported by those // instructions. // // Tests in the bytes and strings packages with input lengths that // are multiples of 64 will break if this condition were removed. CMPQ DI, R13 JEQ endavx // Load address of the last 64 bytes. // There is an overlap with the previous block. MOVQ R11, DI VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPOR Y6, Y2, Y2 // Convert data to lowercase VPOR Y6, Y4, Y4 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX // Exit AVX mode. VZEROUPPER SALQ $32, CX ORQ CX, DX // Create mask to ignore overlap between previous 64 byte block // and the next. ANDQ $63, BX MOVQ $64, CX SUBQ BX, CX MOVQ $0xFFFFFFFFFFFFFFFF, R10 SALQ CL, R10 // Apply mask ANDQ R10, DX POPCNTQ DX, DX ADDQ DX, R12 MOVQ R12, (R8) RET endavx: // Exit AVX mode. VZEROUPPER MOVQ R12, (R8) RET // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result // This function requires the POPCNT instruction. TEXT countbody<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 CMPQ BX, $16 JLT small MOVQ $0, R12 // Accumulator MOVQ SI, DI CMPQ BX, $64 JAE avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry PCALIGN $16 sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Count number of matching bytes POPCNTL DX, DX // Accumulate into R12 ADDQ DX, R12 // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JBE sseloop // Get the number of bytes to consider in the last 16 bytes ANDQ $15, BX JZ end // Create mask to ignore overlap between previous 16 byte block // and the next. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Process the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched so we need to mask part of it. MOVOU (AX), X1 PCMPEQB X0, X1 PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX ADDQ DX, R12 end: MOVQ R12, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ endzero // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage // We must ignore high bytes as they aren't part of our slice. // Create mask. MOVB BX, CX MOVQ $1, R10 SALQ CL, R10 SUBQ $1, R10 // Load data MOVOU (SI), X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX POPCNTL DX, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. MOVQ DX, (R8) RET endzero: MOVQ $0, (R8) RET endofpage: // We must ignore low bytes as they aren't part of our slice. MOVQ $16, CX SUBQ BX, CX MOVQ $0xFFFF, R10 SARQ CL, R10 SALQ CL, R10 // Load data into the high end of X1. MOVOU -16(SI)(BX*1), X1 // Compare target byte with each byte in data. PCMPEQB X0, X1 // Move result bits to integer register. PMOVMSKB X1, DX // Apply mask ANDQ R10, DX // Directly return DX, we don't need to accumulate // since we have <16 bytes. POPCNTL DX, DX MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif MOVD AX, X0 LEAQ -64(SI)(BX*1), R11 LEAQ (SI)(BX*1), R13 VPBROADCASTB X0, Y1 PCALIGN $32 avx2_loop: VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX POPCNTL DX, DX POPCNTL CX, CX ADDQ DX, R12 ADDQ CX, R12 ADDQ $64, DI CMPQ DI, R11 JLE avx2_loop // If last block is already processed, // skip to the end. // // This check is NOT an optimization; if the input length is a // multiple of 64, we must not go through the last leg of the // function because the bit shift count passed to SALQ below would // be 64, which is outside of the 0-63 range supported by those // instructions. // // Tests in the bytes and strings packages with input lengths that // are multiples of 64 will break if this condition were removed. CMPQ DI, R13 JEQ endavx // Load address of the last 64 bytes. // There is an overlap with the previous block. MOVQ R11, DI VMOVDQU (DI), Y2 VMOVDQU 32(DI), Y4 VPCMPEQB Y1, Y2, Y3 VPCMPEQB Y1, Y4, Y5 VPMOVMSKB Y3, DX VPMOVMSKB Y5, CX // Exit AVX mode. VZEROUPPER SALQ $32, CX ORQ CX, DX // Create mask to ignore overlap between previous 64 byte block // and the next. ANDQ $63, BX MOVQ $64, CX SUBQ BX, CX MOVQ $0xFFFFFFFFFFFFFFFF, R10 SALQ CL, R10 // Apply mask ANDQ R10, DX POPCNTQ DX, DX ADDQ DX, R12 MOVQ R12, (R8) RET endavx: // Exit AVX mode. VZEROUPPER MOVQ R12, (R8) RET strcase-0.0.5/internal/bytealg/count_go122_arm64.s 0000664 0000000 0000000 00000011072 14720254634 0021672 0 ustar 00root root 0000000 0000000 //go:build arm64 && go1.22 // +build arm64,go1.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. #include "go_asm.h" #include "textflag.h" TEXT ·Count(SB), NOSPLIT, $0-40 MOVD b_base+0(FP), R0 MOVD b_len+8(FP), R2 MOVBU c+24(FP), R1 MOVD $ret+32(FP), R8 // Test if c is a letter. SUB $65, R1, R3 CMPW $25, R3 BLS index_case // c is a letter SUB $97, R1, R3 CMPW $25, R3 BHI index // c is a letter index_case: B countbytebodyCase<>(SB) index: B countbytebody<>(SB) TEXT ·CountString(SB), NOSPLIT, $0-32 MOVD s_base+0(FP), R0 MOVD s_len+8(FP), R2 MOVBU c+16(FP), R1 MOVD $ret+24(FP), R8 // Test if c is a letter. SUB $65, R1, R3 CMPW $25, R3 BLS index_case // c is a letter SUB $97, R1, R3 CMPW $25, R3 BHI index // c is not a letter index_case: B countbytebodyCase<>(SB) index: B countbytebody<>(SB) // input: // R0: data // R2: data len // R1: byte to find // R8: address to put result TEXT countbytebodyCase<>(SB), NOSPLIT, $0 // R11 = count of byte to search MOVD $0, R11 // short path to handle 0-byte case CBZ R2, done CMP $0x20, R2 // Convert byte being searched for to lowercase. ORR $32, R1, R1 // Bit mask to convert upper-case chars to lower-case. VMOVQ $0x2020202020202020, $0x2020202020202020, V9 // jump directly to tail if length < 32 BLO tail ANDS $0x1f, R0, R9 BEQ chunk // Work with not 32-byte aligned head BIC $0x1f, R0, R3 ADD $0x20, R3 PCALIGN $16 head_loop: MOVBU.P 1(R0), R5 CMP R5, R1 CINC EQ, R11, R11 SUB $1, R2, R2 CMP R0, R3 BNE head_loop // Work with 32-byte aligned chunks chunk: BIC $0x1f, R2, R9 // The first chunk can also be the last CBZ R9, tail // R3 = end of 32-byte chunks ADD R0, R9, R3 MOVD $1, R5 VMOV R5, V5.B16 // R2 = length of tail SUB R9, R2, R2 // Duplicate R1 (byte to search) to 16 1-byte elements of V0 VMOV R1, V0.B16 // Clear the low 64-bit element of V7 and V8 VEOR V7.B8, V7.B8, V7.B8 VEOR V8.B8, V8.B8, V8.B8 PCALIGN $16 // Count the target byte in 32-byte chunk chunk_loop: VLD1.P (R0), [V1.B16, V2.B16] VORR V9.B16, V1.B16, V1.B16 // Convert to lowercase VORR V9.B16, V2.B16, V2.B16 // Convert to lowercase CMP R0, R3 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 // Clear the higher 7 bits VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 // Count lanes match the requested byte VADDP V4.B16, V3.B16, V6.B16 // 32B->16B VUADDLV V6.B16, V7 // Accumulate the count in low 64-bit element of V8 when inside the loop VADD V7, V8 BNE chunk_loop VMOV V8.D[0], R6 ADD R6, R11, R11 CBZ R2, done tail: // Work with tail shorter than 32 bytes MOVBU.P 1(R0), R5 ORR $32, R5, R5 // Convert to lowercase SUB $1, R2, R2 CMP R5, R1 CINC EQ, R11, R11 CBNZ R2, tail done: MOVD R11, (R8) RET // input: // R0: data // R2: data len // R1: byte to find // R8: address to put result TEXT countbytebody<>(SB), NOSPLIT, $0 // R11 = count of byte to search MOVD $0, R11 // short path to handle 0-byte case CBZ R2, done CMP $0x20, R2 // jump directly to tail if length < 32 BLO tail ANDS $0x1f, R0, R9 BEQ chunk // Work with not 32-byte aligned head BIC $0x1f, R0, R3 ADD $0x20, R3 PCALIGN $16 head_loop: MOVBU.P 1(R0), R5 CMP R5, R1 CINC EQ, R11, R11 SUB $1, R2, R2 CMP R0, R3 BNE head_loop // Work with 32-byte aligned chunks chunk: BIC $0x1f, R2, R9 // The first chunk can also be the last CBZ R9, tail // R3 = end of 32-byte chunks ADD R0, R9, R3 MOVD $1, R5 VMOV R5, V5.B16 // R2 = length of tail SUB R9, R2, R2 // Duplicate R1 (byte to search) to 16 1-byte elements of V0 VMOV R1, V0.B16 // Clear the low 64-bit element of V7 and V8 VEOR V7.B8, V7.B8, V7.B8 VEOR V8.B8, V8.B8, V8.B8 PCALIGN $16 // Count the target byte in 32-byte chunk chunk_loop: VLD1.P (R0), [V1.B16, V2.B16] CMP R0, R3 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 // Clear the higher 7 bits VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 // Count lanes match the requested byte VADDP V4.B16, V3.B16, V6.B16 // 32B->16B VUADDLV V6.B16, V7 // Accumulate the count in low 64-bit element of V8 when inside the loop VADD V7, V8 BNE chunk_loop VMOV V8.D[0], R6 ADD R6, R11, R11 CBZ R2, done tail: // Work with tail shorter than 32 bytes MOVBU.P 1(R0), R5 SUB $1, R2, R2 CMP R5, R1 CINC EQ, R11, R11 CBNZ R2, tail done: MOVD R11, (R8) RET strcase-0.0.5/internal/bytealg/count_simd.go 0000664 0000000 0000000 00000001404 14720254634 0021124 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. //go:build s390x || ppc64 // +build s390x ppc64 // NOTE(cev): See the comment in indexbyte_simd.go for how the list of GOARCH // build tags was created (note: wasm is excluded here because it lacks an // assembly implementation of Count). package bytealg import ( "bytes" "strings" ) func Count(b []byte, c byte) int { s := []byte{c} if !isAlpha(c) { return bytes.Count(b, s) } n := bytes.Count(b, s) s[0] ^= ' ' // swap case return n + bytes.Count(b, s) } func CountString(s string, c byte) int { if !isAlpha(c) { return strings.Count(s, string(c)) } return strings.Count(s, string(c)) + strings.Count(s, string(c^' ')) // swap case } strcase-0.0.5/internal/bytealg/count_test.go 0000664 0000000 0000000 00000001604 14720254634 0021151 0 ustar 00root root 0000000 0000000 package bytealg import ( "strings" "testing" ) var CountTests = []struct { s string sep byte num int }{ {"12345678987654321", '6', 2}, {"611161116", '6', 3}, {"11111", '1', 5}, {"aBaB", 'a', 2}, {"ABAB", 'a', 2}, {strings.Repeat("AB", 256), 'a', 256}, {strings.Repeat("ab", 256), 'A', 256}, } func TestCount(t *testing.T) { for _, tt := range CountTests { if num := CountString(tt.s, tt.sep); num != tt.num { t.Errorf("Count(%q, %q) = %d, want %d", tt.s, tt.sep, num, tt.num) } } } func TestCountHard(t *testing.T) { s := strings.Repeat("AB", 32*1024) lower := strings.Repeat("ab", 32*1024) n := 0 for i := 0; i < len(s); i += 7 { want := strings.Count(lower[:i], "a") got := CountString(s[:i], 'a') if got != want { if n < 30 { t.Errorf("%d: want: %d got: %d", i, want, got) } n++ } } if n > 0 { t.Errorf("Failed %d/%d tests", n, len(s)) } } strcase-0.0.5/internal/bytealg/go.LICENSE 0000664 0000000 0000000 00000002707 14720254634 0020051 0 ustar 00root root 0000000 0000000 Copyright (c) 2009 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. strcase-0.0.5/internal/bytealg/index_generic.go 0000664 0000000 0000000 00000001533 14720254634 0021566 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. //go:build !amd64 && !arm64 && !s390x && !ppc64le && !ppc64 package bytealg import _ "unsafe" // NativeIndex is true if we have a fast native (assembly) implementation // of Index and IndexString. Otherwise, bytes.Index and strings.Index are used. const NativeIndex = false //go:linkname MaxBruteForce internal/bytealg.MaxBruteForce var MaxBruteForce int // Cutover reports the number of failures of IndexByte we should tolerate // before switching over to Index. // n is the number of bytes processed so far. // See the bytes.Index implementation for details. func Cutover(n int) int { panic("unimplemented") } func Index(s, sep []byte) int { panic("unimplemented") } func IndexString(s, substr string) int { panic("unimplemented") } strcase-0.0.5/internal/bytealg/index_native.go 0000664 0000000 0000000 00000002500 14720254634 0021433 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. //go:build amd64 || arm64 || s390x || ppc64le || ppc64 package bytealg import ( "runtime" _ "unsafe" ) // NativeIndex is true if we have a fast native (assembly) implementation // of Index and IndexString. Otherwise bytes.Index and strings.Index are used. const NativeIndex = true // TODO: remove if not used. // //go:linkname MaxBruteForce internal/bytealg.MaxBruteForce var MaxBruteForce int // Cutover reports the number of failures of IndexByte we should tolerate // before switching over to Index. // n is the number of bytes processed so far. // See the bytes.Index implementation for details. // // Implemented here instead of linked to internal/bytealg.Cutover since this // is a hot function and we want it to be inlined. // // NOTE: This needs to be kept up-to-date with internal/bytealg.Cutover. func Cutover(n int) int { if runtime.GOARCH == "arm64" { // 1 error per 16 characters, plus a few slop to start. return 4 + n>>4 } // 1 error per 8 characters, plus a few slop to start. return (n + 16) / 8 } //go:noescape //go:linkname Index internal/bytealg.Index func Index(s, substr []byte) int //go:noescape //go:linkname IndexString internal/bytealg.IndexString func IndexString(s, substr string) int strcase-0.0.5/internal/bytealg/index_non_ascii_amd64.s 0000664 0000000 0000000 00000006731 14720254634 0022751 0 ustar 00root root 0000000 0000000 //go:build amd64 && !go1.22 // +build amd64,!go1.22 #include "go_asm.h" #include "textflag.h" // TODO: can we use popcnt for this ??? TEXT ·IndexByteNonASCII(SB), NOSPLIT, $0-32 MOVQ b_base+0(FP), SI MOVQ b_len+8(FP), BX LEAQ ret+24(FP), R8 JMP indexByteBodyNonASCII<>(SB) TEXT ·IndexNonASCII(SB), NOSPLIT, $0-24 MOVQ s_base+0(FP), SI MOVQ s_len+8(FP), BX LEAQ ret+16(FP), R8 JMP indexByteBodyNonASCII<>(SB) // input: // SI: data // R8: address to put result TEXT indexByteBodyNonASCII<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. MOVQ $0x80, AX MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 CMPQ BX, $16 JLT small MOVQ SI, DI CMPQ BX, $32 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Logical or to check for top-bit (RuneSelf) PAND X1, X0 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Find first set bit, if any. BSFL DX, DX JNZ ssesuccess // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JB sseloop // Search the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched, but that's ok. MOVQ AX, DI MOVOU (AX), X1 PAND X1, X0 // Check if RuneSelf is set PMOVMSKB X1, DX BSFL DX, DX JNZ ssesuccess failure: MOVQ $-1, (R8) RET // We've found a chunk containing the byte. // The chunk was loaded from DI. // The index of the matching byte in the chunk is DX. // The start of the data is SI. ssesuccess: SUBQ SI, DI // Compute offset of chunk within data. ADDQ DX, DI // Add offset of byte within chunk. MOVQ DI, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ failure // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage MOVOU (SI), X1 // Load data PAND X1, X0 // Check if RuneSelf is set PMOVMSKB X1, DX // Move result bits to integer register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. CMPL DX, BX JAE failure // Match is past end of data. MOVQ DX, (R8) RET endofpage: MOVOU -16(SI)(BX*1), X1 // Load data into the high end of X1. PAND X1, X0 // Check if RuneSelf is set PMOVMSKB X1, DX // Move result bits to integer register. MOVL BX, CX SHLL CX, DX SHRL $16, DX // Shift desired bits down to bottom of register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif // Create a mask in Y4 that to check for 0x80 MOVD AX, X0 // $0x80 already stored in AX VPBROADCASTB X0, Y4 MOVD AX, X0 LEAQ -32(SI)(BX*1), R11 VPBROADCASTB X0, Y1 avx2_loop: VMOVDQU (DI), Y2 VPAND Y4, Y2, Y2 // AND for top bit 0x80 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success ADDQ $32, DI CMPQ DI, R11 JLT avx2_loop MOVQ R11, DI VMOVDQU (DI), Y2 VPAND Y4, Y2, Y2 // AND for top bit 0x80 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success VZEROUPPER MOVQ $-1, (R8) RET avx2success: VPMOVMSKB Y3, DX BSFL DX, DX SUBQ SI, DI ADDQ DI, DX MOVQ DX, (R8) VZEROUPPER RET strcase-0.0.5/internal/bytealg/index_non_ascii_arm64.s 0000664 0000000 0000000 00000006446 14720254634 0022772 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. // The following code is modified version of the standard library's // internal/bytealg/indexbyte_armd64.s the Go LICENSE can be found in // the go.LICENSE file. #include "textflag.h" TEXT ·IndexNonASCII(SB), NOSPLIT, $0-24 MOVD s_base+0(FP), R0 MOVD s_len+8(FP), R2 MOVD $ret+16(FP), R8 B indexByteBodyNonASCII<>(SB) TEXT ·IndexByteNonASCII(SB), NOSPLIT, $0-32 MOVD b_base+0(FP), R0 MOVD b_len+8(FP), R2 MOVD $ret+24(FP), R8 B indexByteBodyNonASCII<>(SB) // input: // R0: data // R2: data len // R8: address to put result TEXT indexByteBodyNonASCII<>(SB), NOSPLIT, $0 CBZ R2, fail MOVD R0, R11 // Magic constant 0x40100401 allows us to identify // which lane matches the requested byte. // 0x40100401 = ((1<<0) + (4<<8) + (16<<16) + (64<<24)) // Different bytes have different bit masks (i.e: 1, 4, 16, 64) MOVD $0x40100401, R5 // Bit mask for RuneSelf (0x80) VMOVQ $0x8080808080808080, $0x8080808080808080, V0 // Work with aligned 32-byte chunks BIC $0x1f, R0, R3 VMOV R5, V5.S4 ANDS $0x1f, R0, R9 AND $0x1f, R2, R10 BEQ loop // Input string is not 32-byte aligned. We calculate the // syndrome value for the aligned 32 bytes block containing // the first bytes and mask off the irrelevant part. VLD1.P (R3), [V1.B16, V2.B16] VAND V0.B16, V1.B16, V1.B16 // Check for RuneSelf VAND V0.B16, V2.B16, V2.B16 // Check for RuneSelf SUB $0x20, R9, R4 ADDS R4, R2, R2 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 VADDP V4.B16, V3.B16, V6.B16 // 256->128 VADDP V6.B16, V6.B16, V6.B16 // 128->64 VMOV V6.D[0], R6 // Clear the irrelevant lower bits LSL $1, R9, R4 LSR R4, R6, R6 LSL R4, R6, R6 // The first block can also be the last BLS masklast // Have we found something already? CBNZ R6, tail loop: VLD1.P (R3), [V1.B16, V2.B16] SUBS $0x20, R2, R2 VAND V0.B16, V1.B16, V1.B16 // Check for RuneSelf VAND V0.B16, V2.B16, V2.B16 // Check for RuneSelf VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 // If we're out of data we finish regardless of the result BLS end // Use a fast check for the termination condition VORR V4.B16, V3.B16, V6.B16 VADDP V6.D2, V6.D2, V6.D2 VMOV V6.D[0], R6 // We're not out of data, loop if we haven't found the character CBZ R6, loop end: // Termination condition found, let's calculate the syndrome value VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 VADDP V4.B16, V3.B16, V6.B16 VADDP V6.B16, V6.B16, V6.B16 VMOV V6.D[0], R6 // Only do the clear for the last possible block with less than 32 bytes // Condition flags come from SUBS in the loop BHS tail masklast: // Clear the irrelevant upper bits ADD R9, R10, R4 AND $0x1f, R4, R4 SUB $0x20, R4, R4 NEG R4<<1, R4 LSL R4, R6, R6 LSR R4, R6, R6 tail: // Check that we have found a character CBZ R6, fail // Count the trailing zeros using bit reversing RBIT R6, R6 // Compensate the last post-increment SUB $0x20, R3, R3 // And count the leading zeros CLZ R6, R6 // R6 is twice the offset into the fragment ADD R6>>1, R3, R0 // Compute the offset result SUB R11, R0, R0 MOVD R0, (R8) RET fail: MOVD $-1, R0 MOVD R0, (R8) RET strcase-0.0.5/internal/bytealg/index_non_ascii_generic.go 0000664 0000000 0000000 00000000544 14720254634 0023611 0 ustar 00root root 0000000 0000000 //go:build !amd64 && !arm64 // +build !amd64,!arm64 package bytealg import "unicode/utf8" func IndexByteNonASCII(b []byte) int { for i := 0; i < len(b); i++ { if b[i]&utf8.RuneSelf != 0 { return i } } return -1 } func IndexNonASCII(s string) int { for i := 0; i < len(s); i++ { if s[i]&utf8.RuneSelf != 0 { return i } } return -1 } strcase-0.0.5/internal/bytealg/index_non_ascii_go122_amd64.s 0000664 0000000 0000000 00000006763 14720254634 0023670 0 ustar 00root root 0000000 0000000 //go:build amd64 && go1.22 // +build amd64,go1.22 #include "go_asm.h" #include "textflag.h" // TODO: can we use popcnt for this ??? TEXT ·IndexByteNonASCII(SB), NOSPLIT, $0-32 MOVQ b_base+0(FP), SI MOVQ b_len+8(FP), BX LEAQ ret+24(FP), R8 JMP indexByteBodyNonASCII<>(SB) TEXT ·IndexNonASCII(SB), NOSPLIT, $0-24 MOVQ s_base+0(FP), SI MOVQ s_len+8(FP), BX LEAQ ret+16(FP), R8 JMP indexByteBodyNonASCII<>(SB) // input: // SI: data // R8: address to put result TEXT indexByteBodyNonASCII<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. MOVQ $0x80, AX MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 CMPQ BX, $16 JLT small MOVQ SI, DI CMPQ BX, $32 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry PCALIGN $16 sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Logical or to check for top-bit (RuneSelf) PAND X1, X0 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Find first set bit, if any. BSFL DX, DX JNZ ssesuccess // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JB sseloop // Search the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched, but that's ok. MOVQ AX, DI MOVOU (AX), X1 PAND X1, X0 // Check if RuneSelf is set PMOVMSKB X1, DX BSFL DX, DX JNZ ssesuccess failure: MOVQ $-1, (R8) RET // We've found a chunk containing the byte. // The chunk was loaded from DI. // The index of the matching byte in the chunk is DX. // The start of the data is SI. ssesuccess: SUBQ SI, DI // Compute offset of chunk within data. ADDQ DX, DI // Add offset of byte within chunk. MOVQ DI, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ failure // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage MOVOU (SI), X1 // Load data PAND X1, X0 // Check if RuneSelf is set PMOVMSKB X1, DX // Move result bits to integer register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. CMPL DX, BX JAE failure // Match is past end of data. MOVQ DX, (R8) RET endofpage: MOVOU -16(SI)(BX*1), X1 // Load data into the high end of X1. PAND X1, X0 // Check if RuneSelf is set PMOVMSKB X1, DX // Move result bits to integer register. MOVL BX, CX SHLL CX, DX SHRL $16, DX // Shift desired bits down to bottom of register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif // Create a mask in Y4 that to check for 0x80 MOVD AX, X0 // $0x80 already stored in AX VPBROADCASTB X0, Y4 MOVD AX, X0 LEAQ -32(SI)(BX*1), R11 VPBROADCASTB X0, Y1 PCALIGN $32 avx2_loop: VMOVDQU (DI), Y2 VPAND Y4, Y2, Y2 // AND for top bit 0x80 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success ADDQ $32, DI CMPQ DI, R11 JLT avx2_loop MOVQ R11, DI VMOVDQU (DI), Y2 VPAND Y4, Y2, Y2 // AND for top bit 0x80 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success VZEROUPPER MOVQ $-1, (R8) RET avx2success: VPMOVMSKB Y3, DX BSFL DX, DX SUBQ SI, DI ADDQ DI, DX MOVQ DX, (R8) VZEROUPPER RET strcase-0.0.5/internal/bytealg/index_non_ascii_test.go 0000664 0000000 0000000 00000010056 14720254634 0023153 0 ustar 00root root 0000000 0000000 package bytealg import ( "strings" "testing" "unicode/utf8" ) // These tests fail with strcasestr. var unicodeIndexTests = []IndexTest{ // Map Kelvin 'K' (U+212A) to lowercase latin 'k'. {"abcK@", "k@", 3}, // Map the long 'S' 'ſ' to 'S' and 's'. {"abcſ@", "s@", 3}, {"abcS@", "ſ@", 3}, // Test with a unicode prefix in the substr to make sure the unicode // implementation is correct. {"abc☻K@", "☻k@", 3}, {"abc☻S@", "☻ſ@", 3}, // Sep longer (in bytes) {"a\u212a", "a\u212a", 0}, {"a\u212a", "a\u212a\u212a", -1}, // WARN: fix these {"İ", "İ", 0}, {"İİ", "İİ", 0}, {"İİİİ", "İİ", 0}, {"İİİİİİ", "İİ", 0}, {"0123456789İİ", "İİ", 10}, {"01234567890123456789İİ", "İİ", 20}, {"İİ" + strings.Repeat("a", 64), "İİ" + strings.Repeat("a", 64), 0}, // Tests discovered with fuzzing {"4=K ", "=\u212a", 1}, {"I", "\u0131", -1}, // Evil strings discovered fuzzing. { s: "32ⱭⱭⱭⱭⱭ45678890ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ23456789ⱭⱭⱭⱭⱭⱭⱭⱭⱭⱭ", sep: "0ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ234567890", out: -1, }, { s: "<<\ua7ac\x02\ub680\U0010f410\U0002ac40\n\x15\u2126\ufa12\x14", sep: "<\ua7ac\x02\ub680\U0010f410\U0002ac40\n\x15\u03c9\ufa12", out: 1, }, { s: "\U00024b8a\u2c65I\u7c12\u313a/A\u027d\u017f=\x05", sep: "\U00024b8a\u2c65I\u7c12\u313a/a\u2c64\u017f=", out: 0, }, { s: "\U0002a433\u3577\U000230d6\U001024b4\u73f1\u56f0\U0002d7db\U0010e3ac\U000204ca\u2575~\u8825\U0002ba82\U0002c0e4\u743aK]", sep: "\u743a\u212a", out: 48, }, { s: "z0\U0010640b\U0001f326k-k\U00100621\U000240ff\U000e013fl", sep: "\u212a-\u212a", out: 10, }, { s: "\U0007279d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", sep: "\ufffd\ufffd\ufffd\ufffd\ufffd", out: 4, }, } // TODO: do we need this? func init() { p0 := strings.Repeat("\u212a", 64) p1 := strings.Repeat("K", 64) n := utf8.RuneLen('\u212a') for i := 2; i <= 64; i += 2 { s0 := p0[:i*n] s1 := p1[:i] unicodeIndexTests = append(unicodeIndexTests, IndexTest{s0, s1, 0}, IndexTest{s1, s0, 0}) } } func testIndexNonASCII(t *testing.T, name string, fn func(s string) int) { const maxFailures = 80 index := func(s string) int { for i, r := range s { if r >= utf8.RuneSelf { return i } } return -1 } t.Run("IndexTests", func(t *testing.T) { fails := 0 tests := append([]IndexTest(nil), indexTests...) tests = append(tests, unicodeIndexTests...) for _, test := range tests { want := index(test.s) got := fn(test.s) if got != want { fails++ if fails <= maxFailures { t.Errorf("%s(%q) = %d; want: %d", name, test.s, got, want) } } } if fails > 0 { t.Errorf("Failed: %d/%d", fails, len(tests)) } }) t.Run("LongString", func(t *testing.T) { fails := 0 long := strings.Repeat("a", 4096) + "βaβa" idx := index(long) for i := 0; i < len(long); i++ { s := long[i:] want := idx - i if want < 0 { want = index(s) } got := fn(s) if got != want { fails++ if fails <= maxFailures { t.Errorf("%s(long[%d:]) = %d; want: %d", name, i, got, want) } } } if fails > 0 { t.Errorf("Failed: %d/%d", fails, len(long)) } }) } func TestIndexNonASCII(t *testing.T) { testIndexNonASCII(t, "IndexNonASCII", IndexNonASCII) } func TestIndexByteNonASCII(t *testing.T) { testIndexNonASCII(t, "IndexByteNonASCII", func(s string) int { return IndexByteNonASCII([]byte(s)) }) } func benchIndexNonASCII(b *testing.B, sizes []int, f func(b *testing.B, n int)) { for _, n := range sizes { b.Run(valName(n), func(b *testing.B) { if len(bmbuf) < n { bmbuf = make([]byte, n) } b.SetBytes(int64(n)) f(b, n) }) } } func BenchmarkIndexByteNonASCII(b *testing.B) { benchIndexNonASCII(b, indexSizes, bmIndexNonASCII(IndexByteNonASCII)) } func bmIndexNonASCII(index func([]byte) int) func(b *testing.B, n int) { return func(b *testing.B, n int) { buf := bmbuf[0:n] for i := 0; i < b.N; i++ { _ = index(buf) // Search for uppercase variant } } } strcase-0.0.5/internal/bytealg/indexbyte_amd64.s 0000664 0000000 0000000 00000017206 14720254634 0021612 0 ustar 00root root 0000000 0000000 //go:build amd64 && !go1.22 // +build amd64,!go1.22 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. // The following code is modified version of the standard library's // internal/bytealg/indexbyte_amd64.s the Go LICENSE can be found in // the go.LICENSE file. #include "go_asm.h" #include "textflag.h" TEXT ·IndexByte(SB), NOSPLIT, $0-40 MOVQ b_base+0(FP), SI MOVQ b_len+8(FP), BX MOVB c+24(FP), AL LEAQ ret+32(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS index_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI index index_case: MOVB c+24(FP), AL JMP indexbytebodyCase<>(SB) index: MOVB c+24(FP), AL JMP indexbytebody<>(SB) TEXT ·IndexByteString(SB), NOSPLIT, $0-32 MOVQ s_base+0(FP), SI MOVQ s_len+8(FP), BX MOVB c+16(FP), AL LEAQ ret+24(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS index_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI index index_case: MOVB c+16(FP), AL JMP indexbytebodyCase<>(SB) index: MOVB c+16(FP), AL JMP indexbytebody<>(SB) // indexbytebodyCase is a case insensitive version indexbytebody // the byte being sought *must* be an ASCII letter. // // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result TEXT indexbytebodyCase<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. ORL $32, AX // Convert byte to lowercase MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 // Add space (' ') mask to X2 MOVQ $32, CX MOVQ CX, X2 PUNPCKLBW X2, X2 PUNPCKLBW X2, X2 PSHUFL $0, X2, X2 CMPQ BX, $16 JLT small MOVQ SI, DI CMPQ BX, $32 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Logical OR to convert data to lowercase POR X2, X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Find first set bit, if any. BSFL DX, DX JNZ ssesuccess // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JB sseloop // Search the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched, but that's ok. MOVQ AX, DI MOVOU (AX), X1 POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 PMOVMSKB X1, DX BSFL DX, DX JNZ ssesuccess failure: MOVQ $-1, (R8) RET // We've found a chunk containing the byte. // The chunk was loaded from DI. // The index of the matching byte in the chunk is DX. // The start of the data is SI. ssesuccess: SUBQ SI, DI // Compute offset of chunk within data. ADDQ DX, DI // Add offset of byte within chunk. MOVQ DI, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ failure // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage MOVOU (SI), X1 // Load data POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. CMPL DX, BX JAE failure // Match is past end of data. MOVQ DX, (R8) RET endofpage: MOVOU -16(SI)(BX*1), X1 // Load data into the high end of X1. POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. MOVL BX, CX SHLL CX, DX SHRL $16, DX // Shift desired bits down to bottom of register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif // Create a mask in Y4 that converts text to upper case. VPBROADCASTB X2, Y4 // space ' ' already stored in X2 MOVD AX, X0 LEAQ -32(SI)(BX*1), R11 VPBROADCASTB X0, Y1 avx2_loop: VMOVDQU (DI), Y2 VPOR Y4, Y2, Y2 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success ADDQ $32, DI CMPQ DI, R11 JLT avx2_loop MOVQ R11, DI VMOVDQU (DI), Y2 VPOR Y4, Y2, Y2 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success VZEROUPPER MOVQ $-1, (R8) RET avx2success: VPMOVMSKB Y3, DX BSFL DX, DX SUBQ SI, DI ADDQ DI, DX MOVQ DX, (R8) VZEROUPPER RET // indexbytebody is the same as internal/bytealg/indexbyte_amd64.s (go1.20) // // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result TEXT indexbytebody<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 CMPQ BX, $16 JLT small MOVQ SI, DI CMPQ BX, $32 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Find first set bit, if any. BSFL DX, DX JNZ ssesuccess // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JB sseloop // Search the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched, but that's ok. MOVQ AX, DI MOVOU (AX), X1 PCMPEQB X0, X1 PMOVMSKB X1, DX BSFL DX, DX JNZ ssesuccess failure: MOVQ $-1, (R8) RET // We've found a chunk containing the byte. // The chunk was loaded from DI. // The index of the matching byte in the chunk is DX. // The start of the data is SI. ssesuccess: SUBQ SI, DI // Compute offset of chunk within data. ADDQ DX, DI // Add offset of byte within chunk. MOVQ DI, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ failure // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage MOVOU (SI), X1 // Load data PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. CMPL DX, BX JAE failure // Match is past end of data. MOVQ DX, (R8) RET endofpage: MOVOU -16(SI)(BX*1), X1 // Load data into the high end of X1. PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. MOVL BX, CX SHLL CX, DX SHRL $16, DX // Shift desired bits down to bottom of register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif MOVD AX, X0 LEAQ -32(SI)(BX*1), R11 VPBROADCASTB X0, Y1 avx2_loop: VMOVDQU (DI), Y2 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success ADDQ $32, DI CMPQ DI, R11 JLT avx2_loop MOVQ R11, DI VMOVDQU (DI), Y2 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success VZEROUPPER MOVQ $-1, (R8) RET avx2success: VPMOVMSKB Y3, DX BSFL DX, DX SUBQ SI, DI ADDQ DI, DX MOVQ DX, (R8) VZEROUPPER RET strcase-0.0.5/internal/bytealg/indexbyte_arm64.s 0000664 0000000 0000000 00000016630 14720254634 0021630 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. // The following code is modified version of the standard library's // internal/bytealg/indexbyte_armd64.s the Go LICENSE can be found in // the go.LICENSE file. #include "textflag.h" TEXT ·IndexByte(SB), NOSPLIT, $0-40 MOVD b_base+0(FP), R0 MOVD b_len+8(FP), R2 MOVBU c+24(FP), R1 MOVD $ret+32(FP), R8 // Test if c is a letter. SUB $65, R1, R3 CMPW $25, R3 BLS index_case // c is a letter SUB $97, R1, R3 CMPW $25, R3 BHI index // c is not a letter index_case: B indexbytebodyCase<>(SB) index: B indexbytebody<>(SB) TEXT ·IndexByteString(SB), NOSPLIT, $0-32 MOVD s_base+0(FP), R0 MOVD s_len+8(FP), R2 MOVBU c+16(FP), R1 MOVD $ret+24(FP), R8 // Test if c is a letter. SUB $65, R1, R3 CMPW $25, R3 BLS index_case // c is a letter SUB $97, R1, R3 CMPW $25, R3 BHI index // c is not a letter index_case: B indexbytebodyCase<>(SB) index: B indexbytebody<>(SB) // indexbytebodyCase is a case insensitive version indexbytebody // the byte being sought *must* be an ASCII letter. // // input: // R0: data // R1: byte to search // R2: data len // R8: address to put result TEXT indexbytebodyCase<>(SB), NOSPLIT, $0 // Core algorithm: // For each 32-byte chunk we calculate a 64-bit syndrome value, // with two bits per byte. For each tuple, bit 0 is set if the // relevant byte matched the requested character and bit 1 is // not used (faster than using a 32bit syndrome). Since the bits // in the syndrome reflect exactly the order in which things occur // in the original string, counting trailing zeros allows to // identify exactly which byte has matched. CBZ R2, fail MOVD R0, R11 // Magic constant 0x40100401 allows us to identify // which lane matches the requested byte. // 0x40100401 = ((1<<0) + (4<<8) + (16<<16) + (64<<24)) // Different bytes have different bit masks (i.e: 1, 4, 16, 64) MOVD $0x40100401, R5 // Convert byte being searched for to lowercase. ORR $32, R1, R1 VMOV R1, V0.B16 // Bit mask to convert upper-case chars to lower-case. VMOVQ $0x2020202020202020, $0x2020202020202020, V7 // Work with aligned 32-byte chunks BIC $0x1f, R0, R3 VMOV R5, V5.S4 ANDS $0x1f, R0, R9 AND $0x1f, R2, R10 BEQ loop // Input string is not 32-byte aligned. We calculate the // syndrome value for the aligned 32 bytes block containing // the first bytes and mask off the irrelevant part. VLD1.P (R3), [V1.B16, V2.B16] VORR V7.B16, V1.B16, V1.B16 // Convert to lowercase VORR V7.B16, V2.B16, V2.B16 // Convert to lowercase SUB $0x20, R9, R4 ADDS R4, R2, R2 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 VADDP V4.B16, V3.B16, V6.B16 // 256->128 VADDP V6.B16, V6.B16, V6.B16 // 128->64 VMOV V6.D[0], R6 // Clear the irrelevant lower bits LSL $1, R9, R4 LSR R4, R6, R6 LSL R4, R6, R6 // The first block can also be the last BLS masklast // Have we found something already? CBNZ R6, tail loop: VLD1.P (R3), [V1.B16, V2.B16] SUBS $0x20, R2, R2 VORR V7.B16, V1.B16, V1.B16 // Convert to lowercase VORR V7.B16, V2.B16, V2.B16 // Convert to lowercase VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 // If we're out of data we finish regardless of the result BLS end // Use a fast check for the termination condition VORR V4.B16, V3.B16, V6.B16 VADDP V6.D2, V6.D2, V6.D2 VMOV V6.D[0], R6 // We're not out of data, loop if we haven't found the character CBZ R6, loop end: // Termination condition found, let's calculate the syndrome value VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 VADDP V4.B16, V3.B16, V6.B16 VADDP V6.B16, V6.B16, V6.B16 VMOV V6.D[0], R6 // Only do the clear for the last possible block with less than 32 bytes // Condition flags come from SUBS in the loop BHS tail masklast: // Clear the irrelevant upper bits ADD R9, R10, R4 AND $0x1f, R4, R4 SUB $0x20, R4, R4 NEG R4<<1, R4 LSL R4, R6, R6 LSR R4, R6, R6 tail: // Check that we have found a character CBZ R6, fail // Count the trailing zeros using bit reversing RBIT R6, R6 // Compensate the last post-increment SUB $0x20, R3, R3 // And count the leading zeros CLZ R6, R6 // R6 is twice the offset into the fragment ADD R6>>1, R3, R0 // Compute the offset result SUB R11, R0, R0 MOVD R0, (R8) RET fail: MOVD $-1, R0 MOVD R0, (R8) RET // indexbytebody is the same as internal/bytealg/indexbyte_arm64.s (go1.20) // // input: // R0: data // R1: byte to search // R2: data len // R8: address to put result TEXT indexbytebody<>(SB), NOSPLIT, $0 // Core algorithm: // For each 32-byte chunk we calculate a 64-bit syndrome value, // with two bits per byte. For each tuple, bit 0 is set if the // relevant byte matched the requested character and bit 1 is // not used (faster than using a 32bit syndrome). Since the bits // in the syndrome reflect exactly the order in which things occur // in the original string, counting trailing zeros allows to // identify exactly which byte has matched. CBZ R2, fail MOVD R0, R11 // Magic constant 0x40100401 allows us to identify // which lane matches the requested byte. // 0x40100401 = ((1<<0) + (4<<8) + (16<<16) + (64<<24)) // Different bytes have different bit masks (i.e: 1, 4, 16, 64) MOVD $0x40100401, R5 VMOV R1, V0.B16 // Work with aligned 32-byte chunks BIC $0x1f, R0, R3 VMOV R5, V5.S4 ANDS $0x1f, R0, R9 AND $0x1f, R2, R10 BEQ loop // Input string is not 32-byte aligned. We calculate the // syndrome value for the aligned 32 bytes block containing // the first bytes and mask off the irrelevant part. VLD1.P (R3), [V1.B16, V2.B16] SUB $0x20, R9, R4 ADDS R4, R2, R2 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 VADDP V4.B16, V3.B16, V6.B16 // 256->128 VADDP V6.B16, V6.B16, V6.B16 // 128->64 VMOV V6.D[0], R6 // Clear the irrelevant lower bits LSL $1, R9, R4 LSR R4, R6, R6 LSL R4, R6, R6 // The first block can also be the last BLS masklast // Have we found something already? CBNZ R6, tail loop: VLD1.P (R3), [V1.B16, V2.B16] SUBS $0x20, R2, R2 VCMEQ V0.B16, V1.B16, V3.B16 VCMEQ V0.B16, V2.B16, V4.B16 // If we're out of data we finish regardless of the result BLS end // Use a fast check for the termination condition VORR V4.B16, V3.B16, V6.B16 VADDP V6.D2, V6.D2, V6.D2 VMOV V6.D[0], R6 // We're not out of data, loop if we haven't found the character CBZ R6, loop end: // Termination condition found, let's calculate the syndrome value VAND V5.B16, V3.B16, V3.B16 VAND V5.B16, V4.B16, V4.B16 VADDP V4.B16, V3.B16, V6.B16 VADDP V6.B16, V6.B16, V6.B16 VMOV V6.D[0], R6 // Only do the clear for the last possible block with less than 32 bytes // Condition flags come from SUBS in the loop BHS tail masklast: // Clear the irrelevant upper bits ADD R9, R10, R4 AND $0x1f, R4, R4 SUB $0x20, R4, R4 NEG R4<<1, R4 LSL R4, R6, R6 LSR R4, R6, R6 tail: // Check that we have found a character CBZ R6, fail // Count the trailing zeros using bit reversing RBIT R6, R6 // Compensate the last post-increment SUB $0x20, R3, R3 // And count the leading zeros CLZ R6, R6 // R6 is twice the offset into the fragment ADD R6>>1, R3, R0 // Compute the offset result SUB R11, R0, R0 MOVD R0, (R8) RET fail: MOVD $-1, R0 MOVD R0, (R8) RET strcase-0.0.5/internal/bytealg/indexbyte_generic.go 0000664 0000000 0000000 00000001652 14720254634 0022454 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. //go:build !s390x && !wasm && !ppc64 && !amd64 && !arm64 // +build !s390x,!wasm,!ppc64,!amd64,!arm64 // Simple implementations for arch's where the standard library does not // appear to use SIMD for IndexByte. // // NOTE(cev): See the comment in indexbyte_simd.go for how the list of GOARCH // build tags was created. package bytealg import ( "bytes" "strings" ) func isAlpha(c byte) bool { return 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' } func IndexByte(s []byte, c byte) int { if !isAlpha(c) { return bytes.IndexByte(s, c) } c |= ' ' for i, cc := range s { if cc|' ' == c { return i } } return -1 } func IndexByteString(s string, c byte) int { if !isAlpha(c) { return strings.IndexByte(s, c) } c |= ' ' for i := 0; i < len(s); i++ { if s[i]|' ' == c { return i } } return -1 } strcase-0.0.5/internal/bytealg/indexbyte_go122_amd64.s 0000664 0000000 0000000 00000017274 14720254634 0022531 0 ustar 00root root 0000000 0000000 //go:build amd64 && go1.22 // +build amd64,go1.22 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. // The following code is modified version of the standard library's // internal/bytealg/indexbyte_amd64.s the Go LICENSE can be found in // the go.LICENSE file. #include "go_asm.h" #include "textflag.h" TEXT ·IndexByte(SB), NOSPLIT, $0-40 MOVQ b_base+0(FP), SI MOVQ b_len+8(FP), BX MOVB c+24(FP), AL LEAQ ret+32(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS index_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI index index_case: MOVB c+24(FP), AL JMP indexbytebodyCase<>(SB) index: MOVB c+24(FP), AL JMP indexbytebody<>(SB) TEXT ·IndexByteString(SB), NOSPLIT, $0-32 MOVQ s_base+0(FP), SI MOVQ s_len+8(FP), BX MOVB c+16(FP), AL LEAQ ret+24(FP), R8 LEAL -65(AX), CX // Check if the byte is a ASCII letter CMPB CL, $25 JLS index_case // Byte sought is a ASCII letter ADDL $-97, AX CMPB AL, $25 JHI index index_case: MOVB c+16(FP), AL JMP indexbytebodyCase<>(SB) index: MOVB c+16(FP), AL JMP indexbytebody<>(SB) // indexbytebodyCase is a case insensitive version indexbytebody // the byte being sought *must* be an ASCII letter. // // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result TEXT indexbytebodyCase<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. ORL $32, AX // Convert byte to lowercase MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 // Add space (' ') mask to X2 MOVQ $32, CX MOVQ CX, X2 PUNPCKLBW X2, X2 PUNPCKLBW X2, X2 PSHUFL $0, X2, X2 CMPQ BX, $16 JLT small MOVQ SI, DI CMPQ BX, $32 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry PCALIGN $16 sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Logical OR to convert data to lowercase POR X2, X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Find first set bit, if any. BSFL DX, DX JNZ ssesuccess // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JB sseloop // Search the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched, but that's ok. MOVQ AX, DI MOVOU (AX), X1 POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 PMOVMSKB X1, DX BSFL DX, DX JNZ ssesuccess failure: MOVQ $-1, (R8) RET // We've found a chunk containing the byte. // The chunk was loaded from DI. // The index of the matching byte in the chunk is DX. // The start of the data is SI. ssesuccess: SUBQ SI, DI // Compute offset of chunk within data. ADDQ DX, DI // Add offset of byte within chunk. MOVQ DI, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ failure // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage MOVOU (SI), X1 // Load data POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. CMPL DX, BX JAE failure // Match is past end of data. MOVQ DX, (R8) RET endofpage: MOVOU -16(SI)(BX*1), X1 // Load data into the high end of X1. POR X2, X1 // Convert data to lowercase PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. MOVL BX, CX SHLL CX, DX SHRL $16, DX // Shift desired bits down to bottom of register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif // Create a mask in Y4 that converts text to upper case. VPBROADCASTB X2, Y4 // space ' ' already stored in X2 MOVD AX, X0 LEAQ -32(SI)(BX*1), R11 VPBROADCASTB X0, Y1 PCALIGN $32 avx2_loop: VMOVDQU (DI), Y2 VPOR Y4, Y2, Y2 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success ADDQ $32, DI CMPQ DI, R11 JLT avx2_loop MOVQ R11, DI VMOVDQU (DI), Y2 VPOR Y4, Y2, Y2 // Convert data to lowercase VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success VZEROUPPER MOVQ $-1, (R8) RET avx2success: VPMOVMSKB Y3, DX BSFL DX, DX SUBQ SI, DI ADDQ DI, DX MOVQ DX, (R8) VZEROUPPER RET // indexbytebody is the same as internal/bytealg/indexbyte_amd64.s (go1.20) // // input: // SI: data // BX: data len // AL: byte sought // R8: address to put result TEXT indexbytebody<>(SB), NOSPLIT, $0 // Shuffle X0 around so that each byte contains // the character we're looking for. MOVD AX, X0 PUNPCKLBW X0, X0 PUNPCKLBW X0, X0 PSHUFL $0, X0, X0 CMPQ BX, $16 JLT small MOVQ SI, DI CMPQ BX, $32 JA avx2 sse: LEAQ -16(SI)(BX*1), AX // AX = address of last 16 bytes JMP sseloopentry PCALIGN $16 sseloop: // Move the next 16-byte chunk of the data into X1. MOVOU (DI), X1 // Compare bytes in X0 to X1. PCMPEQB X0, X1 // Take the top bit of each byte in X1 and put the result in DX. PMOVMSKB X1, DX // Find first set bit, if any. BSFL DX, DX JNZ ssesuccess // Advance to next block. ADDQ $16, DI sseloopentry: CMPQ DI, AX JB sseloop // Search the last 16-byte chunk. This chunk may overlap with the // chunks we've already searched, but that's ok. MOVQ AX, DI MOVOU (AX), X1 PCMPEQB X0, X1 PMOVMSKB X1, DX BSFL DX, DX JNZ ssesuccess failure: MOVQ $-1, (R8) RET // We've found a chunk containing the byte. // The chunk was loaded from DI. // The index of the matching byte in the chunk is DX. // The start of the data is SI. ssesuccess: SUBQ SI, DI // Compute offset of chunk within data. ADDQ DX, DI // Add offset of byte within chunk. MOVQ DI, (R8) RET // handle for lengths < 16 small: TESTQ BX, BX JEQ failure // Check if we'll load across a page boundary. LEAQ 16(SI), AX TESTW $0xff0, AX JEQ endofpage MOVOU (SI), X1 // Load data PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. CMPL DX, BX JAE failure // Match is past end of data. MOVQ DX, (R8) RET endofpage: MOVOU -16(SI)(BX*1), X1 // Load data into the high end of X1. PCMPEQB X0, X1 // Compare target byte with each byte in data. PMOVMSKB X1, DX // Move result bits to integer register. MOVL BX, CX SHLL CX, DX SHRL $16, DX // Shift desired bits down to bottom of register. BSFL DX, DX // Find first set bit. JZ failure // No set bit, failure. MOVQ DX, (R8) RET avx2: #ifndef hasAVX2 CMPB golang·org∕x∕sys∕cpu·X86+const_offsetX86HasAVX2(SB), $1 JNE sse #endif MOVD AX, X0 LEAQ -32(SI)(BX*1), R11 VPBROADCASTB X0, Y1 PCALIGN $32 avx2_loop: VMOVDQU (DI), Y2 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success ADDQ $32, DI CMPQ DI, R11 JLT avx2_loop MOVQ R11, DI VMOVDQU (DI), Y2 VPCMPEQB Y1, Y2, Y3 VPTEST Y3, Y3 JNZ avx2success VZEROUPPER MOVQ $-1, (R8) RET avx2success: VPMOVMSKB Y3, DX BSFL DX, DX SUBQ SI, DI ADDQ DI, DX MOVQ DX, (R8) VZEROUPPER RET strcase-0.0.5/internal/bytealg/indexbyte_simd.go 0000664 0000000 0000000 00000003232 14720254634 0021770 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. //go:build s390x || wasm || ppc64 // +build s390x wasm ppc64 // The below functions assume their corresponding functions in the standard // library can search multiple bytes simultaneously (SIMD or whatever). // Otherwise, a simple for loop should be used. // // NOTE(cev): The arch build tags included here were picked by me browsing the // assembly implementations of indexbye_{GOARCH}.s and if it looked fancy and // complicated I assume it used SIMD so included it here - so could be wrong. // // This list should be revisited when new versions of Go are released, or by // anyone who either has access to the hardware or understands the assembly. package bytealg import ( "bytes" "strings" ) func isAlpha(c byte) bool { return 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' } func IndexByte(s []byte, c byte) int { if len(s) == 0 { return -1 } n := bytes.IndexByte(s, c) if n == 0 || !isAlpha(c) { return n } c ^= ' ' // swap case if s[0] == c { return 0 } // TODO: calculate the optimal cutoff if n > 0 && len(s) >= 16 { s = s[:n] // limit search space } if o := bytes.IndexByte(s, c); n == -1 || (o != -1 && o < n) { n = o } return n } func IndexByteString(s string, c byte) int { if len(s) == 0 { return -1 } n := strings.IndexByte(s, c) if n == 0 || !isAlpha(c) { return n } c ^= ' ' // swap case if s[0] == c { return 0 } // TODO: calculate the optimal cutoff if n > 0 && len(s) >= 16 { s = s[:n] // limit search space } if o := strings.IndexByte(s, c); n == -1 || (o != -1 && o < n) { n = o } return n } strcase-0.0.5/internal/bytealg/indexbyte_test.go 0000664 0000000 0000000 00000023727 14720254634 0022026 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. package bytealg import ( "bytes" "flag" "fmt" "os" "strings" "testing" ) var quiet = flag.Bool("quiet", false, "quiet test output") type IndexTest struct { s string sep string out int } // From strings/strings_test.go var indexTests = []IndexTest{ {"", "", 0}, {"", "a", -1}, {"", "foo", -1}, {"fo", "foo", -1}, {"foo", "foo", 0}, {"oofofoofooo", "f", 2}, {"oofofoofooo", "foo", 4}, {"barfoobarfoo", "foo", 3}, {"foo", "", 0}, {"foo", "o", 1}, {"jrzm6jjhorimglljrea4w3rlgosts0w2gia17hno2td4qd1jz", "jz", 47}, {"ekkuk5oft4eq0ocpacknhwouic1uua46unx12l37nioq9wbpnocqks6", "ks6", 52}, {"999f2xmimunbuyew5vrkla9cpwhmxan8o98ec", "98ec", 33}, {"9lpt9r98i04k8bz6c6dsrthb96bhi", "96bhi", 24}, {"55u558eqfaod2r2gu42xxsu631xf0zobs5840vl", "5840vl", 33}, // cases with one byte strings - test special case in Index() {"", "a", -1}, {"x", "a", -1}, {"x", "x", 0}, {"abc", "a", 0}, {"abc", "b", 1}, {"abc", "c", 2}, {"abc", "x", -1}, // test special cases in Index() for short strings {"", "ab", -1}, {"bc", "ab", -1}, {"ab", "ab", 0}, {"xab", "ab", 1}, {"xab"[:2], "ab", -1}, {"", "abc", -1}, {"xbc", "abc", -1}, {"abc", "abc", 0}, {"xabc", "abc", 1}, {"xabc"[:3], "abc", -1}, {"xabxc", "abc", -1}, {"", "abcd", -1}, {"xbcd", "abcd", -1}, {"abcd", "abcd", 0}, {"xabcd", "abcd", 1}, {"xyabcd"[:5], "abcd", -1}, {"xbcqq", "abcqq", -1}, {"abcqq", "abcqq", 0}, {"xabcqq", "abcqq", 1}, {"xyabcqq"[:6], "abcqq", -1}, {"xabxcqq", "abcqq", -1}, {"xabcqxq", "abcqq", -1}, {"", "01234567", -1}, {"32145678", "01234567", -1}, {"01234567", "01234567", 0}, {"x01234567", "01234567", 1}, {"x0123456x01234567", "01234567", 9}, {"xx01234567"[:9], "01234567", -1}, {"", "0123456789", -1}, {"3214567844", "0123456789", -1}, {"0123456789", "0123456789", 0}, {"x0123456789", "0123456789", 1}, {"x012345678x0123456789", "0123456789", 11}, {"xyz0123456789"[:12], "0123456789", -1}, {"x01234567x89", "0123456789", -1}, {"", "0123456789012345", -1}, {"3214567889012345", "0123456789012345", -1}, {"0123456789012345", "0123456789012345", 0}, {"x0123456789012345", "0123456789012345", 1}, {"x012345678901234x0123456789012345", "0123456789012345", 17}, {"", "01234567890123456789", -1}, {"32145678890123456789", "01234567890123456789", -1}, {"01234567890123456789", "01234567890123456789", 0}, {"x01234567890123456789", "01234567890123456789", 1}, {"x0123456789012345678x01234567890123456789", "01234567890123456789", 21}, {"xyz01234567890123456789"[:22], "01234567890123456789", -1}, {"", "0123456789012345678901234567890", -1}, {"321456788901234567890123456789012345678911", "0123456789012345678901234567890", -1}, {"0123456789012345678901234567890", "0123456789012345678901234567890", 0}, {"x0123456789012345678901234567890", "0123456789012345678901234567890", 1}, {"x012345678901234567890123456789x0123456789012345678901234567890", "0123456789012345678901234567890", 32}, {"xyz0123456789012345678901234567890"[:33], "0123456789012345678901234567890", -1}, {"", "01234567890123456789012345678901", -1}, {"32145678890123456789012345678901234567890211", "01234567890123456789012345678901", -1}, {"01234567890123456789012345678901", "01234567890123456789012345678901", 0}, {"x01234567890123456789012345678901", "01234567890123456789012345678901", 1}, {"x0123456789012345678901234567890x01234567890123456789012345678901", "01234567890123456789012345678901", 33}, {"xyz01234567890123456789012345678901"[:34], "01234567890123456789012345678901", -1}, {"xxxxxx012345678901234567890123456789012345678901234567890123456789012", "012345678901234567890123456789012345678901234567890123456789012", 6}, {"", "0123456789012345678901234567890123456789", -1}, {"xx012345678901234567890123456789012345678901234567890123456789012", "0123456789012345678901234567890123456789", 2}, {"xx012345678901234567890123456789012345678901234567890123456789012"[:41], "0123456789012345678901234567890123456789", -1}, {"xx012345678901234567890123456789012345678901234567890123456789012", "0123456789012345678901234567890123456xxx", -1}, {"xx0123456789012345678901234567890123456789012345678901234567890120123456789012345678901234567890123456xxx", "0123456789012345678901234567890123456xxx", 65}, // test fallback to Rabin-Karp. {"oxoxoxoxoxoxoxoxoxoxoxoy", "oy", 22}, {"oxoxoxoxoxoxoxoxoxoxoxox", "oy", -1}, } func testIndex(t *testing.T, name string, fn func(s string, c byte) int) { for _, tt := range indexTests { if len(tt.sep) != 1 { continue } pos := fn(tt.s, tt.sep[0]) if pos != tt.out { t.Errorf(`%s(%q, %q) = %v; want %v`, name, tt.s, tt.sep[0], pos, tt.out) } // Uppercase s { s := strings.ToUpper(tt.s) pos := fn(s, tt.sep[0]) if pos != tt.out { t.Errorf(`%s(%q, %q) = %v; want %v`, name, s, tt.sep[0], pos, tt.out) } } // Uppercase c { c := tt.sep[0] if 'a' <= c && c <= 'z' { c -= 'a' - 'A' } pos := fn(tt.s, c) if pos != tt.out { t.Errorf(`%s(%q, %q) = %v; want %v`, name, tt.s, c, pos, tt.out) } } } } // Make sure we pass the standard library's IndexByte tests // From strings/strings_test.go func TestIndexByte(t *testing.T) { testIndex(t, "IndexByte", func(s string, c byte) int { return IndexByte([]byte(s), c) }) } // Make sure we pass the standard library's IndexByte tests // From strings/strings_test.go func TestIndexByteString(t *testing.T) { testIndex(t, "IndexByteString", IndexByteString) } func testIndexByteASCII(t *testing.T, name string, fn func(s []byte, c byte) int) { test := func(t *testing.T, s []byte) { t.Run("", func(t *testing.T) { errCount := 0 for i, c := range s { o := fn(s, c) if o != i { if !*quiet { t.Errorf(`%s(%q, %q) = %v; want %v`, name, s, c, o, i) } errCount++ } } if errCount > 0 { t.Errorf("Failed: %d/%d", errCount, len(s)) } }) } s1 := make([]byte, 0, 256) // forward for i := 0; i < 256; i++ { c := byte(i) if !('a' <= c && c <= 'z') { s1 = append(s1, c) } } s2 := make([]byte, len(s1)) for i := len(s1)/2 - 1; i >= 0; i-- { opp := len(s1) - 1 - i s2[i], s2[opp] = s1[opp], s1[i] } test(t, s1) test(t, s2) } func TestIndexByteASCII(t *testing.T) { testIndexByteASCII(t, "IndexByte", IndexByte) } func TestIndexByteStringASCII(t *testing.T) { testIndexByteASCII(t, "IndexByteString", func(s []byte, c byte) int { return IndexByteString(string(s), c) }) } func max(a, b int) int { if a >= b { return a } return b } func testIndexByte(t *testing.T, base, name, funcName, replacements string, fn func([]byte, byte) int) { const maxErrors = 40 if t.Failed() { t.FailNow() return } if strings.ContainsAny(base, "xX") { t.Fatalf("base string %q may not contain %q", base, "xX") } // Test indices 512 bytes on either side of size. const delta = 512 ob := base base = strings.Repeat(ob, os.Getpagesize()+delta+1) // expand base base = strings.TrimPrefix(base, ob) // change data alignment (shift the GC'd ptr by 25) var results []string for size := 1; size <= os.Getpagesize(); size <<= 1 { t.Run(fmt.Sprintf("%s/%d", name, size), func(t *testing.T) { orig := base[:size+delta] s1 := make([]byte, len(orig)) copy(s1, orig) errCount := 0 for i := max(0, size-delta*2); i < len(orig); i++ { for j, c := range []byte(replacements) { if isAlphaPortable(c) { if i < len(s1)-1 { s1[i] = c ^ ' ' // swap case s1[i+1] = c } else { s1[i] = c } } else { s1[i] = c } if o := fn(s1, c); o != i { if errCount < maxErrors { if !*quiet { t.Errorf("%d.%d got: %d; want: %d", i, j, o, i) } else { t.Fail() } } errCount++ } if i < len(s1)-1 { s1[i] = orig[i] s1[i+1] = orig[i+1] } else { s1[i] = orig[i] } } } if errCount > 0 { results = append(results, fmt.Sprintf("%d: failed %d/%d", size, errCount, size*2)) } }) } if t.Failed() { t.Logf("%s Summary:\n%s", funcName, strings.Join(results, "\n")) } } const alphaLower = "abcdefghijklmnopqrstuvwyz" // no X const alphaUpper = "ABCDEFGHIJKLMNOPQRSTUVWYZ" // no X // CEV: I don't trust my ability to write assembly so pedantically test near // powers of 2 and the OS page size. func TestIndexByteLimits(t *testing.T) { testIndexByte(t, alphaLower, "Lower", "IndexByte", "xX", IndexByte) testIndexByte(t, alphaUpper, "Upper", "IndexByte", "xX", IndexByte) testIndexByte(t, alphaUpper, "Digit", "IndexByte", "1", IndexByte) } func TestIndexByteStringLimits(t *testing.T) { fn := func(s []byte, c byte) int { return IndexByteString(string(s), c) } testIndexByte(t, alphaLower, "Lower", "IndexByteString", "xX", fn) testIndexByte(t, alphaUpper, "Upper", "IndexByteString", "xX", fn) testIndexByte(t, alphaUpper, "Digit", "IndexByteString", "1", fn) } var bmbuf []byte func valName(x int) string { if s := x >> 20; s<<20 == x { return fmt.Sprintf("%dM", s) } if s := x >> 10; s<<10 == x { return fmt.Sprintf("%dK", s) } return fmt.Sprint(x) } func benchBytes(b *testing.B, sizes []int, f func(b *testing.B, n int)) { for _, n := range sizes { b.Run(valName(n), func(b *testing.B) { if len(bmbuf) < n { bmbuf = make([]byte, n) } b.SetBytes(int64(n)) f(b, n) }) } } var indexSizes = []int{10, 32, 4 << 10, 4 << 20, 64 << 20} func BenchmarkIndexByte(b *testing.B) { benchBytes(b, indexSizes, bmIndexByte(IndexByte, true)) } func BenchmarkIndexByteStdLib(b *testing.B) { benchBytes(b, indexSizes, bmIndexByte(bytes.IndexByte, false)) } func bmIndexByte(index func([]byte, byte) int, caseless bool) func(b *testing.B, n int) { return func(b *testing.B, n int) { buf := bmbuf[0:n] buf[n-1] = 'x' ch := byte('x') if caseless { ch = 'X' } for i := 0; i < b.N; i++ { j := index(buf, ch) // Search for uppercase variant if j != n-1 { b.Fatal("bad index", j) } } buf[n-1] = '\x00' } } func isAlphaPortable(c byte) bool { return 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' } strcase-0.0.5/internal/bytealg/test_amd64.sh 0000775 0000000 0000000 00000000175 14720254634 0020746 0 ustar 00root root 0000000 0000000 set -e if [ "$(go env GOARCH)" != amd64 ]; then echo 'error: this is only for amd64' exit 1 fi GOAMD64='v3' go test strcase-0.0.5/internal/gen/ 0000775 0000000 0000000 00000000000 14720254634 0015554 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/gen/.gitignore 0000664 0000000 0000000 00000000016 14720254634 0017541 0 ustar 00root root 0000000 0000000 /vendor /DATA strcase-0.0.5/internal/gen/Makefile 0000664 0000000 0000000 00000002642 14720254634 0017220 0 ustar 00root root 0000000 0000000 # vim: ts=4 sw=4 ft=make MAKEFILE_PATH := $(realpath $(lastword $(MAKEFILE_LIST))) MAKEFILE_DIR := $(abspath $(dir $(MAKEFILE_PATH))) # Run tests and linters. If this passes then CI tests # should also pass. .PHONY: all all: test lint # Common variables include $(MAKEFILE_DIR)/../../common.mk # # Run tests an # Run verbose tests testverbose: override GO_TEST_FLAGS += -v # Run verbose tests testrace: override GO_COVER_FLAGS = testrace: override GO_TEST_FLAGS += -race .PHONY: test testverbose testrace test testverbose testrace: @GOGC=$(GO_GOGC) $(GO_TEST) ./... # Actual ci target (separate because so that we can override GO) .PHONY: .ci .ci: GO = $(RICHGO_TARGET) .ci: export RICHGO_FORCE_COLOR=1 .ci: testverbose # Run and colorize verbose tests for CI .PHONY: ci ci: bin/richgo ci: .ci # Run golangci-lint .PHONY: golangci-lint golangci-lint: bin/golangci-lint @$(GOLANGCI_TARGET) run .PHONY: vet vet: @$(GO) vet ./... .PHONY: lint lint: vet golangci-lint # Make sure there aren't any comments that need addressing (TODO or WARN) # # NOTE: not currently part of the "lint" target. .PHONY: lint-comments lint-comments: @if $(xgrep) $(GREP_COMMENTS) $(COMMENTS); then \ echo ''; \ echo '$(red)FAIL: $(cyan)address comments!$(term-reset)'; \ exit 1; \ fi .PHONY: clean clean: @$(GO) clean -i ./... strcase-0.0.5/internal/gen/README.md 0000664 0000000 0000000 00000000127 14720254634 0017033 0 ustar 00root root 0000000 0000000 # gen The code here is responsible for generating the Unicode tables used by strcase. strcase-0.0.5/internal/gen/gen/ 0000775 0000000 0000000 00000000000 14720254634 0016325 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/gen/gen/code.go 0000664 0000000 0000000 00000023415 14720254634 0017573 0 ustar 00root root 0000000 0000000 // 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. package gen import ( "bytes" "encoding/gob" "fmt" "hash" "hash/fnv" "io" "log" "os" "reflect" "strings" "unicode" "unicode/utf8" ) // This file contains utilities for generating code. // TODO: other write methods like: // - slices, maps, types, etc. // CodeWriter is a utility for writing structured code. It computes the content // hash and size of written content. It ensures there are newlines between // written code blocks. type CodeWriter struct { buf bytes.Buffer Size int Hash hash.Hash32 // content hash gob *gob.Encoder // For comments we skip the usual one-line separator if they are followed by // a code block. skipSep bool } func (w *CodeWriter) Write(p []byte) (n int, err error) { return w.buf.Write(p) } // NewCodeWriter returns a new CodeWriter. func NewCodeWriter() *CodeWriter { h := fnv.New32() return &CodeWriter{Hash: h, gob: gob.NewEncoder(h)} } // WriteGoFile appends the buffer with the total size of all created structures // and writes it as a Go file to the given file with the given package name. func (w *CodeWriter) WriteGoFile(filename, pkg string) { f, err := os.Create(filename) if err != nil { log.Fatalf("Could not create file %s: %v", filename, err) } defer f.Close() if _, err = w.WriteGo(f, pkg, ""); err != nil { log.Fatalf("Error writing file %s: %v", filename, err) } } // WriteVersionedGoFile appends the buffer with the total size of all created // structures and writes it as a Go file to the given file with the given // package name and build tags for the current Unicode version, func (w *CodeWriter) WriteVersionedGoFile(filename, pkg string) { tags := buildTags() if tags != "" { pattern := fileToPattern(filename) updateBuildTags(pattern) filename = fmt.Sprintf(pattern, UnicodeVersion()) } f, err := os.Create(filename) if err != nil { log.Fatalf("Could not create file %s: %v", filename, err) } defer f.Close() if _, err = w.WriteGo(f, pkg, tags); err != nil { log.Fatalf("Error writing file %s: %v", filename, err) } } // WriteGo appends the buffer with the total size of all created structures and // writes it as a Go file to the given writer with the given package name. func (w *CodeWriter) WriteGo(out io.Writer, pkg, tags string) (n int, err error) { sz := w.Size if sz > 0 { w.WriteComment("Total table size %d bytes (%dKiB); checksum: %X\n", sz, sz/1024, w.Hash.Sum32()) } defer w.buf.Reset() return WriteGo(out, pkg, tags, w.buf.Bytes()) } func (w *CodeWriter) printf(f string, x ...interface{}) { fmt.Fprintf(w, f, x...) } func (w *CodeWriter) insertSep() { if w.skipSep { w.skipSep = false return } // Use at least two newlines to ensure a blank space between the previous // block. WriteGoFile will remove extraneous newlines. w.printf("\n\n") } // WriteComment writes a comment block. All line starts are prefixed with "//". // Initial empty lines are gobbled. The indentation for the first line is // stripped from consecutive lines. func (w *CodeWriter) WriteComment(comment string, args ...interface{}) { s := fmt.Sprintf(comment, args...) s = strings.Trim(s, "\n") // Use at least two newlines to ensure a blank space between the previous // block. WriteGoFile will remove extraneous newlines. w.printf("\n\n// ") w.skipSep = true // strip first indent level. sep := "\n" for ; len(s) > 0 && (s[0] == '\t' || s[0] == ' '); s = s[1:] { sep += s[:1] } strings.NewReplacer(sep, "\n// ", "\n", "\n// ").WriteString(w, s) w.printf("\n") } func (w *CodeWriter) writeSizeInfo(size int) { w.printf("// Size: %d bytes\n", size) } // WriteConst writes a constant of the given name and value. func (w *CodeWriter) WriteConst(name string, x interface{}) { w.insertSep() v := reflect.ValueOf(x) switch v.Type().Kind() { case reflect.String: w.printf("const %s %s = ", name, typeName(x)) w.WriteString(v.String()) w.printf("\n") default: w.printf("const %s = %#v\n", name, x) } } // WriteVar writes a variable of the given name and value. func (w *CodeWriter) WriteVar(name string, x interface{}) { w.insertSep() v := reflect.ValueOf(x) oldSize := w.Size sz := int(v.Type().Size()) w.Size += sz switch v.Type().Kind() { case reflect.String: w.printf("var %s %s = ", name, typeName(x)) w.WriteString(v.String()) case reflect.Struct: w.gob.Encode(x) fallthrough case reflect.Slice, reflect.Array: w.printf("var %s = ", name) w.writeValue(v) w.writeSizeInfo(w.Size - oldSize) default: w.printf("var %s %s = ", name, typeName(x)) w.gob.Encode(x) w.writeValue(v) w.writeSizeInfo(w.Size - oldSize) } w.printf("\n") } func (w *CodeWriter) writeValue(v reflect.Value) { x := v.Interface() switch v.Kind() { case reflect.String: w.WriteString(v.String()) case reflect.Array: // Don't double count: callers of WriteArray count on the size being // added, so we need to discount it here. w.Size -= int(v.Type().Size()) w.writeSlice(x, true) case reflect.Slice: w.writeSlice(x, false) case reflect.Struct: w.printf("%s{\n", typeName(v.Interface())) t := v.Type() for i := 0; i < v.NumField(); i++ { w.printf("%s: ", t.Field(i).Name) w.writeValue(v.Field(i)) w.printf(",\n") } w.printf("}") default: w.printf("%#v", x) } } // WriteString writes a string literal. func (w *CodeWriter) WriteString(s string) { io.WriteString(w.Hash, s) // content hash w.Size += len(s) const maxInline = 40 if len(s) <= maxInline { w.printf("%q", s) return } // We will render the string as a multi-line string. const maxWidth = 80 - 4 - len(`"`) - len(`" +`) // When starting on its own line, go fmt indents line 2+ an extra level. n, max := maxWidth, maxWidth-4 // As per https://golang.org/issue/18078, the compiler has trouble // compiling the concatenation of many strings, s0 + s1 + s2 + ... + sN, // for large N. We insert redundant, explicit parentheses to work around // that, lowering the N at any given step: (s0 + s1 + ... + s63) + (s64 + // ... + s127) + etc + (etc + ... + sN). explicitParens, extraComment := len(s) > 128*1024, "" if explicitParens { w.printf(`(`) extraComment = "; the redundant, explicit parens are for https://golang.org/issue/18078" } // Print "" +\n, if a string does not start on its own line. b := w.buf.Bytes() if p := len(bytes.TrimRight(b, " \t")); p > 0 && b[p-1] != '\n' { w.printf("\"\" + // Size: %d bytes%s\n", len(s), extraComment) n, max = maxWidth, maxWidth } w.printf(`"`) for sz, p, nLines := 0, 0, 0; p < len(s); { var r rune r, sz = utf8.DecodeRuneInString(s[p:]) out := s[p : p+sz] chars := 1 if !unicode.IsPrint(r) || r == utf8.RuneError || r == '"' { switch sz { case 1: out = fmt.Sprintf("\\x%02x", s[p]) case 2, 3: out = fmt.Sprintf("\\u%04x", r) case 4: out = fmt.Sprintf("\\U%08x", r) } chars = len(out) } else if r == '\\' { out = "\\" + string(r) chars = 2 } if n -= chars; n < 0 { nLines++ if explicitParens && nLines&63 == 63 { w.printf("\") + (\"") } w.printf("\" +\n\"") n = max - len(out) } w.printf("%s", out) p += sz } w.printf(`"`) if explicitParens { w.printf(`)`) } } // WriteSlice writes a slice value. func (w *CodeWriter) WriteSlice(x interface{}) { w.writeSlice(x, false) } // WriteArray writes an array value. func (w *CodeWriter) WriteArray(x interface{}) { w.writeSlice(x, true) } func (w *CodeWriter) writeSlice(x interface{}, isArray bool) { v := reflect.ValueOf(x) w.gob.Encode(v.Len()) w.Size += v.Len() * int(v.Type().Elem().Size()) name := typeName(x) if isArray { name = fmt.Sprintf("[%d]%s", v.Len(), name[strings.Index(name, "]")+1:]) } if isArray { w.printf("%s{\n", name) } else { w.printf("%s{ // %d elements\n", name, v.Len()) } switch kind := v.Type().Elem().Kind(); kind { case reflect.String: for _, s := range x.([]string) { w.WriteString(s) w.printf(",\n") } case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: // nLine and nBlock are the number of elements per line and block. nLine, nBlock, format := 8, 64, "%d," switch kind { case reflect.Uint8: format = "%#02x," case reflect.Uint16: format = "%#04x," case reflect.Uint32: nLine, nBlock, format = 4, 32, "%#08x," case reflect.Uint, reflect.Uint64: nLine, nBlock, format = 4, 32, "%#016x," case reflect.Int8: nLine = 16 } n := nLine for i := 0; i < v.Len(); i++ { if i%nBlock == 0 && v.Len() > nBlock { w.printf("// Entry %X - %X\n", i, i+nBlock-1) } x := v.Index(i).Interface() w.gob.Encode(x) w.printf(format, x) if n--; n == 0 { n = nLine w.printf("\n") } } w.printf("\n") case reflect.Struct: zero := reflect.Zero(v.Type().Elem()).Interface() for i := 0; i < v.Len(); i++ { x := v.Index(i).Interface() w.gob.EncodeValue(v) if !reflect.DeepEqual(zero, x) { line := fmt.Sprintf("%#v,\n", x) line = line[strings.IndexByte(line, '{'):] w.printf("%d: ", i) w.printf(line) } } case reflect.Array: for i := 0; i < v.Len(); i++ { w.printf("%d: %#v,\n", i, v.Index(i).Interface()) } default: panic("gen: slice elem type not supported") } w.printf("}") } // WriteType writes a definition of the type of the given value and returns the // type name. func (w *CodeWriter) WriteType(x interface{}) string { t := reflect.TypeOf(x) w.printf("type %s struct {\n", t.Name()) for i := 0; i < t.NumField(); i++ { w.printf("\t%s %s\n", t.Field(i).Name, t.Field(i).Type) } w.printf("}\n") return t.Name() } // typeName returns the name of the go type of x. func typeName(x interface{}) string { t := reflect.ValueOf(x).Type() return strings.Replace(fmt.Sprint(t), "main.", "", 1) } strcase-0.0.5/internal/gen/gen/gen.go 0000664 0000000 0000000 00000025125 14720254634 0017432 0 ustar 00root root 0000000 0000000 // 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. // Package gen contains common code for the various code generation tools in the // text repository. Its usage ensures consistency between tools. // // This package defines command line flags that are common to most generation // tools. The flags allow for specifying specific Unicode and CLDR versions // in the public Unicode data repository (https://www.unicode.org/Public). // // A local Unicode data mirror can be set through the flag -local or the // environment variable UNICODE_DIR. The former takes precedence. The local // directory should follow the same structure as the public repository. // // IANA data can also optionally be mirrored by putting it in the iana directory // rooted at the top of the local mirror. Beware, though, that IANA data is not // versioned. So it is up to the developer to use the right version. package gen import ( "bytes" "flag" "fmt" "go/format" "io" "log" "net/http" "os" "path" "path/filepath" "regexp" "strings" "sync" "unicode" "golang.org/x/text/unicode/cldr" "github.com/charlievieth/strcase/internal/gen/util" ) var ( url = flag.String("url", "https://www.unicode.org/Public", "URL of Unicode database directory") iana = flag.String("iana", "http://www.iana.org", "URL of the IANA repository") unicodeVersion = flag.String("unicode", getEnv("UNICODE_VERSION", unicode.Version), "unicode version to use") cldrVersion = flag.String("cldr", getEnv("CLDR_VERSION", cldr.Version), "cldr version to use") ) func getEnv(name, def string) string { if v := os.Getenv(name); v != "" { return v } return def } // Init performs common initialization for a gen command. It parses the flags // and sets up the standard logging parameters. func Init() { log.SetPrefix("") log.SetFlags(log.Lshortfile) flag.Parse() } const header = `// Code generated by running "go generate" in github.com/charlievieth/strcase. DO NOT EDIT. ` // UnicodeVersion reports the requested Unicode version. func UnicodeVersion() string { return *unicodeVersion } // CLDRVersion reports the requested CLDR version. func CLDRVersion() string { return *cldrVersion } var tags = []struct{ version, buildTags string }{ {"9.0.0", "!go1.10"}, {"10.0.0", "go1.10,!go1.13"}, {"11.0.0", "go1.13,!go1.14"}, {"12.0.0", "go1.14,!go1.16"}, {"13.0.0", "go1.16"}, {"15.0.0", "go1.21"}, } // buildTags reports the build tags used for the current Unicode version. func buildTags() string { v := UnicodeVersion() for _, e := range tags { if e.version == v { return e.buildTags } } log.Fatalf("Unknown build tags for Unicode version %q.", v) return "" } // IsLocal reports whether data files are available locally. func IsLocal() bool { dir, err := localReadmeFile() if err != nil { return false } if _, err = os.Stat(dir); err != nil { return false } return true } // OpenUCDFile opens the requested UCD file. The file is specified relative to // the public Unicode root directory. It will call log.Fatal if there are any // errors. func OpenUCDFile(file string) io.ReadCloser { return openUnicode(path.Join(*unicodeVersion, "ucd", file)) } // OpenCLDRCoreZip opens the CLDR core zip file. It will call log.Fatal if there // are any errors. func OpenCLDRCoreZip() io.ReadCloser { return OpenUnicodeFile("cldr", *cldrVersion, "core.zip") } // OpenUnicodeFile opens the requested file of the requested category from the // root of the Unicode data archive. The file is specified relative to the // public Unicode root directory. If version is "", it will use the default // Unicode version. It will call log.Fatal if there are any errors. func OpenUnicodeFile(category, version, file string) io.ReadCloser { if version == "" { version = UnicodeVersion() } return openUnicode(path.Join(category, version, file)) } // OpenIANAFile opens the requested IANA file. The file is specified relative // to the IANA root, which is typically either http://www.iana.org or the // iana directory in the local mirror. It will call log.Fatal if there are any // errors. func OpenIANAFile(path string) io.ReadCloser { return Open(*iana, "iana", path) } var ( dirMutex sync.Mutex localDir string ) const permissions = 0755 // WARN: make this configurable // TODO: we probably want to change where we download this to func localReadmeFile() (string, error) { root, err := util.GenTablesRoot() if err != nil { return "", err } return filepath.Join(root, "DATA", "README"), nil } func getLocalDir() string { dirMutex.Lock() defer dirMutex.Unlock() readme, err := localReadmeFile() if err != nil { log.Fatal(err) } dir := filepath.Dir(readme) if _, err := os.Stat(readme); err != nil { if err := os.MkdirAll(dir, permissions); err != nil { log.Fatalf("Could not create directory: %v", err) } if err := os.WriteFile(readme, []byte(readmeTxt), 0644); err != nil { log.Fatal(err) } } return dir } const readmeTxt = `Generated by github.com/charlievieth/strcase/internal/gen/gen DO NOT EDIT. This directory contains downloaded files used to generate the various tables in the github.com/charlievieth/strcase package. Note that the language subtag repo (iana/assignments/language-subtag-registry) and all other times in the iana subdirectory are not versioned and will need to be periodically manually updated. The easiest way to do this is to remove the entire iana directory. This is mostly of concern when updating the language package. ` // Open opens subdir/path if a local directory is specified and the file exists, // where subdir is a directory relative to the local root, or fetches it from // urlRoot/path otherwise. It will call log.Fatal if there are any errors. func Open(urlRoot, subdir, path string) io.ReadCloser { file := filepath.Join(getLocalDir(), subdir, filepath.FromSlash(path)) return open(file, urlRoot, path) } func openUnicode(path string) io.ReadCloser { file := filepath.Join(getLocalDir(), filepath.FromSlash(path)) return open(file, *url, path) } // TODO: automatically periodically update non-versioned files. func open(file, urlRoot, path string) io.ReadCloser { if f, err := os.Open(file); err == nil { return f } r := get(urlRoot, path) defer r.Close() b, err := io.ReadAll(r) if err != nil { log.Fatalf("Could not download file: %v", err) } os.MkdirAll(filepath.Dir(file), permissions) if err := os.WriteFile(file, b, 0644); err != nil { log.Fatalf("Could not create file: %v", err) } return io.NopCloser(bytes.NewReader(b)) } func get(root, path string) io.ReadCloser { url := root + "/" + path log.Printf("Fetching %s...", url) defer log.Println(" done.") resp, err := http.Get(url) if err != nil { log.Fatalf("HTTP GET: %v", err) } if resp.StatusCode != 200 { log.Fatalf("Bad GET status for %q: %q", url, resp.Status) } return resp.Body } // TODO: use Write*Version in all applicable packages. // WriteUnicodeVersion writes a constant for the Unicode version from which the // tables are generated. func WriteUnicodeVersion(w io.Writer) { fmt.Fprintf(w, "// UnicodeVersion is the Unicode version from which the tables in this package are derived.\n") fmt.Fprintf(w, "const UnicodeVersion = %q\n\n", UnicodeVersion()) } // WriteCLDRVersion writes a constant for the CLDR version from which the // tables are generated. func WriteCLDRVersion(w io.Writer) { fmt.Fprintf(w, "// CLDRVersion is the CLDR version from which the tables in this package are derived.\n") fmt.Fprintf(w, "const CLDRVersion = %q\n\n", CLDRVersion()) } // WriteGoFile prepends a standard file comment and package statement to the // given bytes, applies gofmt, and writes them to a file with the given name. // It will call log.Fatal if there are any errors. func WriteGoFile(filename, pkg string, b []byte) { w, err := os.Create(filename) if err != nil { log.Fatalf("Could not create file %s: %v", filename, err) } defer w.Close() if _, err = WriteGo(w, pkg, "", b); err != nil { log.Fatalf("Error writing file %s: %v", filename, err) } } func fileToPattern(filename string) string { suffix := ".go" if strings.HasSuffix(filename, "_test.go") { suffix = "_test.go" } prefix := filename[:len(filename)-len(suffix)] return fmt.Sprint(prefix, "%s", suffix) } // tagLines returns the //go:build and // +build lines to add to the file. func tagLines(tags string) string { newTags := strings.ReplaceAll(tags, ",", " && ") return "//go:build " + newTags + "\n" + "// +build " + tags + "\n" } func updateBuildTags(pattern string) { for _, t := range tags { oldFile := fmt.Sprintf(pattern, t.version) b, err := os.ReadFile(oldFile) if err != nil { continue } b = regexp.MustCompile(`((//go:build|// \+build).*\n)+`).ReplaceAll(b, []byte(tagLines(t.buildTags))) err = os.WriteFile(oldFile, b, 0644) if err != nil { log.Fatal(err) } } } // WriteVersionedGoFile prepends a standard file comment, adds build tags to // version the file for the current Unicode version, and package statement to // the given bytes, applies gofmt, and writes them to a file with the given // name. It will call log.Fatal if there are any errors. func WriteVersionedGoFile(filename, pkg string, b []byte) { pattern := fileToPattern(filename) updateBuildTags(pattern) filename = fmt.Sprintf(pattern, UnicodeVersion()) w, err := os.Create(filename) if err != nil { log.Fatalf("Could not create file %s: %v", filename, err) } defer w.Close() if _, err = WriteGo(w, pkg, buildTags(), b); err != nil { log.Fatalf("Error writing file %s: %v", filename, err) } } // WriteGo prepends a standard file comment and package statement to the given // bytes, applies gofmt, and writes them to w. func WriteGo(w io.Writer, pkg, tags string, b []byte) (n int, err error) { src := []byte(header) if tags != "" { src = append(src, tagLines(tags)...) src = append(src, '\n') } src = append(src, fmt.Sprintf("package %s\n\n", pkg)...) src = append(src, b...) formatted, err := format.Source(src) if err != nil { // Print the generated code even in case of an error so that the // returned error can be meaningfully interpreted. n, _ = w.Write(src) return n, err } return w.Write(formatted) } // Repackage rewrites a Go file from belonging to package main to belonging to // the given package. func Repackage(inFile, outFile, pkg string) { src, err := os.ReadFile(inFile) if err != nil { log.Fatalf("reading %s: %v", inFile, err) } const toDelete = "package main\n\n" i := bytes.Index(src, []byte(toDelete)) if i < 0 { log.Fatalf("Could not find %q in %s.", toDelete, inFile) } w := &bytes.Buffer{} w.Write(src[i+len(toDelete):]) WriteGoFile(outFile, pkg, w.Bytes()) } strcase-0.0.5/internal/gen/gentables/ 0000775 0000000 0000000 00000000000 14720254634 0017520 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/gen/gentables/.gitignore 0000664 0000000 0000000 00000000036 14720254634 0021507 0 ustar 00root root 0000000 0000000 /DATA /gentables *.exe *.test strcase-0.0.5/internal/gen/gentables/.golangci.yaml 0000777 0000000 0000000 00000000000 14720254634 0025626 2../../../.golangci.yaml ustar 00root root 0000000 0000000 strcase-0.0.5/internal/gen/gentables/main.go 0000664 0000000 0000000 00000142263 14720254634 0021003 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. // gen generates the Unicode lookup tables used by strcase. The tables must // be regenerated if this code is changed (`go generate`). package main import ( "bytes" "cmp" "crypto/sha256" "encoding/binary" "encoding/hex" "encoding/json" "flag" "fmt" "go/format" "io/fs" "log" "math" "os" "os/exec" "os/signal" "path/filepath" "runtime" "runtime/pprof" "slices" "sort" "strconv" "strings" "sync" "sync/atomic" "time" "unicode" "github.com/schollz/progressbar/v3" "golang.org/x/term" "golang.org/x/text/unicode/rangetable" "github.com/charlievieth/strcase/internal/gen/gen" "github.com/charlievieth/strcase/internal/gen/ucd" "github.com/charlievieth/strcase/internal/gen/util" ) func init() { initLogs() // If $GOMAXPROCS isn't set, use the full capacity of the machine. // For small machines, use at least 4 threads. if os.Getenv("GOMAXPROCS") == "" { n := runtime.NumCPU() if n < 4 { n = 4 } runtime.GOMAXPROCS(n) } } func initLogs() { log.SetPrefix("") log.SetFlags(log.Lshortfile) log.SetOutput(os.Stdout) // use stdout instead of stderr } // WARN: we need to include 'İ' (0x0130) and 'ı' (0x0131) in _FoldMap because // we don't want to fallback to using toUpperLower() since we don't accept the // upper/lower-case variants of these runes (breaks simple folding semantics). // // We should remove these runes and any other runes in _FoldMap from _UpperLower // and maybe remove 'İ' and 'ı' from _FoldMap as well. // // TODO: remove İ (0x0130) from _UpperLower and fix tests // TODO: consider renaming the generated tables const ( MaxChar = 0x10FFFF caseFoldShift = 19 caseFoldSize = 8192 foldMapShift = 24 foldMapSize = 256 upperLowerTableSize = 8192 upperLowerTableShift = 19 ) const ( GenCookieKey = "b3d53e54921be5a951563a7e77bfcb1a" GenCookieValue = "c1bbb5805a8c389e0dd50234d5c38cce" ) type foldPair struct { From uint32 To uint32 } var ( categories *unicode.RangeTable caseFolds []foldPair caseRanges []unicode.CaseRange // used by toLower and toUpper caseOrbit []foldPair // used by simpleFold asciiFold [unicode.MaxASCII + 1]uint16 ) var ( chars = make([]Char, MaxChar+1) scripts = make(map[string][]rune) props = make(map[string][]rune) // a property looks like a script; can share the format ) // TODO: move func loadCaseFolds() { ucd.Parse(gen.OpenUCDFile("CaseFolding.txt"), func(p *ucd.Parser) { kind := p.String(1) if kind != "C" && kind != "S" { // Only care about 'common' and 'simple' foldings. return } p1 := p.Rune(0) p2 := p.Rune(2) caseFolds = append(caseFolds, foldPair{uint32(p1), uint32(p2)}) chars[p1].foldCase = p2 }) slices.SortFunc(caseFolds, func(a, b foldPair) int { return cmp.Compare(a.From, b.From) }) } var buildTags = map[string]struct{ version, buildTags, filename string }{ "13.0.0": {"13.0.0", "go1.16,!go1.21", "tables_go116.go"}, "15.0.0": {"15.0.0", "go1.21", "tables_go121.go"}, } // tablesFileName is the names of the file to generate and is based off // of the Go version this program is ran with. // // NB: this must be called after command line flags are parsed func tablesFileName(dirname string) string { // gen.UnicodeVersion is set by the "-unicode" flag if name := buildTags[gen.UnicodeVersion()].filename; name != "" { return filepath.Join(dirname, name) } log.Panicf("unsupported Unicode version %q this script might need "+ "to be updated", gen.UnicodeVersion()) panic("unreachable") } type span struct { Start, End int64 } func generateSpans(start, end, delta int64) []span { maxEnd := end var spans []span for i := start; i <= end; i += delta { end := i + delta if end >= maxEnd { end = maxEnd } spans = append(spans, span{Start: i, End: end}) } // Reverse spans since larger values are more likely to be better seeds. // We previously randomly shuffled the spans, but led to non-deterministic // behavior when more than one seed was ideal. for i := len(spans)/2 - 1; i >= 0; i-- { opp := len(spans) - 1 - i spans[i], spans[opp] = spans[opp], spans[i] } return spans } func hash(seed, key, shift uint32) uint32 { m := seed * key return m >> shift } func shiftHash(seed, key, shift uint32) uint32 { key |= key << 24 // fill top bits not occupied by unicode.MaxRune m := seed * key return m >> shift } type HashConfig struct { TableName string TableSize int HashShift uint32 // TODO: this can be calculated from TableSize // TODO: name is confusing with HashShift ShiftHash bool // Use shiftHash instead of hash // Use the first valid hash value instead of performing an exhaustive // search to find the "best" hash seed. The seed is not deterministic // and this is only meant for testing since it is much much faster. FirstValidHash bool } var hashSeedCache = map[string]uint32{} func cacheKey(inputs []uint32) string { if !slices.IsSorted(inputs) { slices.Sort(inputs) } b := make([]byte, len(inputs)*4) for i, u := range inputs { binary.LittleEndian.PutUint32(b[i*4:], u) } sum := sha256.Sum256(b) return hex.EncodeToString(sum[:]) } // TODO: // - Return the first working hash value. // - Find a better algorithm. // // GenerateHashValues performs a brute-force search for the best possible // multiplicative hash seed for inputs. All uint32 values are checked. func (conf *HashConfig) GenerateHashValues(inputs []uint32) (hashSeed uint32) { const delta = 512 * 1024 if *useCachedSeeds { if seed, ok := tableInfo.TableHashes[conf.TableName]; ok { log.Printf("WARN: using cached seed %d for table: %s", seed, conf.TableName) return seed } } if seed, ok := hashSeedCache[cacheKey(inputs)]; ok { log.Printf("Using previously computed seed (0x%04X) for the %s table", seed, conf.TableName) tableInfo.TableHashes[conf.TableName] = seed return seed } if slices.IndexFunc(inputs, func(u uint32) bool { return u != 0 }) < 0 { log.Panicf("Input is all zeros for table: %s", conf.TableName) } log.Printf("Generating values for the %s table (this may take a long time)...\n", conf.TableName) // This can take awhile so use a progress bar. var bar *progressbar.ProgressBar if term.IsTerminal(int(os.Stdout.Fd())) { bar = progressbar.Default(math.MaxUint32) } else { bar = progressbar.DefaultSilent(math.MaxUint32) } start := time.Now() // TODO: set GOMAXPROCS to NumCPU ?? numProcs := runtime.GOMAXPROCS(0) // When FirstValidHash we exit before consuming all spans. done := make(chan struct{}) defer close(done) ch := make(chan *span, numProcs*2) go func() { spans := generateSpans(1, math.MaxUint32, delta) for i := range spans { select { case ch <- &spans[i]: case <-done: return } } close(ch) }() var ( bestIndex = int64(math.MaxInt64) bestSeed uint32 foundSeed atomic.Bool mu sync.Mutex wg sync.WaitGroup ) if seed := tableInfo.TableHashes[conf.TableName]; seed != 0 { bestSeed = seed } for i := 0; i < numProcs; i++ { wg.Add(1) go func(inputs []uint32) { defer wg.Done() seen := make([]bool, conf.TableSize) for sp := range ch { if foundSeed.Load() { return } best := atomic.LoadInt64(&bestIndex) Loop: for i := sp.Start; i <= sp.End && best >= int64(len(inputs)); i++ { for i := range seen { seen[i] = false // TODO: zero } // TODO: load more often if i%8192 == 0 { best = atomic.LoadInt64(&bestIndex) } var maxIdx int64 shift := conf.HashShift seed := uint32(i) useShiftHash := conf.ShiftHash // TODO: is there anyway we can optimize this? for _, x := range inputs { var u int64 if useShiftHash { u = int64(shiftHash(seed, x, shift)) } else { u = int64(hash(seed, x, shift)) } if u > best || seen[u] { continue Loop } seen[u] = true if u > maxIdx { maxIdx = u } } best = atomic.LoadInt64(&bestIndex) if maxIdx < best { // Use mutex to simplify updating both values mu.Lock() best = atomic.LoadInt64(&bestIndex) // re-check if maxIdx < best { atomic.StoreInt64(&bestIndex, maxIdx) atomic.StoreUint32(&bestSeed, seed) // Stop at the first valid has if conf.FirstValidHash && foundSeed.CompareAndSwap(false, true) { log.Println("WARN: -first-valid-hash flag provided: stopping early") mu.Unlock() return } } mu.Unlock() } } // TODO: figure out is we need to use `1 + sp.End - sp.Start` if err := bar.Add64(sp.End - sp.Start); err != nil { max := bar.GetMax64() log.Panicf("error updating progress bar: %v: max: %d delta: %d", err, max, 1+sp.End-sp.Start) } } }(inputs) } wg.Wait() bar.Close() // TODO: we can probably just check bestSeed if bestIndex == math.MaxInt64 || bestSeed == 0 { log.Panicf("Failed to generate hash values for %s table: max_index: %d seed: %d", conf.TableName, bestIndex, bestSeed) } if bestIndex <= int64(conf.TableSize/2) { // Error if the algorithm found a table size that is a smaller power of 2 log.Panicf("The hash table size can be reduced to %d or less. The best index is: %d.", conf.TableSize/2, bestIndex) } log.Printf("Successfully generated %s values in: %s\n"+ " max_index: %d\n"+ " seed: %d\n", conf.TableName, time.Since(start), bestIndex, bestSeed) // log.Printf("Successfully generated %s values in: %s", conf.TableName, time.Since(start)) // log.Printf(" max_index: %d", bestIndex) // log.Printf(" seed: %d", bestSeed) hashSeedCache[cacheKey(inputs)] = bestSeed // Cache result tableInfo.TableHashes[conf.TableName] = bestSeed return bestSeed } const ( CaseUpper = 1 << iota CaseLower CaseTitle CaseNone = 0 // must be zero CaseMissing = -1 // character not present; not a valid case state ) type caseState struct { point rune _case int deltaToUpper rune deltaToLower rune deltaToTitle rune } // Is d a continuation of the state of c? func (c *caseState) adjacent(d *caseState) bool { if d.point < c.point { c, d = d, c } switch { case d.point != c.point+1: // code points not adjacent (shouldn't happen) return false case d._case != c._case: // different cases return c.upperLowerAdjacent(d) case c._case == CaseNone: return false case c._case == CaseMissing: return false case d.deltaToUpper != c.deltaToUpper: return false case d.deltaToLower != c.deltaToLower: return false case d.deltaToTitle != c.deltaToTitle: return false } return true } // Is d the same as c, but opposite in upper/lower case? this would make it // an element of an UpperLower sequence. func (c *caseState) upperLowerAdjacent(d *caseState) bool { // check they're a matched case pair. we know they have adjacent values switch { case c._case == CaseUpper && d._case != CaseLower: return false case c._case == CaseLower && d._case != CaseUpper: return false } // matched pair (at least in upper/lower). make the order Upper Lower if c._case == CaseLower { c, d = d, c } // for an Upper Lower sequence the deltas have to be in order // c: 0 1 0 // d: -1 0 -1 switch { case c.deltaToUpper != 0: return false case c.deltaToLower != 1: return false case c.deltaToTitle != 0: return false case d.deltaToUpper != -1: return false case d.deltaToLower != 0: return false case d.deltaToTitle != -1: return false } return true } // Does this character start an UpperLower sequence? func (c *caseState) isUpperLower() bool { // for an Upper Lower sequence the deltas have to be in order // c: 0 1 0 switch { case c.deltaToUpper != 0: return false case c.deltaToLower != 1: return false case c.deltaToTitle != 0: return false } return true } // Does this character start a LowerUpper sequence? func (c *caseState) isLowerUpper() bool { // for an Upper Lower sequence the deltas have to be in order // c: -1 0 -1 switch { case c.deltaToUpper != -1: return false case c.deltaToLower != 0: return false case c.deltaToTitle != -1: return false } return true } func getCaseState(i rune) (c *caseState) { c = &caseState{point: i, _case: CaseNone} ch := &chars[i] switch ch.codePoint { case 0: c._case = CaseMissing // Will get NUL wrong but that doesn't matter return case ch.upperCase: c._case = CaseUpper case ch.lowerCase: c._case = CaseLower case ch.titleCase: c._case = CaseTitle } // Some things such as roman numeral U+2161 don't describe themselves // as upper case, but have a lower case. Second-guess them. if c._case == CaseNone && ch.lowerCase != 0 { c._case = CaseUpper } // Same in the other direction. if c._case == CaseNone && ch.upperCase != 0 { c._case = CaseLower } if ch.upperCase != 0 { c.deltaToUpper = ch.upperCase - i } if ch.lowerCase != 0 { c.deltaToLower = ch.lowerCase - i } if ch.titleCase != 0 { c.deltaToTitle = ch.titleCase - i } return } // TODO: we need to do this since we can't use the [unicode] package due to // a version mismatch between the Unicode version we're generating for and // Unicode version of Go version being used to generate this. // // TODO: fixup the above comment. func generateCaseRanges() []unicode.CaseRange { if gen.UnicodeVersion() == unicode.Version { return unicode.CaseRanges } // The requested Unicode version does not match the stdlibs var ( cases []unicode.CaseRange startState *caseState // the start of a run; nil for not active prevState = &caseState{} // the state of the previous character ) for i := range chars { state := getCaseState(rune(i)) if state.adjacent(prevState) { prevState = state continue } // end of run (possibly) if c, ok := getCaseRange(startState, prevState); ok { cases = append(cases, c) } // printCaseRange(startState, prevState) startState = nil if state._case != CaseMissing && state._case != CaseNone { startState = state } prevState = state } return cases } // Modified version of golang.org/x/text/internal/export/unicode.printCaseRange func getCaseRange(lo, hi *caseState) (unicode.CaseRange, bool) { if lo == nil { return unicode.CaseRange{}, false } if lo.deltaToUpper == 0 && lo.deltaToLower == 0 && lo.deltaToTitle == 0 { // character represents itself in all cases - no need to mention it return unicode.CaseRange{}, false } switch { case hi.point > lo.point && lo.isUpperLower(): c := unicode.CaseRange{ Lo: uint32(lo.point), Hi: uint32(hi.point), Delta: [unicode.MaxCase]rune{ unicode.UpperLower, unicode.UpperLower, unicode.UpperLower, }, } return c, true case hi.point > lo.point && lo.isLowerUpper(): log.Panicf("LowerUpper sequence: should not happen: %U. "+ "If it's real, need to fix To()", lo.point) default: c := unicode.CaseRange{ Lo: uint32(lo.point), Hi: uint32(hi.point), Delta: [unicode.MaxCase]rune{ lo.deltaToUpper, lo.deltaToLower, lo.deltaToTitle, }, } return c, true } return unicode.CaseRange{}, false } // simpleFold is the same as unicode.SimpleFold but uses the version of Unicode // we loaded. func simpleFold(r rune) rune { if r < 0 || r > unicode.MaxRune { return r } if int(r) < len(asciiFold) { return rune(asciiFold[r]) } // Consult caseOrbit table for special cases. lo := 0 hi := len(caseOrbit) for lo < hi { m := lo + (hi-lo)/2 if rune(caseOrbit[m].From) < r { lo = m + 1 } else { hi = m } } if lo < len(caseOrbit) && rune(caseOrbit[lo].From) == r { return rune(caseOrbit[lo].To) } // No folding specified. This is a one- or two-element // equivalence class containing rune and ToLower(rune) // and ToUpper(rune) if they are different from rune. if l := toLower(r); l != r { return l } return toUpper(r) } // to maps the rune using the specified case mapping. // It additionally reports whether caseRange contained a mapping for r. func to(_case int, r rune, caseRange []unicode.CaseRange) (mappedRune rune) { if len(caseRange) == 0 { panic("empty caseRange") } if _case < 0 || unicode.MaxCase <= _case { return unicode.ReplacementChar // as reasonable an error as any } // binary search over ranges lo := 0 hi := len(caseRange) for lo < hi { m := lo + (hi-lo)/2 cr := caseRange[m] if rune(cr.Lo) <= r && r <= rune(cr.Hi) { delta := cr.Delta[_case] if delta > unicode.MaxRune { // In an Upper-Lower sequence, which always starts with // an UpperCase letter, the real deltas always look like: // {0, 1, 0} UpperCase (Lower is next) // {-1, 0, -1} LowerCase (Upper, Title are previous) // The characters at even offsets from the beginning of the // sequence are upper case; the ones at odd offsets are lower. // The correct mapping can be done by clearing or setting the low // bit in the sequence offset. // The constants UpperCase and TitleCase are even while LowerCase // is odd so we take the low bit from _case. return rune(cr.Lo) + ((r-rune(cr.Lo))&^1 | rune(_case&1)) } return r + delta } if r < rune(cr.Lo) { hi = m } else { lo = m + 1 } } return r } // toUpper is the same as unicode.ToUpper but uses the Unicode table we loaded. func toUpper(r rune) rune { if r <= unicode.MaxASCII { if 'a' <= r && r <= 'z' { r -= 'a' - 'A' } return r } return to(unicode.UpperCase, r, caseRanges) } // toLower is the same as unicode.ToLower but uses the Unicode table we loaded. func toLower(r rune) rune { if r <= unicode.MaxASCII { if 'A' <= r && r <= 'Z' { r += 'a' - 'A' } return r } return to(unicode.LowerCase, r, caseRanges) } func folds(sr rune) []rune { r := simpleFold(sr) runes := make([]rune, 1, 2) runes[0] = sr for r != sr { runes = append(runes, r) r = simpleFold(r) } return runes } func genCaseFolds(w *bytes.Buffer, firstValidHash bool) { folds := caseFolds inputs := make([]uint32, len(folds)) for i, p := range folds { inputs[i] = p.From } conf := HashConfig{ TableName: "CaseFolds", TableSize: caseFoldSize, HashShift: caseFoldShift, FirstValidHash: firstValidHash, } seed := conf.GenerateHashValues(inputs) // TODO: probably don't need this pairs := make([]foldPair, len(folds)) copy(pairs, folds) slices.SortFunc(pairs, func(a, b foldPair) int { return cmp.Compare(a.From, b.From) }) hashes := make([]foldPair, 0, len(pairs)) for i, p := range pairs { hashes = append(hashes, foldPair{ From: hash(p.From, seed, caseFoldShift), To: uint32(i), }) } slices.SortFunc(hashes, func(a, b foldPair) int { return cmp.Compare(a.From, b.From) }) fmt.Fprint(w, "\n") fmt.Fprintf(w, "const _CaseFoldsSeed = 0x%04X\n", seed) fmt.Fprintf(w, "const _CaseFoldsShift = %d\n", caseFoldShift) fmt.Fprint(w, "\n") fmt.Fprintln(w, "// _CaseFolds stores all Unicode simple case-folds.") fmt.Fprintf(w, "var _CaseFolds = [%d]foldPair{\n", caseFoldSize) for _, h := range hashes { p := pairs[h.To] fmt.Fprintf(w, "\t%d: {0x%04X, 0x%04X}, // %q => %q\n", h.From, p.From, p.To, p.From, p.To) } fmt.Fprint(w, "}\n\n") } func dedupe(r []rune) []rune { if len(r) < 2 { return r } slices.Sort(r) return slices.Compact(r) } // TODO: consider renaming this table func genFoldTable(w *bytes.Buffer, firstValidHash bool) { runes := make(map[rune][]rune) rangetable.Visit(categories, func(r rune) { ff := folds(r) if len(ff) > 2 { runes[r] = append(runes[r], ff...) } if len(ff) == 1 && toUpper(r) != toLower(r) { runes[r] = append(runes[r], ff...) } }) // FIXME: fix the below since we have to work around it in the code // WARN: we should not need to add this manually runes['İ'] = append(runes['İ'], 'İ') runes['ß'] = append(runes['ß'], 'ẞ') keys := make([]uint32, 0, len(runes)) for k, rs := range runes { // Make sure the key is included (was an issue with: 'ß') if !slices.Contains(rs, k) { rs = append(rs, k) } runes[k] = dedupe(rs) keys = append(keys, uint32(k)) } conf := HashConfig{ TableName: "FoldMap", TableSize: foldMapSize, HashShift: foldMapShift, FirstValidHash: firstValidHash, } seed := conf.GenerateHashValues(keys) // Make key the first element of the rune slice folds := make([][]rune, 0, len(runes)) for k, rs := range runes { if rs[0] != k { a := []rune{k} for _, r := range rs { if r != k { a = append(a, r) } } rs = a } folds = append(folds, rs) } slices.SortFunc(folds, func(f1, f2 []rune) int { return cmp.Compare(f1[0], f2[0]) }) fmt.Fprint(w, "\n") fmt.Fprintf(w, "const _FoldMapSeed = 0x%04X\n", seed) fmt.Fprintf(w, "const _FoldMapShift = %d\n", foldMapShift) fmt.Fprint(w, "\n") fmt.Fprintln(w, "// FoldMap stores the Unicode case-folds for characters "+ "that have two or more folds.") fmt.Fprintf(w, "var _FoldMap = [%d][4]uint16{\n", foldMapSize) for _, ff := range folds { fmt.Fprintf(w, "\t%d: {0x%04X", hash(uint32(ff[0]), seed, foldMapShift), ff[0]) for _, f := range ff[1:] { fmt.Fprintf(w, ", 0x%04X", f) } fmt.Fprintf(w, "}, // %q\n", ff) } fmt.Fprint(w, "}\n\n") type runeSet struct { r uint32 a [2]rune } var noUpperLower []runeSet for k, rs := range runes { u := toUpper(k) l := toLower(k) a := make([]rune, 0, 2) for _, r := range rs { if r != u && r != l { a = append(a, r) } } if len(a) > 2 { log.Fatalf("fold set excluding upper/lower %q "+ "must have 2 or less elements got: %d", a, len(a)) } switch len(a) { case 0: a = append(a, k, k) case 1: a = append(a, a[0]) } slices.Sort(a) noUpperLower = append(noUpperLower, runeSet{uint32(k), [2]rune{a[0], a[1]}}) } slices.SortFunc(noUpperLower, func(c1, c2 runeSet) int { return cmp.Compare(c1.r, c2.r) }) const foldMapExcludingUpperLowerComment = ` // _FoldMapExcludingUpperLower stores the Unicode case-folds for charactecrs that // have two or more folds, but excludes the uppercase and lowercase forms of the // character.` fmt.Fprintln(w, "") fmt.Fprintf(w, "const _FoldMapExcludingUpperLowerSeed = 0x%04X\n", seed) fmt.Fprintf(w, "const _FoldMapExcludingUpperLowerShift = %d\n", foldMapShift) fmt.Fprintln(w, "") fmt.Fprintln(w, foldMapExcludingUpperLowerComment) fmt.Fprintf(w, "var _FoldMapExcludingUpperLower = [%d]struct {\n", foldMapSize) fmt.Fprintln(w, "\tr uint16") fmt.Fprintln(w, "\ta [2]uint16") fmt.Fprintln(w, "}{") for _, c := range noUpperLower { h := hash(c.r, seed, foldMapShift) if c.a[0] > math.MaxUint16 { log.Fatalf("rune 0x%04X is larger than MaxUint16 0x%04X", c.a[0], math.MaxUint16) } if c.a[1] > math.MaxUint16 { log.Fatalf("rune 0x%04X is larger than MaxUint16 0x%04X", c.a[1], math.MaxUint16) } fmt.Fprintf(w, "\t%d: {0x%04X, [2]uint16{0x%04X, 0x%04X}}, // %q: [%q, %q]\n", h, c.r, c.a[0], c.a[1], c.r, c.a[0], c.a[1]) } fmt.Fprint(w, "}\n\n") } func genUpperLowerTable(w *bytes.Buffer, firstValidHash bool) { // WARN: attempt to use caseOrbit so that we don't have to handle special // cases with toUpperLowerSpecial. const docComment = ` // _UpperLower stores upper/lower case pairs of Unicode code points. // This takes up more space than the stdlib's "unicode" package, but // is roughly ~4x faster.` type Case struct { Rune rune `json:"rune"` Upper rune `json:"upper"` Lower rune `json:"lower"` } var cases []Case // special cases where Rune != Upper or Lower var special []Case for r := rune('A'); r <= unicode.MaxRune; r++ { if r <= unicode.MaxASCII { continue } l := toLower(r) u := toUpper(r) if r != l || r != u { if r == l || r == u { cases = append(cases, Case{Rune: r, Upper: u, Lower: l}) } else { special = append(special, Case{Rune: r, Upper: u, Lower: l}) } } } keys := make([]uint32, len(cases)) for i, c := range cases { keys[i] = uint32(c.Rune) } // TODO: this is probably not necessary slices.Sort(keys) keys = slices.Compact(keys) conf := HashConfig{ TableName: "UpperLower", TableSize: upperLowerTableSize, HashShift: upperLowerTableShift, ShiftHash: true, FirstValidHash: firstValidHash, } seed := conf.GenerateHashValues(keys) fmt.Fprint(w, "\n") fmt.Fprintf(w, "const _UpperLowerSeed = 0x%04X\n", seed) fmt.Fprintf(w, "const _UpperLowerShift = %d\n", upperLowerTableShift) fmt.Fprint(w, "\n") fmt.Fprintln(w, strings.TrimSpace(docComment)) fmt.Fprintf(w, "var _UpperLower = [%d][2]uint32{\n", upperLowerTableSize) for _, c := range cases { fmt.Fprintf(w, "\t%d: {0x%04X, 0x%04X}, // %q => %q\n", shiftHash(seed, uint32(c.Rune), upperLowerTableShift), c.Upper, c.Lower, c.Upper, c.Lower) } fmt.Fprint(w, "}\n\n") slices.SortFunc(special, func(c1, c2 Case) int { return cmp.Compare(c1.Rune, c2.Rune) }) fmt.Fprintln(w, ` // toUpperLowerSpecial returns the uppercase and lowercase form of r, // which is a character that is not equal to either its uppercase or // lowercase form and thus cannot be mapped into the _UpperLower table. func toUpperLowerSpecial(r rune) (rune, rune, bool) { switch r {`) for _, c := range special { fmt.Fprintf(w, "\tcase %q:\n", c.Rune) fmt.Fprintf(w, "\t\treturn %q, %q, %t\n", c.Upper, c.Lower, true) } fmt.Fprintln(w, "\t}") fmt.Fprintln(w, "\treturn r, r, false") fmt.Fprintln(w, "}") } func writeInitGuard(w *bytes.Buffer) { const s = ` func init() { // This is essentially a compile time assertion that can only fail if a // future Go release updates the version of Unicode it supports. This // check is elided if the Unicode versions match. // // TLDR if you see this panic file an issue: // https://github.com/charlievieth/strcase/issues // if UnicodeVersion != unicode.Version { panic("strcase.UnicodeVersion \"" + UnicodeVersion + "\" != unicode.Version \"" + unicode.Version + "\"") } } ` w.WriteString(s) } func writeTypes(w *bytes.Buffer) { const s = ` // A foldPair stores Unicode case folding pairs type foldPair struct { From uint32 To uint32 } ` w.WriteString(s) } func writeFunctions(w *bytes.Buffer) { const s = ` // TODO: rename to "foldCase" // // CaseFold returns the Unicode simple case-fold for r, if one exists, or r // unmodified, if one does not exist. func CaseFold(r rune) rune { // TODO: check if r is ASCII here? u := uint32(r) h := (u * _CaseFoldsSeed) >> _CaseFoldsShift p := _CaseFolds[h] if p.From == u { r = rune(p.To) } return r } // TODO: rename func FoldMap(r rune) *[4]uint16 { u := uint32(r) h := (u * _FoldMapSeed) >> _FoldMapShift p := &_FoldMap[h] if uint32(p[0]) == u { return p } return nil } func FoldMapExcludingUpperLower(r rune) [2]rune { u := uint32(r) h := (u * _FoldMapSeed) >> _FoldMapShift p := &_FoldMapExcludingUpperLower[h] if uint32(p.r) == u { return [2]rune{rune(p.a[0]), rune(p.a[1])} } return [2]rune{} } // ToUpperLower combines unicode.ToUpper and unicode.ToLower in one function. func ToUpperLower(r rune) (upper, lower rune, foundMapping bool) { if r <= 0x80 { if 'A' <= r && r <= 'Z' { return r, r + ('a' - 'A'), true } if 'a' <= r && r <= 'z' { return r - ('a' - 'A'), r, true } return r, r, false } // Hash rune r and see if it's in the _UpperLower table. u := uint32(r) h := (u | u<<24) * _UpperLowerSeed p := &_UpperLower[h>>_UpperLowerShift] if p[0] == u || p[1] == u { return rune(p[0]), rune(p[1]), true } // Handle Unicode characters that do not equal // their upper and lower case forms. return toUpperLowerSpecial(r) } ` w.WriteString(s) } func runCommand(dir string, args ...string) { cmd := exec.Command("go", args...) cmd.Dir = dir out, err := cmd.CombinedOutput() if err != nil { log.Printf("Error: %v", err) log.Printf("Command: %s", strings.Join(cmd.Args, " ")) log.Printf("Output: %s", bytes.TrimSpace(out)) log.Panicf("Failed to build generated file: %v\n", err) } } func testBuild(tablesFile string, data []byte, skipTests bool) { dir, err := os.MkdirTemp("", "strcase.*") if err != nil { log.Panic(err) } tables := filepath.Join(dir, filepath.Base(tablesFile)) overlay := filepath.Join(dir, "overlay.json") type overlayJSON struct { Replace map[string]string } overlayData, err := json.Marshal(overlayJSON{ Replace: map[string]string{ // filepath.Base(tablesFile): tables, tablesFile: tables, }, }) if err != nil { log.Panic(err) } if err := os.WriteFile(overlay, overlayData, 0644); err != nil { log.Panic(err) } if err := os.WriteFile(tables, data, 0644); err != nil { log.Panic(err) } cmdDir := filepath.Dir(tablesFile) runCommand(cmdDir, "build", "-overlay="+overlay, "./...") if !skipTests { runCommand(cmdDir, "test", "-overlay="+overlay, "./...") } os.RemoveAll(dir) // Only remove temp dir if successful } func dataEqual(filename string, data []byte) bool { got, err := os.ReadFile(filename) return err == nil && bytes.Equal(got, data) } func writeFile(name string, data []byte) { if dataEqual(name, data) { return } f, err := os.CreateTemp(filepath.Dir(name), filepath.Base(name)+".tmp.*") if err != nil { log.Fatal(err) } tmp := f.Name() exit := func(err error) { os.Remove(tmp) log.Panic(err) } if _, err := f.Write(data); err != nil { exit(err) } if err := f.Chmod(0644); err != nil { exit(err) } if err := f.Close(); err != nil { exit(err) } if err := os.Rename(tmp, name); err != nil { exit(err) } } func writeTemp(name string, b []byte) { dir, err := os.MkdirTemp("", "strcase.gen.*") if err != nil { log.Panic(err) } path := filepath.Join(dir, name) if err := os.WriteFile(path, b, 0644); err != nil { log.Panic(err) } log.Println("TMPFILE:", path) } // TODO: use gen.CodeWriter // // writeGo formats the Go source in w and re-writes it back to w. func writeGo(w *bytes.Buffer, tablesFile, buildTags string) { data := make([]byte, w.Len()) copy(data, w.Bytes()) src, err := format.Source(data) if err != nil { writeTemp(tablesFile, data) log.Panic(err) } w.Reset() if _, err := gen.WriteGo(w, "tables", buildTags, src); err != nil { log.Fatal(err) } } func hashCaseFolds() string { b := make([]byte, 0, 4096) for _, p := range caseFolds { b = binary.LittleEndian.AppendUint32(b, p.From) b = binary.LittleEndian.AppendUint32(b, p.To) } return fmt.Sprintf("%x", sha256.Sum256(b)) } type TableInfo struct { Filename string `json:"filename"` UnicodeVersion string `json:"unicode_version"` CLDRVersion string `json:"cldr_version"` CaseFoldHash string `json:"case_fold_hash"` GenGoHash string `json:"gen_go_hash"` TableHashes map[string]uint32 `json:"table_hashes"` } var tableInfo = TableInfo{ TableHashes: map[string]uint32{}, } func readTableInfo(root, tablesFile string) (map[string]TableInfo, error) { m := make(map[string]TableInfo) // The ".tables.json" file is adjacent to the generated tables file. data, err := os.ReadFile(filepath.Join(root, ".tables.json")) if err != nil { return m, err } if err := json.Unmarshal(data, &m); err != nil { return m, err } return m, nil } // TODO: change this to use the Unicode version instead of the file name // // Note: loadTableInfo may be an absolute path. func loadTableInfo(root, tablesFile string) { m, err := readTableInfo(root, tablesFile) if err != nil { if os.IsNotExist(err) { return } log.Panic(err) } base := filepath.Base(tablesFile) tableInfo = m[base] // TODO: do we need this intermediary step ?? if tableInfo.Filename == "" { tableInfo.Filename = base } if tableInfo.TableHashes == nil { tableInfo.TableHashes = make(map[string]uint32) } } func updateTableInfoFile(root, tablesFile, fileHash, foldHash string) { base := filepath.Base(tablesFile) tableInfo.Filename = base tableInfo.UnicodeVersion = gen.UnicodeVersion() tableInfo.CLDRVersion = gen.CLDRVersion() tableInfo.CaseFoldHash = foldHash tableInfo.GenGoHash = fileHash m, err := readTableInfo(root, tablesFile) if err != nil && !os.IsNotExist(err) { log.Panic(err) } m[base] = tableInfo data, err := json.MarshalIndent(m, "", " ") if err != nil { log.Panic(err) } writeFile(filepath.Join(root, ".tables.json"), data) } func fileExists(name string) bool { _, err := os.Lstat(name) return err == nil } var category = map[string]bool{ // Nd Lu etc. // We use one-character names to identify merged categories "L": true, // Lu Ll Lt Lm Lo "P": true, // Pc Pd Ps Pe Pu Pf Po "M": true, // Mn Mc Me "N": true, // Nd Nl No "S": true, // Sm Sc Sk So "Z": true, // Zs Zl Zp "C": true, // Cc Cf Cs Co Cn } // This contains only the properties we're interested in. type Char struct { codePoint rune // if zero, this index is not a valid code point. category string upperCase rune lowerCase rune titleCase rune foldCase rune // simple case folding caseOrbit rune // next in simple case folding orbit } func allCategories() []string { a := make([]string, 0, len(category)) for k := range category { a = append(a, k) } sort.Strings(a) return a } func allCatFold(m map[string]map[rune]bool) []string { a := make([]string, 0, len(m)) for k := range m { a = append(a, k) } slices.Sort(a) return a } // WARN WARN WARN: move this func loadChars() { ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { c := Char{codePoint: p.Rune(0)} getRune := func(field int) rune { if p.String(field) == "" { return 0 } return p.Rune(field) } c.category = p.String(ucd.GeneralCategory) category[c.category] = true switch c.category { case "Nd": // Decimal digit p.Int(ucd.NumericValue) case "Lu": c.upperCase = getRune(ucd.CodePoint) c.lowerCase = getRune(ucd.SimpleLowercaseMapping) c.titleCase = getRune(ucd.SimpleTitlecaseMapping) case "Ll": c.upperCase = getRune(ucd.SimpleUppercaseMapping) c.lowerCase = getRune(ucd.CodePoint) c.titleCase = getRune(ucd.SimpleTitlecaseMapping) case "Lt": c.upperCase = getRune(ucd.SimpleUppercaseMapping) c.lowerCase = getRune(ucd.SimpleLowercaseMapping) c.titleCase = getRune(ucd.CodePoint) default: c.upperCase = getRune(ucd.SimpleUppercaseMapping) c.lowerCase = getRune(ucd.SimpleLowercaseMapping) c.titleCase = getRune(ucd.SimpleTitlecaseMapping) } chars[c.codePoint] = c }) } // WARN: rename and fix other loadCategories() func loadCategoryTables() map[string]*unicode.RangeTable { categoryOp := func(code rune, class uint8) bool { category := chars[code].category return len(category) > 0 && category[0] == class } list := allCategories() cats := make(map[string]*unicode.RangeTable, len(list)) // Avoid calculating these tables if possible if gen.UnicodeVersion() == unicode.Version { for _, name := range list { if _, ok := unicode.Categories[name]; !ok { log.Fatal("unknown category", name) } cats[name] = unicode.Categories[name] } return cats } for _, name := range list { if _, ok := category[name]; !ok { log.Fatal("unknown category", name) } var rt *unicode.RangeTable if len(name) == 1 { // unified categories rt = dumpRange(func(code rune) bool { return categoryOp(code, name[0]) }) } else { rt = dumpRange(func(code rune) bool { return chars[code].category == name }) } cats[name] = rt } return cats } type Op func(code rune) bool // TODO: rename func dumpRange(inCategory Op) *unicode.RangeTable { runes := []rune{} for i := range chars { r := rune(i) if inCategory(r) { runes = append(runes, r) } } return rangetable.New(runes...) } // PropList.txt has the same format as Scripts.txt so we can share its parser. func loadScriptOrProperty(doProps bool) map[string]*unicode.RangeTable { if gen.UnicodeVersion() == unicode.Version { if doProps { return unicode.Properties } return unicode.Scripts } file := "Scripts.txt" table := scripts if doProps { file = "PropList.txt" table = props } ucd.Parse(gen.OpenUCDFile(file), func(p *ucd.Parser) { name := p.String(1) table[name] = append(table[name], p.Rune(0)) }) // Handle deprecated "STerm" alias (this is only needed for tests) if rt, ok := table["Sentence_Terminal"]; ok { table["STerm"] = rt } tab := make(map[string]*unicode.RangeTable, len(table)) for name, runes := range table { tab[name] = rangetable.New(runes...) } return tab } func loadCasefold() (foldCategory, foldScript map[string]*unicode.RangeTable) { // Build list of case-folding groups attached to each canonical folded char (typically lower case). var caseOrbit = make([][]rune, MaxChar+1) for j := range chars { i := rune(j) c := &chars[i] if c.foldCase == 0 { continue } orb := caseOrbit[c.foldCase] if orb == nil { orb = append(orb, c.foldCase) } caseOrbit[c.foldCase] = append(orb, i) } // Insert explicit 1-element groups when assuming [lower, upper] would be wrong. for j := range chars { i := rune(j) c := &chars[i] f := c.foldCase if f == 0 { f = i } orb := caseOrbit[f] if orb == nil && (c.upperCase != 0 && c.upperCase != i || c.lowerCase != 0 && c.lowerCase != i) { // Default assumption of [upper, lower] is wrong. caseOrbit[i] = []rune{i} } } // Delete the groups for which assuming [lower, upper] or [upper, lower] is right. for i, orb := range caseOrbit { if len(orb) == 2 && chars[orb[0]].upperCase == orb[1] && chars[orb[1]].lowerCase == orb[0] { caseOrbit[i] = nil } if len(orb) == 2 && chars[orb[1]].upperCase == orb[0] && chars[orb[0]].lowerCase == orb[1] { caseOrbit[i] = nil } } // Record orbit information in chars. for _, orb := range caseOrbit { if orb == nil { continue } sort.Slice(orb, func(i, j int) bool { return orb[i] < orb[j] }) c := orb[len(orb)-1] for _, d := range orb { chars[c].caseOrbit = d c = d } } loadAsciiFold() loadCaseOrbit() // Fast exit if we don't need to recalculate these tables. if gen.UnicodeVersion() == unicode.Version { return unicode.FoldCategory, unicode.FoldScript } // Tables of category and script folding exceptions: code points // that must be added when interpreting a particular category/script // in a case-folding context. cat := make(map[string]map[rune]bool) for name := range category { if x := foldExceptions(inCategory(name)); len(x) > 0 { cat[name] = x } } scr := make(map[string]map[rune]bool) for name := range scripts { if x := foldExceptions(scripts[name]); len(x) > 0 { scr[name] = x } } return loadCatFold(cat), loadCatFold(scr) // TODO: this takes ~60ms } func loadAsciiFold() { for i := rune(0); i <= unicode.MaxASCII; i++ { c := chars[i] f := c.caseOrbit if f == 0 { switch { case c.lowerCase != i && c.lowerCase != 0: f = c.lowerCase case c.upperCase != i && c.upperCase != 0: f = c.upperCase default: f = i } } asciiFold[i] = uint16(f) } } // TODO: rename func loadCaseOrbit() { for i := range chars { c := &chars[i] if c.caseOrbit != 0 { caseOrbit = append(caseOrbit, foldPair{uint32(i), uint32(c.caseOrbit)}) } } } // inCategory returns a list of all the runes in the category. func inCategory(name string) []rune { var x []rune for j := range chars { i := rune(j) c := &chars[i] if c.category == name || len(name) == 1 && len(c.category) > 1 && c.category[0] == name[0] { x = append(x, i) } } // fmt.Printf("%s: %d\n", name, len(x)) return x } // foldExceptions returns a list of all the runes fold-equivalent // to runes in class but not in class themselves. func foldExceptions(class []rune) map[rune]bool { // Create map containing class and all fold-equivalent chars. m := make(map[rune]bool) for _, r := range class { c := &chars[r] if c.caseOrbit == 0 { // Just upper and lower. if u := c.upperCase; u != 0 { m[u] = true } if l := c.lowerCase; l != 0 { m[l] = true } m[r] = true continue } // Otherwise walk orbit. r0 := r for { m[r] = true r = chars[r].caseOrbit if r == r0 { break } } } // Remove class itself. for _, r := range class { delete(m, r) } // What's left is the exceptions. return m } func loadCatFold(m map[string]map[rune]bool) map[string]*unicode.RangeTable { folds := allCatFold(m) tabs := make(map[string]*unicode.RangeTable, len(folds)) for _, name := range folds { class := m[name] tabs[name] = dumpRange(func(code rune) bool { return class[code] }) } return tabs } // TODO: move to the top func initTables(root, tablesFile string) { loadTableInfo(root, tablesFile) loadChars() loadCaseFolds() // download Unicode tables foldCategories, foldScripts := loadCasefold() // TODO: this is slow (~200ms) cats := []map[string]*unicode.RangeTable{ loadCategoryTables(), loadScriptOrProperty(false), loadScriptOrProperty(true), foldCategories, foldScripts, } tabs := make([]*unicode.RangeTable, 0, len(cats)) for _, m := range cats { for _, rt := range m { tabs = append(tabs, rt) } } categories = rangetable.Merge(tabs...) caseRanges = generateCaseRanges() } func requireFlags(names ...string) { var missing []string for _, name := range names { if flag.Lookup(name) == nil { missing = append(missing, name) } } if len(missing) > 0 { log.Panicf("The following flags were not registered: %q", missing) } } func listSourceFiles(dir string) []string { match := func(name string) bool { if name == "go.mod" || name == "go.sum" { return true } if strings.HasSuffix(name, "_test.go") { return false } switch filepath.Ext(name) { case ".go", ".c", ".cc", ".cpp", ".cxx", ".f", ".F", ".f90", ".for", ".h", ".hh", ".hpp", ".hxx", ".m", ".s", ".S", ".swig", ".swigcxx", ".sx", ".syso": return true } return false } var a []string err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { name := d.Name() if d.IsDir() && (name == "vendor" || name[0] == '.') { return fs.SkipDir } if match(name) { a = append(a, path) } return nil }) if err != nil { log.Fatal(err) } slices.Sort(a) return a } func hashGenFiles() string { root, err := util.GenTablesRoot() if err != nil { log.Fatal(err) } files := listSourceFiles(root) if len(files) == 0 { log.Fatal("no go source files in:", root) } h := sha256.New() for _, name := range files { fmt.Fprintf(h, "%s\x00", filepath.Base(name)) data, err := os.ReadFile(name) if err != nil { log.Fatal(err) } _, _ = h.Write(data) _, _ = h.Write([]byte{'\x00', '\x00'}) } return fmt.Sprintf("%x", h.Sum(nil)) } var useCachedSeeds = flag.Bool("cache", false, "used cached seeds instead of regenerating (for testing only)") func realMain() int { initLogs() // Other packages configure logs on init so do it again here root, err := util.ProjectRoot() if err != nil { log.Panic(err) } flag.Usage = func() { flag.CommandLine.SetOutput(os.Stdout) // Write help to STDOUT fmt.Fprintf(flag.CommandLine.Output(), "Usage: %s [OPTION]...\n", filepath.Base(os.Args[0])) flag.PrintDefaults() } // NB(charlie): the "-url", "-iana", "-unicode", and "-cldr" flags are // registered by the github.com/charlievieth/strcase/internal/gen/gen package. requireFlags("url", "iana", "unicode", "cldr") skipTests := flag.Bool("skip-tests", false, "skip running tests") skipBuild := flag.Bool("skip-build", false, "skip building the strcase package (testing only)") dryRun := flag.Bool("dry-run", false, "report if generate would change the generated tables file and exit non-zero") // TODO: remove `-update-gen-hash` since it's dangerous and bypasses // our checks. updateGenHash := flag.Bool("update-gen-hash", false, `only update the hash of the gen.go file stored in ".tables.go" `+ `(WARN: this is only for development)`) cpuprofile := flag.String("cpuprofile", "", "write cpu profile to `file`\n"+ "NOTE: this traps SIGINT.\n"+ " First SIGINT the cpu profile is written to 'file'.\n"+ " Second SIGINT the program aborts.") firstValidHash := flag.Bool("first-valid-hash", false, "use the first valid hash instead of performing an exhaustive search (testing only, much faster)") outputDir := flag.String("dir", filepath.Join(root, "internal", "tables"), "write generated tables to this directory") // outputDir := flag.String("dir", filepath.Join(root), // "write generated tables to this directory") flag.Parse() if flag.NArg() != 0 { flag.Usage() return 1 } // Validate Unicode version flag var supportedVersions []string for v := range buildTags { supportedVersions = append(supportedVersions, v) } if _, ok := buildTags[gen.UnicodeVersion()]; !ok { slices.Sort(supportedVersions) log.Printf("The selected Unicode version %q is unsupported. Either the version\n"+ "is incorrect or this code needs to updated to handle a new version of Go.\n"+ "The supported Unicode versions are: %q.", gen.UnicodeVersion(), supportedVersions) return 1 } tablesFile := tablesFileName(*outputDir) // Use the Unicode version as the log prefix since we invoke this program // multiple times with different versions. log.SetPrefix("(" + gen.UnicodeVersion() + ") ") log.Println("Tables file:", tablesFile) if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal("could not create CPU profile: ", err) } if err := pprof.StartCPUProfile(f); err != nil { log.Fatal("could not start CPU profile: ", err) } defer pprof.StopCPUProfile() ch := make(chan os.Signal, 1) signal.Notify(ch, os.Interrupt) go func() { <-ch log.Println("writing CPU profile: next interrupt will stop the program") pprof.StopCPUProfile() if err := f.Close(); err != nil { log.Printf("error closing CPU profile: %v", err) } signal.Reset(os.Interrupt) }() } if !*updateGenHash && *outputDir != "." { if err := os.MkdirAll(*outputDir, 0755); err != nil { log.Println("error:", err) return 1 } } buildTags := buildTags[gen.UnicodeVersion()].buildTags if buildTags == "" { log.Printf("missing build tags for unicode version: %q", gen.UnicodeVersion()) return 1 } initTables(root, tablesFile) fileHash := hashGenFiles() // hash gentables source files foldHash := hashCaseFolds() chop := func(s string, n int) string { if len(s) >= n { return s[:n] } return s } if fileExists(tablesFile) && gen.UnicodeVersion() == tableInfo.UnicodeVersion && gen.CLDRVersion() == tableInfo.CLDRVersion && foldHash == tableInfo.CaseFoldHash && fileHash == tableInfo.GenGoHash { log.Printf("gen: exiting - no changes:\n"+ " unicode_version: %q\n"+ " cldr_version: %q\n"+ " case_fold_hash: %q\n"+ " gen_go_hash: %q\n", tableInfo.UnicodeVersion, tableInfo.CLDRVersion, chop(tableInfo.CaseFoldHash, 8), chop(tableInfo.GenGoHash, 8)) return 0 } isTerm := term.IsTerminal(1) ansi := func(color int, s string) string { if !isTerm { return s } return fmt.Sprintf("\x1b[%d;m%s\x1b[0;m", color, s) } colorize := func(args ...string) []any { if len(args)&1 != 0 { log.Panicf("number of args (%d) must be even!", len(args)) } // Quote args since we can't use '%q' in log.Printf for i, s := range args { args[i] = strconv.Quote(s) } // Colorize args that have changed if output is a terminal if isTerm { for i := 0; i < len(args); i += 2 { if args[i] != args[i+1] { args[i] = ansi(32, args[i]) // green args[i+1] = ansi(31, args[i+1]) // red } } } a := make([]any, len(args)) for i, s := range args { a[i] = s } return a } // TODO: print a relative path log.Printf("gen: would update "+tablesFile+" due to the following changes:\n"+ " unicode_version: %s => %s\n"+ " cldr_version: %s => %s\n"+ " case_fold_hash: %s => %s\n"+ " gen_go_hash: %s => %s\n\n", colorize(tableInfo.UnicodeVersion, gen.UnicodeVersion(), tableInfo.CLDRVersion, gen.CLDRVersion(), chop(tableInfo.CaseFoldHash, 8), chop(foldHash, 8), chop(tableInfo.GenGoHash, 8), chop(fileHash, 8))...) if *dryRun { log.Printf("%s gen: would change %s "+ "(remove -dry-run flag to update the generated files)\n", tablesFile, ansi(33, "WARN:")) log.Printf("%s gen: exiting now\n", ansi(33, "WARN:")) return 1 } // NB: can't test or build if the Unicode version does not match // the version used by the Go binary running this. if !*updateGenHash { var w bytes.Buffer w.WriteString("\n\nimport \"unicode\"\n\n") gen.WriteUnicodeVersion(&w) writeInitGuard(&w) writeTypes(&w) writeFunctions(&w) genCaseFolds(&w, *firstValidHash) genUpperLowerTable(&w, *firstValidHash) genFoldTable(&w, *firstValidHash) writeGo(&w, tablesFile, buildTags) if *skipBuild { log.Println("gen: skipping go build") } else { if gen.UnicodeVersion() != unicode.Version { log.Printf("gen: \"go build\" is ineffective because the generated file "+ "will be excluded due to Unicode version: %q != %q", tableInfo.UnicodeVersion, unicode.Version) } testBuild(tablesFile, w.Bytes(), *skipTests) } // For dry runs only report if tables.go would be changed and // exit with an error if so. if *dryRun { // TODO: this might be unreachable if !dataEqual(tablesFile, w.Bytes()) { fmt.Printf("gen: would change %s", tablesFile) return 1 } return 0 } writeFile(tablesFile, w.Bytes()) } updateTableInfoFile(root, tablesFile, fileHash, foldHash) log.Printf("Successfully generated tables:\n"+ " unicode_version: %q\n"+ " cldr_version: %q\n"+ " case_fold_hash: %q\n"+ " gen_go_hash: %q\n", tableInfo.UnicodeVersion, tableInfo.CLDRVersion, chop(tableInfo.CaseFoldHash, 8), chop(tableInfo.GenGoHash, 8)) // Exit 1 if we only update the hash of the generate files since this // is a development only flag. if *updateGenHash { return 1 } return 0 } func main() { if code := realMain(); code != 0 { os.Exit(code) } } strcase-0.0.5/internal/gen/gentables/main_test.go 0000664 0000000 0000000 00000016626 14720254634 0022045 0 ustar 00root root 0000000 0000000 package main import ( "bytes" "encoding/json" "errors" "flag" "os" "os/exec" "path/filepath" "reflect" "slices" "sort" "syscall" "testing" "unicode" "github.com/charlievieth/strcase/internal/gen/util" "github.com/stretchr/testify/assert" "golang.org/x/term" "golang.org/x/text/unicode/rangetable" ) func TestMain(m *testing.M) { // Tests must run with the same CLDR and Unicode version of the Go // version running the tests. This is because we use the unicode // package to assert that our code is correct. for _, name := range []string{"cldr", "unicode"} { f := flag.Lookup(name) if f.Value.String() != f.DefValue { panic(`The "-` + name + `" flag may not be set for tests.`) } } root, err := util.ProjectRoot() if err != nil { panic(err) } initTables(root, filepath.Join("../../tables", tablesFileName(unicode.Version))) os.Exit(m.Run()) } func sortedKeys[M ~map[string]V, V any](m M) []string { a := make([]string, 0, len(m)) for k := range m { a = append(a, k) } slices.Sort(a) return a } func writeJSON(t testing.TB, filename string, v any) { t.Helper() data, err := json.MarshalIndent(v, "", " ") if err != nil { t.Fatal(err) } data = append(data, '\n') if err := os.WriteFile(filename, data, 0644); err != nil { t.Fatal(err) } } func diff(t testing.TB, v1, v2 any) { if _, err := exec.LookPath("diff"); err != nil { assert.Equal(t, v1, v2) return } // Don't use t.TempDir() since we want to preserve the files so // that users can inspect them on test failure. tmp, err := os.MkdirTemp("", "strcase.*") if err != nil { t.Fatal(err) } writeJSON(t, tmp+"/want.json", v1) writeJSON(t, tmp+"/got.json", v2) args := []string{ "-u", tmp + "/want.json", tmp + "/got.json", } if term.IsTerminal(syscall.Stdout) { args = append([]string{"--color=always"}, args...) } cmd := exec.Command("diff", args...) cmd.Dir = tmp out, err := cmd.CombinedOutput() out = bytes.TrimSpace(out) if err != nil { var ee *exec.ExitError if errors.As(err, &ee) { if ee.ExitCode() != 1 { t.Fatalf("error running: %q: %v\n%s", cmd.Args, err, out) } } // Ok, exit code is due to the diff } t.Errorf("\n%s\nTMPDIR: %s\nvimdiff %s %s", out, tmp, tmp+"/want.json", tmp+"/got.json") } func rangetableEqual(r1, r2 *unicode.RangeTable) bool { if (r1 == nil) != (r2 == nil) { return false } return r1 != nil && r1.LatinOffset == r2.LatinOffset && slices.Equal(r1.R16, r2.R16) && slices.Equal(r1.R32, r2.R32) } func compareRangeTables(t *testing.T, want, got map[string]*unicode.RangeTable) { t.Run("Keys", func(t *testing.T) { k1 := sortedKeys(want) k2 := sortedKeys(got) if !slices.Equal(k1, k2) { diff(t, k1, k2) } }) if t.Failed() { return } t.Run("Tables", func(t *testing.T) { failures := 0 for key, rt1 := range want { t.Run(key, func(t *testing.T) { rt2 := got[key] if !rangetableEqual(rt1, rt2) { diff(t, rt1, rt2) t.Fail() failures++ } }) if failures >= 10 { t.Fatal("Too many errors:", failures) } } }) } func TestCategories(t *testing.T) { compareRangeTables(t, unicode.Categories, loadCategoryTables()) } func TestScript(t *testing.T) { compareRangeTables(t, unicode.Scripts, loadScriptOrProperty(false)) } func TestProperty(t *testing.T) { compareRangeTables(t, unicode.Properties, loadScriptOrProperty(true)) } func TestLoadCasefold(t *testing.T) { categories, scripts := loadCasefold() t.Run("FoldCategory", func(t *testing.T) { compareRangeTables(t, unicode.FoldCategory, categories) }) t.Run("FoldScript", func(t *testing.T) { compareRangeTables(t, unicode.FoldScript, scripts) }) } func TestUnicodeCategories(t *testing.T) { rangeTable := func(a []map[string]*unicode.RangeTable) *unicode.RangeTable { tabs := make([]*unicode.RangeTable, 0, len(a)) for _, m := range a { for _, rt := range m { tabs = append(tabs, rt) } } return rangetable.Merge(tabs...) } want := []map[string]*unicode.RangeTable{ unicode.Categories, unicode.Scripts, unicode.Properties, unicode.FoldCategory, unicode.FoldScript, } foldCategories, foldScripts := loadCasefold() got := []map[string]*unicode.RangeTable{ loadCategoryTables(), loadScriptOrProperty(false), loadScriptOrProperty(true), foldCategories, foldScripts, } for i := range want { k1 := sortedKeys(want[i]) k2 := sortedKeys(got[i]) assert.Equal(t, k1, k2) } for i, name := range []string{"Categories", "Scripts", "Properties", "FoldCategory", "FoldScript"} { if i >= len(want) { continue } t.Run(name, func(t *testing.T) { compareRangeTables(t, want[i], got[i]) }) } compareRangeTables( t, map[string]*unicode.RangeTable{"All": rangeTable(want)}, map[string]*unicode.RangeTable{"All": rangeTable(got)}, ) rangetableEqual(rangeTable(want), categories) } func TestGenerateSpans(t *testing.T) { t.Run("RandomShuffle", func(t *testing.T) { var spans []span for i := 0; i < 10; i++ { spans = generateSpans(0, 100, 7) sorted := sort.SliceIsSorted(spans, func(i, j int) bool { return spans[i].Start < spans[j].Start }) if !sorted { return } } t.Errorf("spans are not randomly shuffled: %+v", spans) }) t.Run("Complete", func(t *testing.T) { want := []span{ {Start: 1, End: 8}, {Start: 8, End: 15}, {Start: 15, End: 22}, {Start: 22, End: 29}, {Start: 29, End: 36}, {Start: 36, End: 43}, {Start: 43, End: 50}, {Start: 50, End: 50}, } spans := generateSpans(1, 50, 7) sort.Slice(spans, func(i, j int) bool { return spans[i].Start < spans[j].Start }) if !reflect.DeepEqual(want, spans) { diff(t, want, spans) } // assert.Equal(t, want, spans) }) } func TestGenerateCaseRanges(t *testing.T) { got := caseRanges want := unicode.CaseRanges if !reflect.DeepEqual(got, want) { diff(t, want, got) } } func TestToUpperLower(t *testing.T) { for r := rune(0); r <= unicode.MaxRune; r++ { if toLower(r) != unicode.ToLower(r) { t.Errorf("toLower(%U) = %U; want: %U", r, toLower(r), unicode.ToLower(r)) } if toUpper(r) != unicode.ToUpper(r) { t.Errorf("toUpper(%U) = %U; want: %U", r, toUpper(r), unicode.ToUpper(r)) } } } func TestSimpleFold(t *testing.T) { for r := rune(0); r <= unicode.MaxRune; r++ { if simpleFold(r) != unicode.SimpleFold(r) { t.Errorf("simpleFold(%[1]q/%[1]U) = %[2]q/%[2]U; want: %[3]q/%[3]U", r, simpleFold(r), unicode.SimpleFold(r)) } } } // WARN: DELETE ME // func TestFindModfile(t *testing.T) { // wd, err := os.Getwd() // if err != nil { // t.Fatal(err) // } // t.Fatal(findModfile(wd, "", "github.com/charlievieth/strcase")) // } /* func diff(t testing.TB, v1, v2 any) { if _, err := exec.LookPath("git"); err != nil { assert.Equal(t, v1, v2) return } tmp, err := os.MkdirTemp("", "strcase.*") if err != nil { t.Fatal(err) } writeJSON(t, tmp+"/want.json", v1) writeJSON(t, tmp+"/got.json", v2) args := []string{ "diff", "--no-index", "--exit-code", "--color=always", "--histogram", "--ignore-cr-at-eol", "--unified=6", tmp + "/want.json", tmp + "/got.json", } cmd := exec.Command("git", args...) cmd.Dir = tmp out, err := cmd.CombinedOutput() out = bytes.TrimSpace(out) if err != nil { var ee *exec.ExitError if errors.As(err, &ee) { if ee.ExitCode() != 1 { t.Fatalf("error running: %q: %v\n%s", cmd.Args, err, out) } } // Ok, exit code is due to the diff } t.Errorf("%s\nTMPDIR: %s\nvimdiff %s %s", out, tmp, tmp+"/want.json", tmp+"/got.json") } */ strcase-0.0.5/internal/gen/go.mod 0000664 0000000 0000000 00000001036 14720254634 0016662 0 ustar 00root root 0000000 0000000 module github.com/charlievieth/strcase/internal/gen go 1.22 require ( github.com/schollz/progressbar/v3 v3.14.6 github.com/stretchr/testify v1.9.0 golang.org/x/mod v0.20.0 golang.org/x/term v0.23.0 golang.org/x/text v0.17.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect golang.org/x/sys v0.24.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) strcase-0.0.5/internal/gen/go.sum 0000664 0000000 0000000 00000005357 14720254634 0016721 0 ustar 00root root 0000000 0000000 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/schollz/progressbar/v3 v3.14.6 h1:GyjwcWBAf+GFDMLziwerKvpuS7ZF+mNTAXIB2aspiZs= github.com/schollz/progressbar/v3 v3.14.6/go.mod h1:Nrzpuw3Nl0srLY0VlTvC4V6RL50pcEymjy6qyJAaLa0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= strcase-0.0.5/internal/gen/ucd/ 0000775 0000000 0000000 00000000000 14720254634 0016327 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/gen/ucd/ucd.go 0000664 0000000 0000000 00000021402 14720254634 0017430 0 ustar 00root root 0000000 0000000 // 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 ucd provides a parser for Unicode Character Database files, the // format of which is defined in https://www.unicode.org/reports/tr44/. See // https://www.unicode.org/Public/UCD/latest/ucd/ for example files. // // It currently does not support substitutions of missing fields. package ucd import ( "bufio" "errors" "fmt" "io" "log" "regexp" "strconv" "strings" ) // UnicodeData.txt fields. const ( CodePoint = iota Name GeneralCategory CanonicalCombiningClass BidiClass DecompMapping DecimalValue DigitValue NumericValue BidiMirrored Unicode1Name ISOComment SimpleUppercaseMapping SimpleLowercaseMapping SimpleTitlecaseMapping ) // Parse calls f for each entry in the given reader of a UCD file. It will close // the reader upon return. It will call log.Fatal if any error occurred. // // This implements the most common usage pattern of using Parser. func Parse(r io.ReadCloser, f func(p *Parser)) { defer r.Close() p := New(r) for p.Next() { f(p) } if err := p.Err(); err != nil { r.Close() // os.Exit will cause defers not to be called. log.Fatal(err) } } // An Option is used to configure a Parser. type Option func(p *Parser) func keepRanges(p *Parser) { p.keepRanges = true } var ( // KeepRanges prevents the expansion of ranges. The raw ranges can be // obtained by calling Range(0) on the parser. KeepRanges Option = keepRanges ) // The Part option register a handler for lines starting with a '@'. The text // after a '@' is available as the first field. Comments are handled as usual. func Part(f func(p *Parser)) Option { return func(p *Parser) { p.partHandler = f } } // The CommentHandler option passes comments that are on a line by itself to // a given handler. func CommentHandler(f func(s string)) Option { return func(p *Parser) { p.commentHandler = f } } // A Parser parses Unicode Character Database (UCD) files. type Parser struct { scanner *bufio.Scanner keepRanges bool // Don't expand rune ranges in field 0. err error comment string field []string // parsedRange is needed in case Range(0) is called more than once for one // field. In some cases this requires scanning ahead. line int parsedRange bool rangeStart, rangeEnd rune partHandler func(p *Parser) commentHandler func(s string) } func (p *Parser) setError(err error, msg string) { if p.err == nil && err != nil { if msg == "" { p.err = fmt.Errorf("ucd:line:%d: %v", p.line, err) } else { p.err = fmt.Errorf("ucd:line:%d:%s: %v", p.line, msg, err) } } } func (p *Parser) getField(i int) string { if i >= len(p.field) { return "" } return p.field[i] } // Err returns a non-nil error if any error occurred during parsing. func (p *Parser) Err() error { return p.err } // New returns a Parser for the given Reader. func New(r io.Reader, o ...Option) *Parser { p := &Parser{ scanner: bufio.NewScanner(r), } for _, f := range o { f(p) } return p } // Next parses the next line in the file. It returns true if a line was parsed // and false if it reached the end of the file. func (p *Parser) Next() bool { if !p.keepRanges && p.rangeStart < p.rangeEnd { p.rangeStart++ return true } p.comment = "" p.field = p.field[:0] p.parsedRange = false for p.scanner.Scan() && p.err == nil { p.line++ s := p.scanner.Text() if s == "" { continue } if s[0] == '#' { if p.commentHandler != nil { p.commentHandler(strings.TrimSpace(s[1:])) } continue } // Parse line if i := strings.IndexByte(s, '#'); i != -1 { p.comment = strings.TrimSpace(s[i+1:]) s = s[:i] } if s[0] == '@' { if p.partHandler != nil { p.field = append(p.field, strings.TrimSpace(s[1:])) p.partHandler(p) p.field = p.field[:0] } p.comment = "" continue } for { i := strings.IndexByte(s, ';') if i == -1 { p.field = append(p.field, strings.TrimSpace(s)) break } p.field = append(p.field, strings.TrimSpace(s[:i])) s = s[i+1:] } if !p.keepRanges { p.rangeStart, p.rangeEnd = p.getRange(0) } return true } p.setError(p.scanner.Err(), "scanner failed") return false } func parseRune(b string) (rune, error) { if len(b) > 2 && b[0] == 'U' && b[1] == '+' { b = b[2:] } x, err := strconv.ParseUint(b, 16, 32) return rune(x), err } func (p *Parser) parseRune(s string) rune { x, err := parseRune(s) p.setError(err, "failed to parse rune") return x } // Rune parses and returns field i as a rune. func (p *Parser) Rune(i int) rune { if i > 0 || p.keepRanges { return p.parseRune(p.getField(i)) } return p.rangeStart } // Runes interprets and returns field i as a sequence of runes. func (p *Parser) Runes(i int) (runes []rune) { add := func(s string) { if s = strings.TrimSpace(s); len(s) > 0 { runes = append(runes, p.parseRune(s)) } } for b := p.getField(i); ; { i := strings.IndexByte(b, ' ') if i == -1 { add(b) break } add(b[:i]) b = b[i+1:] } return } var ( errIncorrectLegacyRange = errors.New("ucd: unmatched <* First>") // reRange matches one line of a legacy rune range. reRange = regexp.MustCompile("^([0-9A-F]*);<([^,]*), ([^>]*)>(.*)$") ) // Range parses and returns field i as a rune range. A range is inclusive at // both ends. If the field only has one rune, first and last will be identical. // It supports the legacy format for ranges used in UnicodeData.txt. func (p *Parser) Range(i int) (first, last rune) { if !p.keepRanges { return p.rangeStart, p.rangeStart } return p.getRange(i) } func (p *Parser) getRange(i int) (first, last rune) { b := p.getField(i) if k := strings.Index(b, ".."); k != -1 { return p.parseRune(b[:k]), p.parseRune(b[k+2:]) } // The first field may not be a rune, in which case we may ignore any error // and set the range as 0..0. x, err := parseRune(b) if err != nil { // Disable range parsing henceforth. This ensures that an error will be // returned if the user subsequently will try to parse this field as // a Rune. p.keepRanges = true } // Special case for UnicodeData that was retained for backwards compatibility. if i == 0 && len(p.field) > 1 && strings.HasSuffix(p.field[1], "First>") { if p.parsedRange { return p.rangeStart, p.rangeEnd } mf := reRange.FindStringSubmatch(p.scanner.Text()) p.line++ if mf == nil || !p.scanner.Scan() { p.setError(errIncorrectLegacyRange, "") return x, x } // Using Bytes would be more efficient here, but Text is a lot easier // and this is not a frequent case. ml := reRange.FindStringSubmatch(p.scanner.Text()) if ml == nil || mf[2] != ml[2] || ml[3] != "Last" || mf[4] != ml[4] { p.setError(errIncorrectLegacyRange, "") return x, x } p.rangeStart, p.rangeEnd = x, p.parseRune(p.scanner.Text()[:len(ml[1])]) p.parsedRange = true return p.rangeStart, p.rangeEnd } return x, x } // bools recognizes all valid UCD boolean values. var bools = map[string]bool{ "": false, "N": false, "No": false, "F": false, "False": false, "Y": true, "Yes": true, "T": true, "True": true, } // Bool parses and returns field i as a boolean value. func (p *Parser) Bool(i int) bool { f := p.getField(i) for s, v := range bools { if f == s { return v } } p.setError(strconv.ErrSyntax, "error parsing bool") return false } // Int parses and returns field i as an integer value. func (p *Parser) Int(i int) int { x, err := strconv.ParseInt(p.getField(i), 10, 64) p.setError(err, "error parsing int") return int(x) } // Uint parses and returns field i as an unsigned integer value. func (p *Parser) Uint(i int) uint { x, err := strconv.ParseUint(p.getField(i), 10, 64) p.setError(err, "error parsing uint") return uint(x) } // Float parses and returns field i as a decimal value. func (p *Parser) Float(i int) float64 { x, err := strconv.ParseFloat(p.getField(i), 64) p.setError(err, "error parsing float") return x } // String parses and returns field i as a string value. func (p *Parser) String(i int) string { return p.getField(i) } // Strings parses and returns field i as a space-separated list of strings. func (p *Parser) Strings(i int) []string { ss := strings.Split(string(p.getField(i)), " ") for i, s := range ss { ss[i] = strings.TrimSpace(s) } return ss } // Comment returns the comments for the current line. func (p *Parser) Comment() string { return string(p.comment) } var errUndefinedEnum = errors.New("ucd: undefined enum value") // Enum interprets and returns field i as a value that must be one of the values // in enum. func (p *Parser) Enum(i int, enum ...string) string { f := p.getField(i) for _, s := range enum { if f == s { return s } } p.setError(errUndefinedEnum, "error parsing enum") return "" } strcase-0.0.5/internal/gen/ucd/ucd_test.go 0000664 0000000 0000000 00000005320 14720254634 0020470 0 ustar 00root root 0000000 0000000 package ucd import ( "strings" "testing" ) const file = ` # Comments should be skipped # rune; bool; uint; int; float; runes; # Y 0..0005; Y; 0; 2; -5.25 ; 0 1 2 3 4 5; 6..0007; Yes ; 6; 1; -4.25 ; 0006 0007; 8; T ; 8 ; 0 ;-3.25 ;;# T 9; True ;9 ; -1;-2.25 ; 0009; # more comments to be ignored @Part0 A; N; 10 ; -2; -1.25; ;# N B; No; 11 ; -3; -0.25; C; False;12; -4; 0.75; D; ;13;-5;1.75; @Part1 # Another part. # We test part comments get removed by not commenting the next line. E..10FFFF; F; 14 ; -6; 2.75; ` var want = []struct { start, end rune }{ {0x00, 0x05}, {0x06, 0x07}, {0x08, 0x08}, {0x09, 0x09}, {0x0A, 0x0A}, {0x0B, 0x0B}, {0x0C, 0x0C}, {0x0D, 0x0D}, {0x0E, 0x10FFFF}, } func TestGetters(t *testing.T) { parts := [][2]string{ {"Part0", ""}, {"Part1", "Another part."}, } handler := func(p *Parser) { if len(parts) == 0 { t.Error("Part handler invoked too many times.") return } want := parts[0] parts = parts[1:] if got0, got1 := p.String(0), p.Comment(); got0 != want[0] || got1 != want[1] { t.Errorf(`part: got %q, %q; want %q"`, got0, got1, want) } } p := New(strings.NewReader(file), KeepRanges, Part(handler)) for i := 0; p.Next(); i++ { start, end := p.Range(0) w := want[i] if start != w.start || end != w.end { t.Fatalf("%d:Range(0); got %#x..%#x; want %#x..%#x", i, start, end, w.start, w.end) } if w.start == w.end && p.Rune(0) != w.start { t.Errorf("%d:Range(0).start: got %U; want %U", i, p.Rune(0), w.start) } if got, want := p.Bool(1), w.start <= 9; got != want { t.Errorf("%d:Bool(1): got %v; want %v", i, got, want) } if got := p.Rune(4); got != 0 || p.Err() == nil { t.Errorf("%d:Rune(%q): got no error; want error", i, p.String(1)) } p.err = nil if got := p.Uint(2); rune(got) != start { t.Errorf("%d:Uint(2): got %v; want %v", i, got, start) } if got, want := p.Int(3), 2-i; got != want { t.Errorf("%d:Int(3): got %v; want %v", i, got, want) } if got, want := p.Float(4), -5.25+float64(i); got != want { t.Errorf("%d:Int(3): got %v; want %v", i, got, want) } if got := p.Runes(5); got == nil { if p.String(5) != "" { t.Errorf("%d:Runes(5): expected non-empty list", i) } } else { if got[0] != start || got[len(got)-1] != end { t.Errorf("%d:Runes(5): got %#x; want %#x..%#x", i, got, start, end) } } if got := p.Comment(); got != "" && got != p.String(1) { t.Errorf("%d:Comment(): got %v; want %v", i, got, p.String(1)) } } if err := p.Err(); err != nil { t.Errorf("Parser error: %v", err) } if len(parts) != 0 { t.Errorf("expected %d more invocations of part handler", len(parts)) } } strcase-0.0.5/internal/gen/util/ 0000775 0000000 0000000 00000000000 14720254634 0016531 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/gen/util/util.go 0000664 0000000 0000000 00000003307 14720254634 0020040 0 ustar 00root root 0000000 0000000 package util import ( "errors" "fmt" "os" "path/filepath" "golang.org/x/mod/modfile" ) func modfilePath(name string) (string, error) { data, err := os.ReadFile(name) if err != nil { return "", err } file, err := modfile.Parse(name, data, nil) if err != nil { return "", err } if file == nil || file.Module == nil || file.Module.Mod.Path == "" { return "", errors.New("util: missing module path: " + name) } return file.Module.Mod.Path, nil } func findModfile(child, pkgPath string) (string, error) { if !filepath.IsAbs(child) { return child, errors.New("directory must be absolute: " + child) } var first error dir := filepath.Clean(child) for { if _, err := os.Stat(dir + "/go.mod"); err == nil { path := filepath.Join(dir, "go.mod") pkg, err := modfilePath(path) if err != nil { if first == nil { first = err } continue } if pkg == pkgPath { return dir, nil } } parent := filepath.Dir(dir) if len(parent) >= len(dir) { break } dir = parent } if first != nil { return child, fmt.Errorf("util: error finding go.mod for package %q "+ "in directory: %q: %w", pkgPath, child, first) } return child, fmt.Errorf("util: failed to find go.mod for package %q "+ "in directory: %q", pkgPath, child) } func ProjectRoot() (string, error) { wd, err := os.Getwd() if err != nil { return "", err } dir, err := findModfile(wd, "github.com/charlievieth/strcase") if err != nil { return "", err } return dir, nil } func GenTablesRoot() (string, error) { root, err := ProjectRoot() if err != nil { return "", err } dir := filepath.Join(root, "internal/gen") if _, err := os.Stat(dir); err != nil { return "", err } return dir, nil } strcase-0.0.5/internal/gen/util/util_test.go 0000664 0000000 0000000 00000001573 14720254634 0021102 0 ustar 00root root 0000000 0000000 package util import ( "os" "path/filepath" "testing" ) func TestProjectRoot(t *testing.T) { wd, err := os.Getwd() if err != nil { t.Fatal(err) } want := filepath.Join(wd, "../../../") fi1, err := os.Stat(want) if err != nil { t.Fatal(err) } root, err := ProjectRoot() if err != nil { t.Fatal(err) } fi2, err := os.Stat(root) if err != nil { t.Fatal(err) } if !os.SameFile(fi1, fi2) { t.Fatalf("ProjectRoot() = %q; want: %q", root, want) } } func TestGenTablesRoot(t *testing.T) { wd, err := os.Getwd() if err != nil { t.Fatal(err) } want := filepath.Dir(wd) fi1, err := os.Stat(want) if err != nil { t.Fatal(err) } root, err := GenTablesRoot() if err != nil { t.Fatal(err) } fi2, err := os.Stat(root) if err != nil { t.Fatal(err) } if want != root || !os.SameFile(fi1, fi2) { t.Fatalf("GenTablesRoot() = %q; want: %q", root, want) } } strcase-0.0.5/internal/tables/ 0000775 0000000 0000000 00000000000 14720254634 0016255 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/tables/assigned/ 0000775 0000000 0000000 00000000000 14720254634 0020052 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/tables/assigned/README.md 0000664 0000000 0000000 00000000214 14720254634 0021326 0 ustar 00root root 0000000 0000000 # Assigned Copied from [text/unicode/rangetable](https://pkg.go.dev/golang.org/x/text@v0.17.0/unicode/rangetable) to avoid the dependency. strcase-0.0.5/internal/tables/assigned/assigned.go 0000664 0000000 0000000 00000002755 14720254634 0022207 0 ustar 00root root 0000000 0000000 package assigned import ( "sync" "unicode" ) // Assigned returns a RangeTable with all assigned code points for a given // Unicode version. This includes graphic, format, control, and private-use // characters. It returns nil if the data for the given version is not // available. func Assigned(version string) *unicode.RangeTable { return assigned[version] } var runes sync.Map // Assigned returns a slice of runes with all assigned code points for a given // Unicode version. This includes graphic, format, control, and private-use // characters. An empty slice is returned if the data for the given version is // not available. func AssignedRunes(version string) []rune { if v, ok := runes.Load(version); ok { return v.(func() []rune)() } rt := Assigned(version) if rt == nil { return nil } var all []rune var once sync.Once fn := func() []rune { once.Do(func() { n := 0 visit(rt, func(_ rune) { n++ }) all = make([]rune, 0, n) visit(rt, func(r rune) { all = append(all, r) }) }) return all } if v, loaded := runes.LoadOrStore(version, fn); loaded { return v.(func() []rune)() } return fn() } // visit visits all runes in the given RangeTable in order, calling fn for each. func visit(rt *unicode.RangeTable, fn func(rune)) { for _, r16 := range rt.R16 { for r := rune(r16.Lo); r <= rune(r16.Hi); r += rune(r16.Stride) { fn(r) } } for _, r32 := range rt.R32 { for r := rune(r32.Lo); r <= rune(r32.Hi); r += rune(r32.Stride) { fn(r) } } } strcase-0.0.5/internal/tables/assigned/assigned_test.go 0000664 0000000 0000000 00000001715 14720254634 0023241 0 ustar 00root root 0000000 0000000 package assigned import ( "reflect" "testing" "unicode" ) func TestAssigned(t *testing.T) { if Assigned(unicode.Version) == nil { t.Fatal("missing assigned Unicode points for version:", unicode.Version) } } func TestAssignedRunes(t *testing.T) { want := func(version string) []rune { var a []rune visit(Assigned(version), func(r rune) { a = append(a, r) }) if len(a) == 0 { t.Fatal("invalid Unicode version:", version) } return a } for _, version := range []string{ "13.0.0", unicode.Version, // 15.0.0 unless testing with go1.19 } { version := version t.Run(version, func(t *testing.T) { t.Parallel() w := want(version) a1 := AssignedRunes(version) if !reflect.DeepEqual(a1, w) { t.Error("AssignedRunes: invalid result") // don't print the massive slices } a2 := AssignedRunes(version) if &a1[0] != &a2[0] { t.Fatalf("AssignedRunes: result was not cached: %p == %p", &a1[0], &a2[0]) } }) } } strcase-0.0.5/internal/tables/assigned/tables13.0.0.go 0000664 0000000 0000000 00000642464 14720254634 0022333 0 ustar 00root root 0000000 0000000 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.16 && !go1.21 package assigned import "unicode" var assigned = map[string]*unicode.RangeTable{ "4.1.0": assigned4_1_0, "5.1.0": assigned5_1_0, "5.2.0": assigned5_2_0, "5.0.0": assigned5_0_0, "6.1.0": assigned6_1_0, "6.2.0": assigned6_2_0, "6.3.0": assigned6_3_0, "6.0.0": assigned6_0_0, "7.0.0": assigned7_0_0, "8.0.0": assigned8_0_0, "9.0.0": assigned9_0_0, "10.0.0": assigned10_0_0, "11.0.0": assigned11_0_0, "12.0.0": assigned12_0_0, "13.0.0": assigned13_0_0, } // size 2924 bytes (2 KiB) var assigned4_1_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0241, 1}, {0x0250, 0x036f, 1}, {0x0374, 0x0375, 1}, {0x037a, 0x037e, 4}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x03ce, 1}, {0x03d0, 0x0486, 1}, {0x0488, 0x04ce, 1}, {0x04d0, 0x04f9, 1}, {0x0500, 0x050f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05b9, 1}, {0x05bb, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x060b, 0x0615, 1}, {0x061b, 0x061e, 3}, {0x061f, 0x0621, 2}, {0x0622, 0x063a, 1}, {0x0640, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x076d, 1}, {0x0780, 0x07b1, 1}, {0x0901, 0x0939, 1}, {0x093c, 0x094d, 1}, {0x0950, 0x0954, 1}, {0x0958, 0x0970, 1}, {0x097d, 0x0981, 4}, {0x0982, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fa, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a59, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a74, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b43, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b61, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd7, 0x0be6, 15}, {0x0be7, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3e, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c60, 0x0c61, 1}, {0x0c66, 0x0c6f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce6, 5}, {0x0ce7, 0x0cef, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3e, 0x0d43, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d66, 5}, {0x0d67, 0x0d6f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6a, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fcf, 0x0fd1, 1}, {0x1000, 0x1021, 1}, {0x1023, 0x1027, 1}, {0x1029, 0x102a, 1}, {0x102c, 0x1032, 1}, {0x1036, 0x1039, 1}, {0x1040, 0x1059, 1}, {0x10a0, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1159, 1}, {0x115f, 0x11a2, 1}, {0x11a8, 0x11f9, 1}, {0x1200, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1401, 0x1676, 1}, {0x1680, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18a9, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19a9, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19d9, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a1f, 1}, {0x1d00, 0x1dc3, 1}, {0x1e00, 0x1e9b, 1}, {0x1ea0, 0x1ef9, 1}, {0x1f00, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2063, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b5, 1}, {0x20d0, 0x20eb, 1}, {0x2100, 0x214c, 1}, {0x2153, 0x2183, 1}, {0x2190, 0x23db, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x269c, 1}, {0x26a0, 0x26b1, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x2758, 2}, {0x2759, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27c6, 1}, {0x27d0, 0x27eb, 1}, {0x27f0, 0x2b13, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c80, 0x2cea, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2e00, 0x2e17, 1}, {0x2e1c, 0x2e1d, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312c, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31cf, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x3243, 1}, {0x3250, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fbb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa700, 0xa716, 1}, {0xa800, 0xa82b, 1}, {0xac00, 0xd7a3, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6a, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe23, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d12a, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7c9, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3152 bytes (3 KiB) var assigned5_1_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0523, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x061f, 1}, {0x0621, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0901, 0x0939, 1}, {0x093c, 0x094d, 1}, {0x0950, 0x0954, 1}, {0x0958, 0x0972, 1}, {0x097b, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fa, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fd4, 1}, {0x1000, 0x1099, 1}, {0x109e, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1159, 1}, {0x115f, 0x11a2, 1}, {0x11a8, 0x11f9, 1}, {0x1200, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1401, 0x1676, 1}, {0x1680, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19a9, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19d9, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a1f, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1baa, 1}, {0x1bae, 0x1bb9, 1}, {0x1c00, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1d00, 0x1de6, 1}, {0x1dfe, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b5, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x214f, 1}, {0x2153, 0x2188, 1}, {0x2190, 0x23e7, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x269d, 1}, {0x26a0, 0x26bc, 1}, {0x26c0, 0x26c3, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x2758, 2}, {0x2759, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27ca, 1}, {0x27cc, 0x27d0, 4}, {0x27d1, 0x2b4c, 1}, {0x2b50, 0x2b54, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2c6f, 1}, {0x2c71, 0x2c7d, 1}, {0x2c80, 0x2cea, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e30, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x3243, 1}, {0x3250, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fc3, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa500, 0xa62b, 1}, {0xa640, 0xa65f, 1}, {0xa662, 0xa673, 1}, {0xa67c, 0xa697, 1}, {0xa700, 0xa78c, 1}, {0xa7fb, 0xa82b, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xaa00, 161}, {0xaa01, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa5f, 1}, {0xac00, 0xd7a3, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6a, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010900, 0x00010919, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010a00, 193}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3518 bytes (3 KiB) var assigned5_2_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0525, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x061f, 1}, {0x0621, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0900, 0x0939, 1}, {0x093c, 0x094e, 1}, {0x0950, 0x0955, 1}, {0x0958, 0x0972, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fd8, 1}, {0x1000, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1baa, 1}, {0x1bae, 0x1bb9, 1}, {0x1c00, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cd0, 0x1cf2, 1}, {0x1d00, 0x1de6, 1}, {0x1dfd, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b8, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23e8, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26cd, 1}, {0x26cf, 0x26e1, 1}, {0x26e3, 0x26e8, 5}, {0x26e9, 0x26ff, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27ca, 1}, {0x27cc, 0x27d0, 4}, {0x27d1, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf1, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e31, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa65f, 1}, {0xa662, 0xa673, 1}, {0xa67c, 0xa697, 1}, {0xa6a0, 0xa6f7, 1}, {0xa700, 0xa78c, 1}, {0xa7fb, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaadf, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010a00, 193}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011080, 0x000110c1, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f131, 0x0001f13d, 12}, {0x0001f13f, 0x0001f142, 3}, {0x0001f146, 0x0001f14a, 4}, {0x0001f14b, 0x0001f14e, 1}, {0x0001f157, 0x0001f15f, 8}, {0x0001f179, 0x0001f17b, 2}, {0x0001f17c, 0x0001f17f, 3}, {0x0001f18a, 0x0001f18d, 1}, {0x0001f190, 0x0001f200, 112}, {0x0001f210, 0x0001f231, 1}, {0x0001f240, 0x0001f248, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3026 bytes (2 KiB) var assigned5_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x036f, 1}, {0x0374, 0x0375, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x03ce, 1}, {0x03d0, 0x0486, 1}, {0x0488, 0x0513, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x060b, 0x0615, 1}, {0x061b, 0x061e, 3}, {0x061f, 0x0621, 2}, {0x0622, 0x063a, 1}, {0x0640, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x076d, 1}, {0x0780, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0901, 0x0939, 1}, {0x093c, 0x094d, 1}, {0x0950, 0x0954, 1}, {0x0958, 0x0970, 1}, {0x097b, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fa, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a59, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a74, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b43, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b61, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd7, 0x0be6, 15}, {0x0be7, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3e, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c60, 0x0c61, 1}, {0x0c66, 0x0c6f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3e, 0x0d43, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d66, 5}, {0x0d67, 0x0d6f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6a, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fcf, 0x0fd1, 1}, {0x1000, 0x1021, 1}, {0x1023, 0x1027, 1}, {0x1029, 0x102a, 1}, {0x102c, 0x1032, 1}, {0x1036, 0x1039, 1}, {0x1040, 0x1059, 1}, {0x10a0, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1159, 1}, {0x115f, 0x11a2, 1}, {0x11a8, 0x11f9, 1}, {0x1200, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1401, 0x1676, 1}, {0x1680, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18a9, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19a9, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19d9, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a1f, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1d00, 0x1dca, 1}, {0x1dfe, 0x1e9b, 1}, {0x1ea0, 0x1ef9, 1}, {0x1f00, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2063, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b5, 1}, {0x20d0, 0x20ef, 1}, {0x2100, 0x214e, 1}, {0x2153, 0x2184, 1}, {0x2190, 0x23e7, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x269c, 1}, {0x26a0, 0x26b2, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x2758, 2}, {0x2759, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27ca, 1}, {0x27d0, 0x27eb, 1}, {0x27f0, 0x2b1a, 1}, {0x2b20, 0x2b23, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2c6c, 1}, {0x2c74, 0x2c77, 1}, {0x2c80, 0x2cea, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2e00, 0x2e17, 1}, {0x2e1c, 0x2e1d, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312c, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31cf, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x3243, 1}, {0x3250, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fbb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa700, 0xa71a, 1}, {0xa720, 0xa721, 1}, {0xa800, 0xa82b, 1}, {0xa840, 0xa877, 1}, {0xac00, 0xd7a3, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6a, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe23, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010900, 0x00010919, 1}, {0x0001091f, 0x00010a00, 225}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d12a, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4160 bytes (4 KiB) var assigned6_1_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058f, 0x0591, 2}, {0x0592, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0604, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a2, 0x08ac, 1}, {0x08e4, 0x08fe, 1}, {0x0900, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20b9, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e3b, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa697, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa793, 1}, {0xa7a0, 0xa7aa, 1}, {0xa7f8, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011180, 0x000111c8, 1}, {0x000111d0, 0x000111d9, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f540, 0x0001f543, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4160 bytes (4 KiB) var assigned6_2_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058f, 0x0591, 2}, {0x0592, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0604, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a2, 0x08ac, 1}, {0x08e4, 0x08fe, 1}, {0x0900, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20ba, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e3b, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa697, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa793, 1}, {0xa7a0, 0xa7aa, 1}, {0xa7f8, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011180, 0x000111c8, 1}, {0x000111d0, 0x000111d9, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f540, 0x0001f543, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4160 bytes (4 KiB) var assigned6_3_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058f, 0x0591, 2}, {0x0592, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0604, 1}, {0x0606, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a2, 0x08ac, 1}, {0x08e4, 0x08fe, 1}, {0x0900, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20ba, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e3b, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa697, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa793, 1}, {0xa7a0, 0xa7aa, 1}, {0xa7f8, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011180, 0x000111c8, 1}, {0x000111d0, 0x000111d9, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f540, 0x0001f543, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3812 bytes (3 KiB) var assigned6_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0900, 162}, {0x0901, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1baa, 1}, {0x1bae, 0x1bb9, 1}, {0x1bc0, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cd0, 0x1cf2, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20b9, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x27ca, 1}, {0x27cc, 0x27ce, 2}, {0x27cf, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf1, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e31, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa673, 1}, {0xa67c, 0xa697, 1}, {0xa6a0, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa791, 1}, {0xa7a0, 0xa7a9, 1}, {0xa7fa, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaadf, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010a00, 193}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f169, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f5ff, 1}, {0x0001f601, 0x0001f610, 1}, {0x0001f612, 0x0001f614, 1}, {0x0001f616, 0x0001f61c, 2}, {0x0001f61d, 0x0001f61e, 1}, {0x0001f620, 0x0001f625, 1}, {0x0001f628, 0x0001f62b, 1}, {0x0001f62d, 0x0001f630, 3}, {0x0001f631, 0x0001f633, 1}, {0x0001f635, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4898 bytes (4 KiB) var assigned7_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a1, 0x08b2, 1}, {0x08e4, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c81, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d01, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1cf8, 0x1cf9, 1}, {0x1d00, 0x1df5, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bd, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23fa, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd1, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e42, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa69d, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa7ad, 1}, {0xa7b0, 0xa7b1, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab5f, 1}, {0xab64, 0xab65, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe2d, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018c, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111c8, 1}, {0x000111cd, 0x000111d0, 3}, {0x000111d1, 0x000111da, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123d, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011301, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011357, 0x0001135d, 6}, {0x0001135e, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115c9, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011ac0, 449}, {0x00011ac1, 0x00011af8, 1}, {0x00012000, 0x00012398, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f32c, 1}, {0x0001f330, 0x0001f37d, 1}, {0x0001f380, 0x0001f3ce, 1}, {0x0001f3d4, 0x0001f3f7, 1}, {0x0001f400, 0x0001f4fe, 1}, {0x0001f500, 0x0001f54a, 1}, {0x0001f550, 0x0001f579, 1}, {0x0001f57b, 0x0001f5a3, 1}, {0x0001f5a5, 0x0001f642, 1}, {0x0001f645, 0x0001f6cf, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f3, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5048 bytes (4 KiB) var assigned8_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a1, 0x08b4, 1}, {0x08e3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0b01, 8}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c81, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d01, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d5f, 8}, {0x0d60, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1cf8, 0x1cf9, 1}, {0x1d00, 0x1df5, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20be, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x23fa, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd1, 1}, {0x2bec, 0x2bef, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e42, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fd5, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7ad, 1}, {0xa7b0, 0xa7b7, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fd, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018c, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010cff, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123d, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x00011719, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011ac0, 449}, {0x00011ac1, 0x00011af8, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f579, 1}, {0x0001f57b, 0x0001f5a3, 1}, {0x0001f5a5, 0x0001f6d0, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f3, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f910, 0x0001f918, 1}, {0x0001f980, 0x0001f984, 1}, {0x0001f9c0, 0x00020000, 1600}, {0x00020001, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5348 bytes (5 KiB) var assigned9_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a1, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d4, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0b01, 8}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d01, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1cf8, 0x1cf9, 1}, {0x1d00, 0x1df5, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20be, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x23fe, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd1, 1}, {0x2bec, 0x2bef, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e44, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fd5, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7ae, 1}, {0xa7b0, 0xa7b7, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fd, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010cff, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x00011719, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011ac0, 449}, {0x00011ac1, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00017000, 32}, {0x00017001, 0x000187ec, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94a, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f6d2, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f6, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f910, 0x0001f91e, 1}, {0x0001f920, 0x0001f927, 1}, {0x0001f930, 0x0001f933, 3}, {0x0001f934, 0x0001f93e, 1}, {0x0001f940, 0x0001f94b, 1}, {0x0001f950, 0x0001f95e, 1}, {0x0001f980, 0x0001f991, 1}, {0x0001f9c0, 0x00020000, 1600}, {0x00020001, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5492 bytes (5 KiB) var assigned10_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d4, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fd, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf9, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd2, 1}, {0x2bec, 0x2bef, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e49, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312e, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fea, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7ae, 1}, {0xa7b0, 0xa7b7, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fd, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010cff, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x00011719, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011a00, 257}, {0x00011a01, 0x00011a47, 1}, {0x00011a50, 0x00011a83, 1}, {0x00011a86, 0x00011a9c, 1}, {0x00011a9e, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe1, 1}, {0x00017000, 0x000187ec, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94a, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d4, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f8, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f900, 0x0001f90b, 1}, {0x0001f910, 0x0001f93e, 1}, {0x0001f940, 0x0001f94c, 1}, {0x0001f950, 0x0001f96b, 1}, {0x0001f980, 0x0001f997, 1}, {0x0001f9c0, 0x0001f9d0, 16}, {0x0001f9d1, 0x0001f9e6, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5654 bytes (5 KiB) var assigned11_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05ef, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x07fd, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fe, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a76, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1878, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1c90, 0x1cba, 1}, {0x1cbd, 0x1cc7, 1}, {0x1cd0, 0x1cf9, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bc8, 1}, {0x2bca, 0x2bfe, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e4e, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312f, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fef, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7b9, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a35, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a48, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010d27, 1}, {0x00010d30, 0x00010d39, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00010f00, 0x00010f27, 1}, {0x00010f30, 0x00010f59, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110cd, 0x000110d0, 3}, {0x000110d1, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011146, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133b, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x0001145e, 0x00011480, 34}, {0x00011481, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x0001171a, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x00011800, 0x0001183b, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011a00, 257}, {0x00011a01, 0x00011a47, 1}, {0x00011a50, 0x00011a83, 1}, {0x00011a86, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00011d60, 0x00011d65, 1}, {0x00011d67, 0x00011d68, 1}, {0x00011d6a, 0x00011d8e, 1}, {0x00011d90, 0x00011d91, 1}, {0x00011d93, 0x00011d98, 1}, {0x00011da0, 0x00011da9, 1}, {0x00011ee0, 0x00011ef8, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016e40, 0x00016e9a, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe1, 1}, {0x00017000, 0x000187f1, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d2e0, 0x0001d2f3, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d378, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94a, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ec71, 0x0001ecb4, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f16b, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d4, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f9, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d8, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f900, 0x0001f90b, 1}, {0x0001f910, 0x0001f93e, 1}, {0x0001f940, 0x0001f970, 1}, {0x0001f973, 0x0001f976, 1}, {0x0001f97a, 0x0001f97c, 2}, {0x0001f97d, 0x0001f9a2, 1}, {0x0001f9b0, 0x0001f9b9, 1}, {0x0001f9c0, 0x0001f9c2, 1}, {0x0001f9d0, 0x0001f9ff, 1}, {0x0001fa60, 0x0001fa6d, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5822 bytes (5 KiB) var assigned12_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05ef, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x07fd, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fe, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a76, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c77, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e86, 2}, {0x0e87, 0x0e8a, 1}, {0x0e8c, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0ea8, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1878, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1c90, 0x1cba, 1}, {0x1cbd, 0x1cc7, 1}, {0x1cd0, 0x1cfa, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e4f, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312f, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fef, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7bf, 1}, {0xa7c2, 0xa7c6, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab67, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a35, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a48, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010d27, 1}, {0x00010d30, 0x00010d39, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00010f00, 0x00010f27, 1}, {0x00010f30, 0x00010f59, 1}, {0x00010fe0, 0x00010ff6, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110cd, 0x000110d0, 3}, {0x000110d1, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011146, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133b, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x0001145e, 0x0001145f, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b8, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x0001171a, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x00011800, 0x0001183b, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x000119a0, 161}, {0x000119a1, 0x000119a7, 1}, {0x000119aa, 0x000119d7, 1}, {0x000119da, 0x000119e4, 1}, {0x00011a00, 0x00011a47, 1}, {0x00011a50, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00011d60, 0x00011d65, 1}, {0x00011d67, 0x00011d68, 1}, {0x00011d6a, 0x00011d8e, 1}, {0x00011d90, 0x00011d91, 1}, {0x00011d93, 0x00011d98, 1}, {0x00011da0, 0x00011da9, 1}, {0x00011ee0, 0x00011ef8, 1}, {0x00011fc0, 0x00011ff1, 1}, {0x00011fff, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00013430, 0x00013438, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016e40, 0x00016e9a, 1}, {0x00016f00, 0x00016f4a, 1}, {0x00016f4f, 0x00016f87, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe3, 1}, {0x00017000, 0x000187f7, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b150, 0x0001b152, 1}, {0x0001b164, 0x0001b167, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d2e0, 0x0001d2f3, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d378, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e100, 0x0001e12c, 1}, {0x0001e130, 0x0001e13d, 1}, {0x0001e140, 0x0001e149, 1}, {0x0001e14e, 0x0001e14f, 1}, {0x0001e2c0, 0x0001e2f9, 1}, {0x0001e2ff, 0x0001e800, 1281}, {0x0001e801, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94b, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ec71, 0x0001ecb4, 1}, {0x0001ed01, 0x0001ed3d, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f16c, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d5, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6fa, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d8, 1}, {0x0001f7e0, 0x0001f7eb, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f900, 0x0001f90b, 1}, {0x0001f90d, 0x0001f971, 1}, {0x0001f973, 0x0001f976, 1}, {0x0001f97a, 0x0001f9a2, 1}, {0x0001f9a5, 0x0001f9aa, 1}, {0x0001f9ae, 0x0001f9ca, 1}, {0x0001f9cd, 0x0001fa53, 1}, {0x0001fa60, 0x0001fa6d, 1}, {0x0001fa70, 0x0001fa73, 1}, {0x0001fa78, 0x0001fa7a, 1}, {0x0001fa80, 0x0001fa82, 1}, {0x0001fa90, 0x0001fa95, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5966 bytes (5 KiB) var assigned13_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05ef, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x07fd, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08c7, 1}, {0x08d3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fe, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a76, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b55, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c77, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d81, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e86, 2}, {0x0e87, 0x0e8a, 1}, {0x0e8c, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0ea8, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1878, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1ac0, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1c90, 0x1cba, 1}, {0x1cbd, 0x1cc7, 1}, {0x1cd0, 0x1cfa, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b97, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e52, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312f, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x9ffc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7bf, 1}, {0xa7c2, 0xa7ca, 1}, {0xa7f5, 0xa82c, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab6b, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019c, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a35, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a48, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010d27, 1}, {0x00010d30, 0x00010d39, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00010e80, 0x00010ea9, 1}, {0x00010eab, 0x00010ead, 1}, {0x00010eb0, 0x00010eb1, 1}, {0x00010f00, 0x00010f27, 1}, {0x00010f30, 0x00010f59, 1}, {0x00010fb0, 0x00010fcb, 1}, {0x00010fe0, 0x00010ff6, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110cd, 0x000110d0, 3}, {0x000110d1, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011147, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133b, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x0001145b, 1}, {0x0001145d, 0x00011461, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b8, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x0001171a, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x00011800, 0x0001183b, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011906, 1}, {0x00011909, 0x0001190c, 3}, {0x0001190d, 0x00011913, 1}, {0x00011915, 0x00011916, 1}, {0x00011918, 0x00011935, 1}, {0x00011937, 0x00011938, 1}, {0x0001193b, 0x00011946, 1}, {0x00011950, 0x00011959, 1}, {0x000119a0, 0x000119a7, 1}, {0x000119aa, 0x000119d7, 1}, {0x000119da, 0x000119e4, 1}, {0x00011a00, 0x00011a47, 1}, {0x00011a50, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00011d60, 0x00011d65, 1}, {0x00011d67, 0x00011d68, 1}, {0x00011d6a, 0x00011d8e, 1}, {0x00011d90, 0x00011d91, 1}, {0x00011d93, 0x00011d98, 1}, {0x00011da0, 0x00011da9, 1}, {0x00011ee0, 0x00011ef8, 1}, {0x00011fb0, 0x00011fc0, 16}, {0x00011fc1, 0x00011ff1, 1}, {0x00011fff, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00013430, 0x00013438, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016e40, 0x00016e9a, 1}, {0x00016f00, 0x00016f4a, 1}, {0x00016f4f, 0x00016f87, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe4, 1}, {0x00016ff0, 0x00016ff1, 1}, {0x00017000, 0x000187f7, 1}, {0x00018800, 0x00018cd5, 1}, {0x00018d00, 0x00018d08, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b150, 0x0001b152, 1}, {0x0001b164, 0x0001b167, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d2e0, 0x0001d2f3, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d378, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e100, 0x0001e12c, 1}, {0x0001e130, 0x0001e13d, 1}, {0x0001e140, 0x0001e149, 1}, {0x0001e14e, 0x0001e14f, 1}, {0x0001e2c0, 0x0001e2f9, 1}, {0x0001e2ff, 0x0001e800, 1281}, {0x0001e801, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94b, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ec71, 0x0001ecb4, 1}, {0x0001ed01, 0x0001ed3d, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f1ad, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d7, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6fc, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d8, 1}, {0x0001f7e0, 0x0001f7eb, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f8b0, 0x0001f8b1, 1}, {0x0001f900, 0x0001f978, 1}, {0x0001f97a, 0x0001f9cb, 1}, {0x0001f9cd, 0x0001fa53, 1}, {0x0001fa60, 0x0001fa6d, 1}, {0x0001fa70, 0x0001fa74, 1}, {0x0001fa78, 0x0001fa7a, 1}, {0x0001fa80, 0x0001fa86, 1}, {0x0001fa90, 0x0001faa8, 1}, {0x0001fab0, 0x0001fab6, 1}, {0x0001fac0, 0x0001fac2, 1}, {0x0001fad0, 0x0001fad6, 1}, {0x0001fb00, 0x0001fb92, 1}, {0x0001fb94, 0x0001fbca, 1}, {0x0001fbf0, 0x0001fbf9, 1}, {0x00020000, 0x0002a6dd, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x00030000, 0x0003134a, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // Total size 67140 bytes (65 KiB) strcase-0.0.5/internal/tables/assigned/tables15.0.0.go 0000664 0000000 0000000 00000707500 14720254634 0022326 0 ustar 00root root 0000000 0000000 // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. //go:build go1.21 package assigned import "unicode" var assigned = map[string]*unicode.RangeTable{ "4.1.0": assigned4_1_0, "5.1.0": assigned5_1_0, "5.2.0": assigned5_2_0, "5.0.0": assigned5_0_0, "6.1.0": assigned6_1_0, "6.2.0": assigned6_2_0, "6.3.0": assigned6_3_0, "6.0.0": assigned6_0_0, "7.0.0": assigned7_0_0, "8.0.0": assigned8_0_0, "9.0.0": assigned9_0_0, "10.0.0": assigned10_0_0, "11.0.0": assigned11_0_0, "12.0.0": assigned12_0_0, "13.0.0": assigned13_0_0, "15.0.0": assigned15_0_0, } // size 2924 bytes (2 KiB) var assigned4_1_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0241, 1}, {0x0250, 0x036f, 1}, {0x0374, 0x0375, 1}, {0x037a, 0x037e, 4}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x03ce, 1}, {0x03d0, 0x0486, 1}, {0x0488, 0x04ce, 1}, {0x04d0, 0x04f9, 1}, {0x0500, 0x050f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05b9, 1}, {0x05bb, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x060b, 0x0615, 1}, {0x061b, 0x061e, 3}, {0x061f, 0x0621, 2}, {0x0622, 0x063a, 1}, {0x0640, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x076d, 1}, {0x0780, 0x07b1, 1}, {0x0901, 0x0939, 1}, {0x093c, 0x094d, 1}, {0x0950, 0x0954, 1}, {0x0958, 0x0970, 1}, {0x097d, 0x0981, 4}, {0x0982, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fa, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a59, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a74, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b43, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b61, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd7, 0x0be6, 15}, {0x0be7, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3e, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c60, 0x0c61, 1}, {0x0c66, 0x0c6f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce6, 5}, {0x0ce7, 0x0cef, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3e, 0x0d43, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d66, 5}, {0x0d67, 0x0d6f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6a, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fcf, 0x0fd1, 1}, {0x1000, 0x1021, 1}, {0x1023, 0x1027, 1}, {0x1029, 0x102a, 1}, {0x102c, 0x1032, 1}, {0x1036, 0x1039, 1}, {0x1040, 0x1059, 1}, {0x10a0, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1159, 1}, {0x115f, 0x11a2, 1}, {0x11a8, 0x11f9, 1}, {0x1200, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1401, 0x1676, 1}, {0x1680, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18a9, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19a9, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19d9, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a1f, 1}, {0x1d00, 0x1dc3, 1}, {0x1e00, 0x1e9b, 1}, {0x1ea0, 0x1ef9, 1}, {0x1f00, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2063, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b5, 1}, {0x20d0, 0x20eb, 1}, {0x2100, 0x214c, 1}, {0x2153, 0x2183, 1}, {0x2190, 0x23db, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x269c, 1}, {0x26a0, 0x26b1, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x2758, 2}, {0x2759, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27c6, 1}, {0x27d0, 0x27eb, 1}, {0x27f0, 0x2b13, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c80, 0x2cea, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2e00, 0x2e17, 1}, {0x2e1c, 0x2e1d, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312c, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31cf, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x3243, 1}, {0x3250, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fbb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa700, 0xa716, 1}, {0xa800, 0xa82b, 1}, {0xac00, 0xd7a3, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6a, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe23, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d12a, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7c9, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3152 bytes (3 KiB) var assigned5_1_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0523, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x061f, 1}, {0x0621, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0901, 0x0939, 1}, {0x093c, 0x094d, 1}, {0x0950, 0x0954, 1}, {0x0958, 0x0972, 1}, {0x097b, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fa, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fd4, 1}, {0x1000, 0x1099, 1}, {0x109e, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1159, 1}, {0x115f, 0x11a2, 1}, {0x11a8, 0x11f9, 1}, {0x1200, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1401, 0x1676, 1}, {0x1680, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19a9, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19d9, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a1f, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1baa, 1}, {0x1bae, 0x1bb9, 1}, {0x1c00, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1d00, 0x1de6, 1}, {0x1dfe, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b5, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x214f, 1}, {0x2153, 0x2188, 1}, {0x2190, 0x23e7, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x269d, 1}, {0x26a0, 0x26bc, 1}, {0x26c0, 0x26c3, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x2758, 2}, {0x2759, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27ca, 1}, {0x27cc, 0x27d0, 4}, {0x27d1, 0x2b4c, 1}, {0x2b50, 0x2b54, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2c6f, 1}, {0x2c71, 0x2c7d, 1}, {0x2c80, 0x2cea, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e30, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x3243, 1}, {0x3250, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fc3, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa500, 0xa62b, 1}, {0xa640, 0xa65f, 1}, {0xa662, 0xa673, 1}, {0xa67c, 0xa697, 1}, {0xa700, 0xa78c, 1}, {0xa7fb, 0xa82b, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xaa00, 161}, {0xaa01, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa5f, 1}, {0xac00, 0xd7a3, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6a, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010900, 0x00010919, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010a00, 193}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3518 bytes (3 KiB) var assigned5_2_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0525, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x061f, 1}, {0x0621, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0900, 0x0939, 1}, {0x093c, 0x094e, 1}, {0x0950, 0x0955, 1}, {0x0958, 0x0972, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fd8, 1}, {0x1000, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1baa, 1}, {0x1bae, 0x1bb9, 1}, {0x1c00, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cd0, 0x1cf2, 1}, {0x1d00, 0x1de6, 1}, {0x1dfd, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b8, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23e8, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26cd, 1}, {0x26cf, 0x26e1, 1}, {0x26e3, 0x26e8, 5}, {0x26e9, 0x26ff, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27ca, 1}, {0x27cc, 0x27d0, 4}, {0x27d1, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf1, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e31, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa65f, 1}, {0xa662, 0xa673, 1}, {0xa67c, 0xa697, 1}, {0xa6a0, 0xa6f7, 1}, {0xa700, 0xa78c, 1}, {0xa7fb, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaadf, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010a00, 193}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011080, 0x000110c1, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f131, 0x0001f13d, 12}, {0x0001f13f, 0x0001f142, 3}, {0x0001f146, 0x0001f14a, 4}, {0x0001f14b, 0x0001f14e, 1}, {0x0001f157, 0x0001f15f, 8}, {0x0001f179, 0x0001f17b, 2}, {0x0001f17c, 0x0001f17f, 3}, {0x0001f18a, 0x0001f18d, 1}, {0x0001f190, 0x0001f200, 112}, {0x0001f210, 0x0001f231, 1}, {0x0001f240, 0x0001f248, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3026 bytes (2 KiB) var assigned5_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x036f, 1}, {0x0374, 0x0375, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x03ce, 1}, {0x03d0, 0x0486, 1}, {0x0488, 0x0513, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x060b, 0x0615, 1}, {0x061b, 0x061e, 3}, {0x061f, 0x0621, 2}, {0x0622, 0x063a, 1}, {0x0640, 0x065e, 1}, {0x0660, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x076d, 1}, {0x0780, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0901, 0x0939, 1}, {0x093c, 0x094d, 1}, {0x0950, 0x0954, 1}, {0x0958, 0x0970, 1}, {0x097b, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fa, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a59, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a74, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b43, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b61, 1}, {0x0b66, 0x0b71, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd7, 0x0be6, 15}, {0x0be7, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3e, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c60, 0x0c61, 1}, {0x0c66, 0x0c6f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d28, 1}, {0x0d2a, 0x0d39, 1}, {0x0d3e, 0x0d43, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4d, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d66, 5}, {0x0d67, 0x0d6f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6a, 1}, {0x0f71, 0x0f8b, 1}, {0x0f90, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fcf, 0x0fd1, 1}, {0x1000, 0x1021, 1}, {0x1023, 0x1027, 1}, {0x1029, 0x102a, 1}, {0x102c, 0x1032, 1}, {0x1036, 0x1039, 1}, {0x1040, 0x1059, 1}, {0x10a0, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1159, 1}, {0x115f, 0x11a2, 1}, {0x11a8, 0x11f9, 1}, {0x1200, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135f, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1401, 0x1676, 1}, {0x1680, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18a9, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19a9, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19d9, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a1f, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1d00, 0x1dca, 1}, {0x1dfe, 0x1e9b, 1}, {0x1ea0, 0x1ef9, 1}, {0x1f00, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2063, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x2094, 1}, {0x20a0, 0x20b5, 1}, {0x20d0, 0x20ef, 1}, {0x2100, 0x214e, 1}, {0x2153, 0x2184, 1}, {0x2190, 0x23e7, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x269c, 1}, {0x26a0, 0x26b2, 1}, {0x2701, 0x2704, 1}, {0x2706, 0x2709, 1}, {0x270c, 0x2727, 1}, {0x2729, 0x274b, 1}, {0x274d, 0x274f, 2}, {0x2750, 0x2752, 1}, {0x2756, 0x2758, 2}, {0x2759, 0x275e, 1}, {0x2761, 0x2794, 1}, {0x2798, 0x27af, 1}, {0x27b1, 0x27be, 1}, {0x27c0, 0x27ca, 1}, {0x27d0, 0x27eb, 1}, {0x27f0, 0x2b1a, 1}, {0x2b20, 0x2b23, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2c6c, 1}, {0x2c74, 0x2c77, 1}, {0x2c80, 0x2cea, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d80, 17}, {0x2d81, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2e00, 0x2e17, 1}, {0x2e1c, 0x2e1d, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312c, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31b7, 1}, {0x31c0, 0x31cf, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x3243, 1}, {0x3250, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fbb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa700, 0xa71a, 1}, {0xa720, 0xa721, 1}, {0xa800, 0xa82b, 1}, {0xa840, 0xa877, 1}, {0xac00, 0xd7a3, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6a, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbb1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe23, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010900, 0x00010919, 1}, {0x0001091f, 0x00010a00, 225}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d12a, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4160 bytes (4 KiB) var assigned6_1_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058f, 0x0591, 2}, {0x0592, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0604, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a2, 0x08ac, 1}, {0x08e4, 0x08fe, 1}, {0x0900, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20b9, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e3b, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa697, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa793, 1}, {0xa7a0, 0xa7aa, 1}, {0xa7f8, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011180, 0x000111c8, 1}, {0x000111d0, 0x000111d9, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f540, 0x0001f543, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4160 bytes (4 KiB) var assigned6_2_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058f, 0x0591, 2}, {0x0592, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0604, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a2, 0x08ac, 1}, {0x08e4, 0x08fe, 1}, {0x0900, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20ba, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e3b, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa697, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa793, 1}, {0xa7a0, 0xa7aa, 1}, {0xa7f8, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011180, 0x000111c8, 1}, {0x000111d0, 0x000111d9, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f540, 0x0001f543, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4160 bytes (4 KiB) var assigned6_3_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058f, 0x0591, 2}, {0x0592, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0604, 1}, {0x0606, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a2, 0x08ac, 1}, {0x08e4, 0x08fe, 1}, {0x0900, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20ba, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e3b, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa697, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa793, 1}, {0xa7a0, 0xa7aa, 1}, {0xa7f8, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011180, 0x000111c8, 1}, {0x000111d0, 0x000111d9, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f540, 0x0001f543, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 3812 bytes (3 KiB) var assigned6_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037e, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x0527, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x0603, 1}, {0x0606, 0x061b, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0900, 162}, {0x0901, 0x0977, 1}, {0x0979, 0x097f, 1}, {0x0981, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0aef, 1}, {0x0af1, 0x0b01, 16}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c01, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c33, 1}, {0x0c35, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c82, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d02, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edd, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10d0, 0x10fc, 1}, {0x1100, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f0, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191c, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1baa, 1}, {0x1bae, 0x1bb9, 1}, {0x1bc0, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cd0, 0x1cf2, 1}, {0x1d00, 0x1de6, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x206a, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20b9, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23f3, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x26ff, 1}, {0x2701, 0x27ca, 1}, {0x27cc, 0x27ce, 2}, {0x27cf, 0x2b4c, 1}, {0x2b50, 0x2b59, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf1, 1}, {0x2cf9, 0x2d25, 1}, {0x2d30, 0x2d65, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e31, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcb, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa673, 1}, {0xa67c, 0xa697, 1}, {0xa6a0, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa791, 1}, {0xa7a0, 0xa7a9, 1}, {0xa7fa, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9df, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaa7b, 1}, {0xaa80, 0xaac2, 1}, {0xaadb, 0xaadf, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa2d, 1}, {0xfa30, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe26, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018a, 1}, {0x00010190, 0x0001019b, 1}, {0x000101d0, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x00010300, 0x0001031e, 1}, {0x00010320, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001085f, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010a00, 193}, {0x00010a01, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a7f, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b7f, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x00011080, 0x000110c1, 1}, {0x00012000, 0x0001236e, 1}, {0x00012400, 0x00012462, 1}, {0x00012470, 0x00012473, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0be, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0df, 1}, {0x0001f100, 0x0001f10a, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f169, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f320, 1}, {0x0001f330, 0x0001f335, 1}, {0x0001f337, 0x0001f37c, 1}, {0x0001f380, 0x0001f393, 1}, {0x0001f3a0, 0x0001f3c4, 1}, {0x0001f3c6, 0x0001f3ca, 1}, {0x0001f3e0, 0x0001f3f0, 1}, {0x0001f400, 0x0001f43e, 1}, {0x0001f440, 0x0001f442, 2}, {0x0001f443, 0x0001f4f7, 1}, {0x0001f4f9, 0x0001f4fc, 1}, {0x0001f500, 0x0001f53d, 1}, {0x0001f550, 0x0001f567, 1}, {0x0001f5fb, 0x0001f5ff, 1}, {0x0001f601, 0x0001f610, 1}, {0x0001f612, 0x0001f614, 1}, {0x0001f616, 0x0001f61c, 2}, {0x0001f61d, 0x0001f61e, 1}, {0x0001f620, 0x0001f625, 1}, {0x0001f628, 0x0001f62b, 1}, {0x0001f62d, 0x0001f630, 3}, {0x0001f631, 0x0001f633, 1}, {0x0001f635, 0x0001f640, 1}, {0x0001f645, 0x0001f64f, 1}, {0x0001f680, 0x0001f6c5, 1}, {0x0001f700, 0x0001f773, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 4898 bytes (4 KiB) var assigned7_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a1, 0x08b2, 1}, {0x08e4, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c59, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c81, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d01, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d60, 9}, {0x0d61, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f4, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1cf8, 0x1cf9, 1}, {0x1d00, 0x1df5, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bd, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x2189, 1}, {0x2190, 0x23fa, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd1, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e42, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fcc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa69d, 1}, {0xa69f, 0xa6f7, 1}, {0xa700, 0xa78e, 1}, {0xa790, 0xa7ad, 1}, {0xa7b0, 0xa7b1, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fb, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab5f, 1}, {0xab64, 0xab65, 1}, {0xabc0, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe2d, 1}, {0xfe30, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018c, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x00010900, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109be, 0x000109bf, 1}, {0x00010a00, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111c8, 1}, {0x000111cd, 0x000111d0, 3}, {0x000111d1, 0x000111da, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123d, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011301, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011357, 0x0001135d, 6}, {0x0001135e, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115c9, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011ac0, 449}, {0x00011ac1, 0x00011af8, 1}, {0x00012000, 0x00012398, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00013000, 0x0001342e, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1dd, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001d7ff, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f32c, 1}, {0x0001f330, 0x0001f37d, 1}, {0x0001f380, 0x0001f3ce, 1}, {0x0001f3d4, 0x0001f3f7, 1}, {0x0001f400, 0x0001f4fe, 1}, {0x0001f500, 0x0001f54a, 1}, {0x0001f550, 0x0001f579, 1}, {0x0001f57b, 0x0001f5a3, 1}, {0x0001f5a5, 0x0001f642, 1}, {0x0001f645, 0x0001f6cf, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f3, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5048 bytes (4 KiB) var assigned8_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a1, 0x08b4, 1}, {0x08e3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0b01, 8}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c7f, 1}, {0x0c81, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d01, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4e, 1}, {0x0d57, 0x0d5f, 8}, {0x0d60, 0x0d63, 1}, {0x0d66, 0x0d75, 1}, {0x0d79, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c7f, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1cf8, 0x1cf9, 1}, {0x1d00, 0x1df5, 1}, {0x1dfc, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20be, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x23fa, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd1, 1}, {0x2bec, 0x2bef, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e42, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fd5, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7ad, 1}, {0xa7b0, 0xa7b7, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c4, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fd, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018c, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010cff, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123d, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x00011719, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011ac0, 449}, {0x00011ac1, 0x00011af8, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f19a, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23a, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f579, 1}, {0x0001f57b, 0x0001f5a3, 1}, {0x0001f5a5, 0x0001f6d0, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f3, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f910, 0x0001f918, 1}, {0x0001f980, 0x0001f984, 1}, {0x0001f9c0, 0x00020000, 1600}, {0x00020001, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5348 bytes (5 KiB) var assigned9_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x08a0, 66}, {0x08a1, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d4, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fb, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0b01, 8}, {0x0b02, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d01, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d3a, 1}, {0x0d3d, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf6, 1}, {0x1cf8, 0x1cf9, 1}, {0x1d00, 0x1df5, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20be, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x23fe, 1}, {0x2400, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd1, 1}, {0x2bec, 0x2bef, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e44, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312d, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fd5, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7ae, 1}, {0xa7b0, 0xa7b7, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fd, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x00010330, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010cff, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x00011719, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011ac0, 449}, {0x00011ac1, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00017000, 32}, {0x00017001, 0x000187ec, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b001, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94a, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f300, 0x0001f6d2, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f6, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f910, 0x0001f91e, 1}, {0x0001f920, 0x0001f927, 1}, {0x0001f930, 0x0001f933, 3}, {0x0001f934, 0x0001f93e, 1}, {0x0001f940, 0x0001f94b, 1}, {0x0001f950, 0x0001f95e, 1}, {0x0001f980, 0x0001f991, 1}, {0x0001f9c0, 0x00020000, 1600}, {0x00020001, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5492 bytes (5 KiB) var assigned10_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x055f, 1}, {0x0561, 0x0587, 1}, {0x0589, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05f0, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x0800, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d4, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fd, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a75, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c03, 1}, {0x0c05, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c83, 1}, {0x0c85, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1877, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1cc0, 0x1cc7, 1}, {0x1cd0, 0x1cf9, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bb9, 1}, {0x2bbd, 0x2bc8, 1}, {0x2bca, 0x2bd2, 1}, {0x2bec, 0x2bef, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e49, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312e, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fea, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7ae, 1}, {0xa7b0, 0xa7b7, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa8fd, 1}, {0xa900, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a33, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a47, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010cff, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110d0, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011143, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133c, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x00011719, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011a00, 257}, {0x00011a01, 0x00011a47, 1}, {0x00011a50, 0x00011a83, 1}, {0x00011a86, 0x00011a9c, 1}, {0x00011a9e, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe1, 1}, {0x00017000, 0x000187ec, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d371, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94a, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f12e, 1}, {0x0001f130, 0x0001f16b, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d4, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f8, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d4, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f900, 0x0001f90b, 1}, {0x0001f910, 0x0001f93e, 1}, {0x0001f940, 0x0001f94c, 1}, {0x0001f950, 0x0001f96b, 1}, {0x0001f980, 0x0001f997, 1}, {0x0001f9c0, 0x0001f9d0, 16}, {0x0001f9d1, 0x0001f9e6, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5654 bytes (5 KiB) var assigned11_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05ef, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x07fd, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fe, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a76, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c78, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e87, 3}, {0x0e88, 0x0e8a, 2}, {0x0e8d, 0x0e94, 7}, {0x0e95, 0x0e97, 1}, {0x0e99, 0x0e9f, 1}, {0x0ea1, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0eaa, 0x0eab, 1}, {0x0ead, 0x0eb9, 1}, {0x0ebb, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1878, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1c90, 0x1cba, 1}, {0x1cbd, 0x1cc7, 1}, {0x1cd0, 0x1cf9, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2bc8, 1}, {0x2bca, 0x2bfe, 1}, {0x2c00, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e4e, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312f, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fef, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7b9, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab65, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a35, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a48, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010d27, 1}, {0x00010d30, 0x00010d39, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00010f00, 0x00010f27, 1}, {0x00010f30, 0x00010f59, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110cd, 0x000110d0, 3}, {0x000110d1, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011146, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133b, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x0001145e, 0x00011480, 34}, {0x00011481, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b7, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x0001171a, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x00011800, 0x0001183b, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011a00, 257}, {0x00011a01, 0x00011a47, 1}, {0x00011a50, 0x00011a83, 1}, {0x00011a86, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00011d60, 0x00011d65, 1}, {0x00011d67, 0x00011d68, 1}, {0x00011d6a, 0x00011d8e, 1}, {0x00011d90, 0x00011d91, 1}, {0x00011d93, 0x00011d98, 1}, {0x00011da0, 0x00011da9, 1}, {0x00011ee0, 0x00011ef8, 1}, {0x00012000, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016e40, 0x00016e9a, 1}, {0x00016f00, 0x00016f44, 1}, {0x00016f50, 0x00016f7e, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe1, 1}, {0x00017000, 0x000187f1, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d2e0, 0x0001d2f3, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d378, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94a, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ec71, 0x0001ecb4, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f16b, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d4, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6f9, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d8, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f900, 0x0001f90b, 1}, {0x0001f910, 0x0001f93e, 1}, {0x0001f940, 0x0001f970, 1}, {0x0001f973, 0x0001f976, 1}, {0x0001f97a, 0x0001f97c, 2}, {0x0001f97d, 0x0001f9a2, 1}, {0x0001f9b0, 0x0001f9b9, 1}, {0x0001f9c0, 0x0001f9c2, 1}, {0x0001f9d0, 0x0001f9ff, 1}, {0x0001fa60, 0x0001fa6d, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5822 bytes (5 KiB) var assigned12_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05ef, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x07fd, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08bd, 1}, {0x08d3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fe, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a76, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b56, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c77, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d03, 1}, {0x0d05, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d82, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e86, 2}, {0x0e87, 0x0e8a, 1}, {0x0e8c, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0ea8, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1878, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1abe, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1c90, 0x1cba, 1}, {0x1cbd, 0x1cc7, 1}, {0x1cd0, 0x1cfa, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b98, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e4f, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312f, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31ba, 1}, {0x31c0, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x32fe, 1}, {0x3300, 0x4db5, 1}, {0x4dc0, 0x9fef, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7bf, 1}, {0xa7c2, 0xa7c6, 1}, {0xa7f7, 0xa82b, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab67, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019b, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a35, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a48, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010d27, 1}, {0x00010d30, 0x00010d39, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00010f00, 0x00010f27, 1}, {0x00010f30, 0x00010f59, 1}, {0x00010fe0, 0x00010ff6, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110cd, 0x000110d0, 3}, {0x000110d1, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011146, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111cd, 1}, {0x000111d0, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133b, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x00011459, 1}, {0x0001145b, 0x0001145d, 2}, {0x0001145e, 0x0001145f, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b8, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x0001171a, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x00011800, 0x0001183b, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x000119a0, 161}, {0x000119a1, 0x000119a7, 1}, {0x000119aa, 0x000119d7, 1}, {0x000119da, 0x000119e4, 1}, {0x00011a00, 0x00011a47, 1}, {0x00011a50, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00011d60, 0x00011d65, 1}, {0x00011d67, 0x00011d68, 1}, {0x00011d6a, 0x00011d8e, 1}, {0x00011d90, 0x00011d91, 1}, {0x00011d93, 0x00011d98, 1}, {0x00011da0, 0x00011da9, 1}, {0x00011ee0, 0x00011ef8, 1}, {0x00011fc0, 0x00011ff1, 1}, {0x00011fff, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00013430, 0x00013438, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016e40, 0x00016e9a, 1}, {0x00016f00, 0x00016f4a, 1}, {0x00016f4f, 0x00016f87, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe3, 1}, {0x00017000, 0x000187f7, 1}, {0x00018800, 0x00018af2, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b150, 0x0001b152, 1}, {0x0001b164, 0x0001b167, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d2e0, 0x0001d2f3, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d378, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e100, 0x0001e12c, 1}, {0x0001e130, 0x0001e13d, 1}, {0x0001e140, 0x0001e149, 1}, {0x0001e14e, 0x0001e14f, 1}, {0x0001e2c0, 0x0001e2f9, 1}, {0x0001e2ff, 0x0001e800, 1281}, {0x0001e801, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94b, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ec71, 0x0001ecb4, 1}, {0x0001ed01, 0x0001ed3d, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f10c, 1}, {0x0001f110, 0x0001f16c, 1}, {0x0001f170, 0x0001f1ac, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d5, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6fa, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d8, 1}, {0x0001f7e0, 0x0001f7eb, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f900, 0x0001f90b, 1}, {0x0001f90d, 0x0001f971, 1}, {0x0001f973, 0x0001f976, 1}, {0x0001f97a, 0x0001f9a2, 1}, {0x0001f9a5, 0x0001f9aa, 1}, {0x0001f9ae, 0x0001f9ca, 1}, {0x0001f9cd, 0x0001fa53, 1}, {0x0001fa60, 0x0001fa6d, 1}, {0x0001fa70, 0x0001fa73, 1}, {0x0001fa78, 0x0001fa7a, 1}, {0x0001fa80, 0x0001fa82, 1}, {0x0001fa90, 0x0001fa95, 1}, {0x00020000, 0x0002a6d6, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 5966 bytes (5 KiB) var assigned13_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05ef, 0x05f4, 1}, {0x0600, 0x061c, 1}, {0x061e, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x07fd, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x08a0, 0x08b4, 1}, {0x08b6, 0x08c7, 1}, {0x08d3, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fe, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a76, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b55, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3d, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c60, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c77, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cde, 0x0ce0, 2}, {0x0ce1, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf2, 1}, {0x0d00, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d81, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e86, 2}, {0x0e87, 0x0e8a, 1}, {0x0e8c, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0ea8, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ecd, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x170c, 1}, {0x170e, 0x1714, 1}, {0x1720, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x180e, 1}, {0x1810, 0x1819, 1}, {0x1820, 0x1878, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1ac0, 1}, {0x1b00, 0x1b4b, 1}, {0x1b50, 0x1b7c, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1c90, 0x1cba, 1}, {0x1cbd, 0x1cc7, 1}, {0x1cd0, 0x1cfa, 1}, {0x1d00, 0x1df9, 1}, {0x1dfb, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20bf, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b97, 0x2c2e, 1}, {0x2c30, 0x2c5e, 1}, {0x2c60, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e52, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312f, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0x9ffc, 1}, {0xa000, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7bf, 1}, {0xa7c2, 0xa7ca, 1}, {0xa7f5, 0xa82c, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab6b, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc1, 1}, {0xfbd3, 0xfd3f, 1}, {0xfd50, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdf0, 0xfdfd, 1}, {0xfe00, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019c, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x00010600, 145}, {0x00010601, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a35, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a48, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010d27, 1}, {0x00010d30, 0x00010d39, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00010e80, 0x00010ea9, 1}, {0x00010eab, 0x00010ead, 1}, {0x00010eb0, 0x00010eb1, 1}, {0x00010f00, 0x00010f27, 1}, {0x00010f30, 0x00010f59, 1}, {0x00010fb0, 0x00010fcb, 1}, {0x00010fe0, 0x00010ff6, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x0001106f, 1}, {0x0001107f, 0x000110c1, 1}, {0x000110cd, 0x000110d0, 3}, {0x000110d1, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011147, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x0001123e, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133b, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x0001145b, 1}, {0x0001145d, 0x00011461, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b8, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x0001171a, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x0001173f, 1}, {0x00011800, 0x0001183b, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011906, 1}, {0x00011909, 0x0001190c, 3}, {0x0001190d, 0x00011913, 1}, {0x00011915, 0x00011916, 1}, {0x00011918, 0x00011935, 1}, {0x00011937, 0x00011938, 1}, {0x0001193b, 0x00011946, 1}, {0x00011950, 0x00011959, 1}, {0x000119a0, 0x000119a7, 1}, {0x000119aa, 0x000119d7, 1}, {0x000119da, 0x000119e4, 1}, {0x00011a00, 0x00011a47, 1}, {0x00011a50, 0x00011aa2, 1}, {0x00011ac0, 0x00011af8, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00011d60, 0x00011d65, 1}, {0x00011d67, 0x00011d68, 1}, {0x00011d6a, 0x00011d8e, 1}, {0x00011d90, 0x00011d91, 1}, {0x00011d93, 0x00011d98, 1}, {0x00011da0, 0x00011da9, 1}, {0x00011ee0, 0x00011ef8, 1}, {0x00011fb0, 0x00011fc0, 16}, {0x00011fc1, 0x00011ff1, 1}, {0x00011fff, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00013000, 0x0001342e, 1}, {0x00013430, 0x00013438, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016a6f, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016e40, 0x00016e9a, 1}, {0x00016f00, 0x00016f4a, 1}, {0x00016f4f, 0x00016f87, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe4, 1}, {0x00016ff0, 0x00016ff1, 1}, {0x00017000, 0x000187f7, 1}, {0x00018800, 0x00018cd5, 1}, {0x00018d00, 0x00018d08, 1}, {0x0001b000, 0x0001b11e, 1}, {0x0001b150, 0x0001b152, 1}, {0x0001b164, 0x0001b167, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1e8, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d2e0, 0x0001d2f3, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d378, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e100, 0x0001e12c, 1}, {0x0001e130, 0x0001e13d, 1}, {0x0001e140, 0x0001e149, 1}, {0x0001e14e, 0x0001e14f, 1}, {0x0001e2c0, 0x0001e2f9, 1}, {0x0001e2ff, 0x0001e800, 1281}, {0x0001e801, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94b, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ec71, 0x0001ecb4, 1}, {0x0001ed01, 0x0001ed3d, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f1ad, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d7, 1}, {0x0001f6e0, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6fc, 1}, {0x0001f700, 0x0001f773, 1}, {0x0001f780, 0x0001f7d8, 1}, {0x0001f7e0, 0x0001f7eb, 1}, {0x0001f800, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f8b0, 0x0001f8b1, 1}, {0x0001f900, 0x0001f978, 1}, {0x0001f97a, 0x0001f9cb, 1}, {0x0001f9cd, 0x0001fa53, 1}, {0x0001fa60, 0x0001fa6d, 1}, {0x0001fa70, 0x0001fa74, 1}, {0x0001fa78, 0x0001fa7a, 1}, {0x0001fa80, 0x0001fa86, 1}, {0x0001fa90, 0x0001faa8, 1}, {0x0001fab0, 0x0001fab6, 1}, {0x0001fac0, 0x0001fac2, 1}, {0x0001fad0, 0x0001fad6, 1}, {0x0001fb00, 0x0001fb92, 1}, {0x0001fb94, 0x0001fbca, 1}, {0x0001fbf0, 0x0001fbf9, 1}, {0x00020000, 0x0002a6dd, 1}, {0x0002a700, 0x0002b734, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x00030000, 0x0003134a, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // size 6356 bytes (6 KiB) var assigned15_0_0 = &unicode.RangeTable{ R16: []unicode.Range16{ {0x0000, 0x0377, 1}, {0x037a, 0x037f, 1}, {0x0384, 0x038a, 1}, {0x038c, 0x038e, 2}, {0x038f, 0x03a1, 1}, {0x03a3, 0x052f, 1}, {0x0531, 0x0556, 1}, {0x0559, 0x058a, 1}, {0x058d, 0x058f, 1}, {0x0591, 0x05c7, 1}, {0x05d0, 0x05ea, 1}, {0x05ef, 0x05f4, 1}, {0x0600, 0x070d, 1}, {0x070f, 0x074a, 1}, {0x074d, 0x07b1, 1}, {0x07c0, 0x07fa, 1}, {0x07fd, 0x082d, 1}, {0x0830, 0x083e, 1}, {0x0840, 0x085b, 1}, {0x085e, 0x0860, 2}, {0x0861, 0x086a, 1}, {0x0870, 0x088e, 1}, {0x0890, 0x0891, 1}, {0x0898, 0x0983, 1}, {0x0985, 0x098c, 1}, {0x098f, 0x0990, 1}, {0x0993, 0x09a8, 1}, {0x09aa, 0x09b0, 1}, {0x09b2, 0x09b6, 4}, {0x09b7, 0x09b9, 1}, {0x09bc, 0x09c4, 1}, {0x09c7, 0x09c8, 1}, {0x09cb, 0x09ce, 1}, {0x09d7, 0x09dc, 5}, {0x09dd, 0x09df, 2}, {0x09e0, 0x09e3, 1}, {0x09e6, 0x09fe, 1}, {0x0a01, 0x0a03, 1}, {0x0a05, 0x0a0a, 1}, {0x0a0f, 0x0a10, 1}, {0x0a13, 0x0a28, 1}, {0x0a2a, 0x0a30, 1}, {0x0a32, 0x0a33, 1}, {0x0a35, 0x0a36, 1}, {0x0a38, 0x0a39, 1}, {0x0a3c, 0x0a3e, 2}, {0x0a3f, 0x0a42, 1}, {0x0a47, 0x0a48, 1}, {0x0a4b, 0x0a4d, 1}, {0x0a51, 0x0a59, 8}, {0x0a5a, 0x0a5c, 1}, {0x0a5e, 0x0a66, 8}, {0x0a67, 0x0a76, 1}, {0x0a81, 0x0a83, 1}, {0x0a85, 0x0a8d, 1}, {0x0a8f, 0x0a91, 1}, {0x0a93, 0x0aa8, 1}, {0x0aaa, 0x0ab0, 1}, {0x0ab2, 0x0ab3, 1}, {0x0ab5, 0x0ab9, 1}, {0x0abc, 0x0ac5, 1}, {0x0ac7, 0x0ac9, 1}, {0x0acb, 0x0acd, 1}, {0x0ad0, 0x0ae0, 16}, {0x0ae1, 0x0ae3, 1}, {0x0ae6, 0x0af1, 1}, {0x0af9, 0x0aff, 1}, {0x0b01, 0x0b03, 1}, {0x0b05, 0x0b0c, 1}, {0x0b0f, 0x0b10, 1}, {0x0b13, 0x0b28, 1}, {0x0b2a, 0x0b30, 1}, {0x0b32, 0x0b33, 1}, {0x0b35, 0x0b39, 1}, {0x0b3c, 0x0b44, 1}, {0x0b47, 0x0b48, 1}, {0x0b4b, 0x0b4d, 1}, {0x0b55, 0x0b57, 1}, {0x0b5c, 0x0b5d, 1}, {0x0b5f, 0x0b63, 1}, {0x0b66, 0x0b77, 1}, {0x0b82, 0x0b83, 1}, {0x0b85, 0x0b8a, 1}, {0x0b8e, 0x0b90, 1}, {0x0b92, 0x0b95, 1}, {0x0b99, 0x0b9a, 1}, {0x0b9c, 0x0b9e, 2}, {0x0b9f, 0x0ba3, 4}, {0x0ba4, 0x0ba8, 4}, {0x0ba9, 0x0baa, 1}, {0x0bae, 0x0bb9, 1}, {0x0bbe, 0x0bc2, 1}, {0x0bc6, 0x0bc8, 1}, {0x0bca, 0x0bcd, 1}, {0x0bd0, 0x0bd7, 7}, {0x0be6, 0x0bfa, 1}, {0x0c00, 0x0c0c, 1}, {0x0c0e, 0x0c10, 1}, {0x0c12, 0x0c28, 1}, {0x0c2a, 0x0c39, 1}, {0x0c3c, 0x0c44, 1}, {0x0c46, 0x0c48, 1}, {0x0c4a, 0x0c4d, 1}, {0x0c55, 0x0c56, 1}, {0x0c58, 0x0c5a, 1}, {0x0c5d, 0x0c60, 3}, {0x0c61, 0x0c63, 1}, {0x0c66, 0x0c6f, 1}, {0x0c77, 0x0c8c, 1}, {0x0c8e, 0x0c90, 1}, {0x0c92, 0x0ca8, 1}, {0x0caa, 0x0cb3, 1}, {0x0cb5, 0x0cb9, 1}, {0x0cbc, 0x0cc4, 1}, {0x0cc6, 0x0cc8, 1}, {0x0cca, 0x0ccd, 1}, {0x0cd5, 0x0cd6, 1}, {0x0cdd, 0x0cde, 1}, {0x0ce0, 0x0ce3, 1}, {0x0ce6, 0x0cef, 1}, {0x0cf1, 0x0cf3, 1}, {0x0d00, 0x0d0c, 1}, {0x0d0e, 0x0d10, 1}, {0x0d12, 0x0d44, 1}, {0x0d46, 0x0d48, 1}, {0x0d4a, 0x0d4f, 1}, {0x0d54, 0x0d63, 1}, {0x0d66, 0x0d7f, 1}, {0x0d81, 0x0d83, 1}, {0x0d85, 0x0d96, 1}, {0x0d9a, 0x0db1, 1}, {0x0db3, 0x0dbb, 1}, {0x0dbd, 0x0dc0, 3}, {0x0dc1, 0x0dc6, 1}, {0x0dca, 0x0dcf, 5}, {0x0dd0, 0x0dd4, 1}, {0x0dd6, 0x0dd8, 2}, {0x0dd9, 0x0ddf, 1}, {0x0de6, 0x0def, 1}, {0x0df2, 0x0df4, 1}, {0x0e01, 0x0e3a, 1}, {0x0e3f, 0x0e5b, 1}, {0x0e81, 0x0e82, 1}, {0x0e84, 0x0e86, 2}, {0x0e87, 0x0e8a, 1}, {0x0e8c, 0x0ea3, 1}, {0x0ea5, 0x0ea7, 2}, {0x0ea8, 0x0ebd, 1}, {0x0ec0, 0x0ec4, 1}, {0x0ec6, 0x0ec8, 2}, {0x0ec9, 0x0ece, 1}, {0x0ed0, 0x0ed9, 1}, {0x0edc, 0x0edf, 1}, {0x0f00, 0x0f47, 1}, {0x0f49, 0x0f6c, 1}, {0x0f71, 0x0f97, 1}, {0x0f99, 0x0fbc, 1}, {0x0fbe, 0x0fcc, 1}, {0x0fce, 0x0fda, 1}, {0x1000, 0x10c5, 1}, {0x10c7, 0x10cd, 6}, {0x10d0, 0x1248, 1}, {0x124a, 0x124d, 1}, {0x1250, 0x1256, 1}, {0x1258, 0x125a, 2}, {0x125b, 0x125d, 1}, {0x1260, 0x1288, 1}, {0x128a, 0x128d, 1}, {0x1290, 0x12b0, 1}, {0x12b2, 0x12b5, 1}, {0x12b8, 0x12be, 1}, {0x12c0, 0x12c2, 2}, {0x12c3, 0x12c5, 1}, {0x12c8, 0x12d6, 1}, {0x12d8, 0x1310, 1}, {0x1312, 0x1315, 1}, {0x1318, 0x135a, 1}, {0x135d, 0x137c, 1}, {0x1380, 0x1399, 1}, {0x13a0, 0x13f5, 1}, {0x13f8, 0x13fd, 1}, {0x1400, 0x169c, 1}, {0x16a0, 0x16f8, 1}, {0x1700, 0x1715, 1}, {0x171f, 0x1736, 1}, {0x1740, 0x1753, 1}, {0x1760, 0x176c, 1}, {0x176e, 0x1770, 1}, {0x1772, 0x1773, 1}, {0x1780, 0x17dd, 1}, {0x17e0, 0x17e9, 1}, {0x17f0, 0x17f9, 1}, {0x1800, 0x1819, 1}, {0x1820, 0x1878, 1}, {0x1880, 0x18aa, 1}, {0x18b0, 0x18f5, 1}, {0x1900, 0x191e, 1}, {0x1920, 0x192b, 1}, {0x1930, 0x193b, 1}, {0x1940, 0x1944, 4}, {0x1945, 0x196d, 1}, {0x1970, 0x1974, 1}, {0x1980, 0x19ab, 1}, {0x19b0, 0x19c9, 1}, {0x19d0, 0x19da, 1}, {0x19de, 0x1a1b, 1}, {0x1a1e, 0x1a5e, 1}, {0x1a60, 0x1a7c, 1}, {0x1a7f, 0x1a89, 1}, {0x1a90, 0x1a99, 1}, {0x1aa0, 0x1aad, 1}, {0x1ab0, 0x1ace, 1}, {0x1b00, 0x1b4c, 1}, {0x1b50, 0x1b7e, 1}, {0x1b80, 0x1bf3, 1}, {0x1bfc, 0x1c37, 1}, {0x1c3b, 0x1c49, 1}, {0x1c4d, 0x1c88, 1}, {0x1c90, 0x1cba, 1}, {0x1cbd, 0x1cc7, 1}, {0x1cd0, 0x1cfa, 1}, {0x1d00, 0x1f15, 1}, {0x1f18, 0x1f1d, 1}, {0x1f20, 0x1f45, 1}, {0x1f48, 0x1f4d, 1}, {0x1f50, 0x1f57, 1}, {0x1f59, 0x1f5f, 2}, {0x1f60, 0x1f7d, 1}, {0x1f80, 0x1fb4, 1}, {0x1fb6, 0x1fc4, 1}, {0x1fc6, 0x1fd3, 1}, {0x1fd6, 0x1fdb, 1}, {0x1fdd, 0x1fef, 1}, {0x1ff2, 0x1ff4, 1}, {0x1ff6, 0x1ffe, 1}, {0x2000, 0x2064, 1}, {0x2066, 0x2071, 1}, {0x2074, 0x208e, 1}, {0x2090, 0x209c, 1}, {0x20a0, 0x20c0, 1}, {0x20d0, 0x20f0, 1}, {0x2100, 0x218b, 1}, {0x2190, 0x2426, 1}, {0x2440, 0x244a, 1}, {0x2460, 0x2b73, 1}, {0x2b76, 0x2b95, 1}, {0x2b97, 0x2cf3, 1}, {0x2cf9, 0x2d25, 1}, {0x2d27, 0x2d2d, 6}, {0x2d30, 0x2d67, 1}, {0x2d6f, 0x2d70, 1}, {0x2d7f, 0x2d96, 1}, {0x2da0, 0x2da6, 1}, {0x2da8, 0x2dae, 1}, {0x2db0, 0x2db6, 1}, {0x2db8, 0x2dbe, 1}, {0x2dc0, 0x2dc6, 1}, {0x2dc8, 0x2dce, 1}, {0x2dd0, 0x2dd6, 1}, {0x2dd8, 0x2dde, 1}, {0x2de0, 0x2e5d, 1}, {0x2e80, 0x2e99, 1}, {0x2e9b, 0x2ef3, 1}, {0x2f00, 0x2fd5, 1}, {0x2ff0, 0x2ffb, 1}, {0x3000, 0x303f, 1}, {0x3041, 0x3096, 1}, {0x3099, 0x30ff, 1}, {0x3105, 0x312f, 1}, {0x3131, 0x318e, 1}, {0x3190, 0x31e3, 1}, {0x31f0, 0x321e, 1}, {0x3220, 0xa48c, 1}, {0xa490, 0xa4c6, 1}, {0xa4d0, 0xa62b, 1}, {0xa640, 0xa6f7, 1}, {0xa700, 0xa7ca, 1}, {0xa7d0, 0xa7d1, 1}, {0xa7d3, 0xa7d5, 2}, {0xa7d6, 0xa7d9, 1}, {0xa7f2, 0xa82c, 1}, {0xa830, 0xa839, 1}, {0xa840, 0xa877, 1}, {0xa880, 0xa8c5, 1}, {0xa8ce, 0xa8d9, 1}, {0xa8e0, 0xa953, 1}, {0xa95f, 0xa97c, 1}, {0xa980, 0xa9cd, 1}, {0xa9cf, 0xa9d9, 1}, {0xa9de, 0xa9fe, 1}, {0xaa00, 0xaa36, 1}, {0xaa40, 0xaa4d, 1}, {0xaa50, 0xaa59, 1}, {0xaa5c, 0xaac2, 1}, {0xaadb, 0xaaf6, 1}, {0xab01, 0xab06, 1}, {0xab09, 0xab0e, 1}, {0xab11, 0xab16, 1}, {0xab20, 0xab26, 1}, {0xab28, 0xab2e, 1}, {0xab30, 0xab6b, 1}, {0xab70, 0xabed, 1}, {0xabf0, 0xabf9, 1}, {0xac00, 0xd7a3, 1}, {0xd7b0, 0xd7c6, 1}, {0xd7cb, 0xd7fb, 1}, {0xd800, 0xfa6d, 1}, {0xfa70, 0xfad9, 1}, {0xfb00, 0xfb06, 1}, {0xfb13, 0xfb17, 1}, {0xfb1d, 0xfb36, 1}, {0xfb38, 0xfb3c, 1}, {0xfb3e, 0xfb40, 2}, {0xfb41, 0xfb43, 2}, {0xfb44, 0xfb46, 2}, {0xfb47, 0xfbc2, 1}, {0xfbd3, 0xfd8f, 1}, {0xfd92, 0xfdc7, 1}, {0xfdcf, 0xfdf0, 33}, {0xfdf1, 0xfe19, 1}, {0xfe20, 0xfe52, 1}, {0xfe54, 0xfe66, 1}, {0xfe68, 0xfe6b, 1}, {0xfe70, 0xfe74, 1}, {0xfe76, 0xfefc, 1}, {0xfeff, 0xff01, 2}, {0xff02, 0xffbe, 1}, {0xffc2, 0xffc7, 1}, {0xffca, 0xffcf, 1}, {0xffd2, 0xffd7, 1}, {0xffda, 0xffdc, 1}, {0xffe0, 0xffe6, 1}, {0xffe8, 0xffee, 1}, {0xfff9, 0xfffd, 1}, }, R32: []unicode.Range32{ {0x00010000, 0x0001000b, 1}, {0x0001000d, 0x00010026, 1}, {0x00010028, 0x0001003a, 1}, {0x0001003c, 0x0001003d, 1}, {0x0001003f, 0x0001004d, 1}, {0x00010050, 0x0001005d, 1}, {0x00010080, 0x000100fa, 1}, {0x00010100, 0x00010102, 1}, {0x00010107, 0x00010133, 1}, {0x00010137, 0x0001018e, 1}, {0x00010190, 0x0001019c, 1}, {0x000101a0, 0x000101d0, 48}, {0x000101d1, 0x000101fd, 1}, {0x00010280, 0x0001029c, 1}, {0x000102a0, 0x000102d0, 1}, {0x000102e0, 0x000102fb, 1}, {0x00010300, 0x00010323, 1}, {0x0001032d, 0x0001034a, 1}, {0x00010350, 0x0001037a, 1}, {0x00010380, 0x0001039d, 1}, {0x0001039f, 0x000103c3, 1}, {0x000103c8, 0x000103d5, 1}, {0x00010400, 0x0001049d, 1}, {0x000104a0, 0x000104a9, 1}, {0x000104b0, 0x000104d3, 1}, {0x000104d8, 0x000104fb, 1}, {0x00010500, 0x00010527, 1}, {0x00010530, 0x00010563, 1}, {0x0001056f, 0x0001057a, 1}, {0x0001057c, 0x0001058a, 1}, {0x0001058c, 0x00010592, 1}, {0x00010594, 0x00010595, 1}, {0x00010597, 0x000105a1, 1}, {0x000105a3, 0x000105b1, 1}, {0x000105b3, 0x000105b9, 1}, {0x000105bb, 0x000105bc, 1}, {0x00010600, 0x00010736, 1}, {0x00010740, 0x00010755, 1}, {0x00010760, 0x00010767, 1}, {0x00010780, 0x00010785, 1}, {0x00010787, 0x000107b0, 1}, {0x000107b2, 0x000107ba, 1}, {0x00010800, 0x00010805, 1}, {0x00010808, 0x0001080a, 2}, {0x0001080b, 0x00010835, 1}, {0x00010837, 0x00010838, 1}, {0x0001083c, 0x0001083f, 3}, {0x00010840, 0x00010855, 1}, {0x00010857, 0x0001089e, 1}, {0x000108a7, 0x000108af, 1}, {0x000108e0, 0x000108f2, 1}, {0x000108f4, 0x000108f5, 1}, {0x000108fb, 0x0001091b, 1}, {0x0001091f, 0x00010939, 1}, {0x0001093f, 0x00010980, 65}, {0x00010981, 0x000109b7, 1}, {0x000109bc, 0x000109cf, 1}, {0x000109d2, 0x00010a03, 1}, {0x00010a05, 0x00010a06, 1}, {0x00010a0c, 0x00010a13, 1}, {0x00010a15, 0x00010a17, 1}, {0x00010a19, 0x00010a35, 1}, {0x00010a38, 0x00010a3a, 1}, {0x00010a3f, 0x00010a48, 1}, {0x00010a50, 0x00010a58, 1}, {0x00010a60, 0x00010a9f, 1}, {0x00010ac0, 0x00010ae6, 1}, {0x00010aeb, 0x00010af6, 1}, {0x00010b00, 0x00010b35, 1}, {0x00010b39, 0x00010b55, 1}, {0x00010b58, 0x00010b72, 1}, {0x00010b78, 0x00010b91, 1}, {0x00010b99, 0x00010b9c, 1}, {0x00010ba9, 0x00010baf, 1}, {0x00010c00, 0x00010c48, 1}, {0x00010c80, 0x00010cb2, 1}, {0x00010cc0, 0x00010cf2, 1}, {0x00010cfa, 0x00010d27, 1}, {0x00010d30, 0x00010d39, 1}, {0x00010e60, 0x00010e7e, 1}, {0x00010e80, 0x00010ea9, 1}, {0x00010eab, 0x00010ead, 1}, {0x00010eb0, 0x00010eb1, 1}, {0x00010efd, 0x00010f27, 1}, {0x00010f30, 0x00010f59, 1}, {0x00010f70, 0x00010f89, 1}, {0x00010fb0, 0x00010fcb, 1}, {0x00010fe0, 0x00010ff6, 1}, {0x00011000, 0x0001104d, 1}, {0x00011052, 0x00011075, 1}, {0x0001107f, 0x000110c2, 1}, {0x000110cd, 0x000110d0, 3}, {0x000110d1, 0x000110e8, 1}, {0x000110f0, 0x000110f9, 1}, {0x00011100, 0x00011134, 1}, {0x00011136, 0x00011147, 1}, {0x00011150, 0x00011176, 1}, {0x00011180, 0x000111df, 1}, {0x000111e1, 0x000111f4, 1}, {0x00011200, 0x00011211, 1}, {0x00011213, 0x00011241, 1}, {0x00011280, 0x00011286, 1}, {0x00011288, 0x0001128a, 2}, {0x0001128b, 0x0001128d, 1}, {0x0001128f, 0x0001129d, 1}, {0x0001129f, 0x000112a9, 1}, {0x000112b0, 0x000112ea, 1}, {0x000112f0, 0x000112f9, 1}, {0x00011300, 0x00011303, 1}, {0x00011305, 0x0001130c, 1}, {0x0001130f, 0x00011310, 1}, {0x00011313, 0x00011328, 1}, {0x0001132a, 0x00011330, 1}, {0x00011332, 0x00011333, 1}, {0x00011335, 0x00011339, 1}, {0x0001133b, 0x00011344, 1}, {0x00011347, 0x00011348, 1}, {0x0001134b, 0x0001134d, 1}, {0x00011350, 0x00011357, 7}, {0x0001135d, 0x00011363, 1}, {0x00011366, 0x0001136c, 1}, {0x00011370, 0x00011374, 1}, {0x00011400, 0x0001145b, 1}, {0x0001145d, 0x00011461, 1}, {0x00011480, 0x000114c7, 1}, {0x000114d0, 0x000114d9, 1}, {0x00011580, 0x000115b5, 1}, {0x000115b8, 0x000115dd, 1}, {0x00011600, 0x00011644, 1}, {0x00011650, 0x00011659, 1}, {0x00011660, 0x0001166c, 1}, {0x00011680, 0x000116b9, 1}, {0x000116c0, 0x000116c9, 1}, {0x00011700, 0x0001171a, 1}, {0x0001171d, 0x0001172b, 1}, {0x00011730, 0x00011746, 1}, {0x00011800, 0x0001183b, 1}, {0x000118a0, 0x000118f2, 1}, {0x000118ff, 0x00011906, 1}, {0x00011909, 0x0001190c, 3}, {0x0001190d, 0x00011913, 1}, {0x00011915, 0x00011916, 1}, {0x00011918, 0x00011935, 1}, {0x00011937, 0x00011938, 1}, {0x0001193b, 0x00011946, 1}, {0x00011950, 0x00011959, 1}, {0x000119a0, 0x000119a7, 1}, {0x000119aa, 0x000119d7, 1}, {0x000119da, 0x000119e4, 1}, {0x00011a00, 0x00011a47, 1}, {0x00011a50, 0x00011aa2, 1}, {0x00011ab0, 0x00011af8, 1}, {0x00011b00, 0x00011b09, 1}, {0x00011c00, 0x00011c08, 1}, {0x00011c0a, 0x00011c36, 1}, {0x00011c38, 0x00011c45, 1}, {0x00011c50, 0x00011c6c, 1}, {0x00011c70, 0x00011c8f, 1}, {0x00011c92, 0x00011ca7, 1}, {0x00011ca9, 0x00011cb6, 1}, {0x00011d00, 0x00011d06, 1}, {0x00011d08, 0x00011d09, 1}, {0x00011d0b, 0x00011d36, 1}, {0x00011d3a, 0x00011d3c, 2}, {0x00011d3d, 0x00011d3f, 2}, {0x00011d40, 0x00011d47, 1}, {0x00011d50, 0x00011d59, 1}, {0x00011d60, 0x00011d65, 1}, {0x00011d67, 0x00011d68, 1}, {0x00011d6a, 0x00011d8e, 1}, {0x00011d90, 0x00011d91, 1}, {0x00011d93, 0x00011d98, 1}, {0x00011da0, 0x00011da9, 1}, {0x00011ee0, 0x00011ef8, 1}, {0x00011f00, 0x00011f10, 1}, {0x00011f12, 0x00011f3a, 1}, {0x00011f3e, 0x00011f59, 1}, {0x00011fb0, 0x00011fc0, 16}, {0x00011fc1, 0x00011ff1, 1}, {0x00011fff, 0x00012399, 1}, {0x00012400, 0x0001246e, 1}, {0x00012470, 0x00012474, 1}, {0x00012480, 0x00012543, 1}, {0x00012f90, 0x00012ff2, 1}, {0x00013000, 0x00013455, 1}, {0x00014400, 0x00014646, 1}, {0x00016800, 0x00016a38, 1}, {0x00016a40, 0x00016a5e, 1}, {0x00016a60, 0x00016a69, 1}, {0x00016a6e, 0x00016abe, 1}, {0x00016ac0, 0x00016ac9, 1}, {0x00016ad0, 0x00016aed, 1}, {0x00016af0, 0x00016af5, 1}, {0x00016b00, 0x00016b45, 1}, {0x00016b50, 0x00016b59, 1}, {0x00016b5b, 0x00016b61, 1}, {0x00016b63, 0x00016b77, 1}, {0x00016b7d, 0x00016b8f, 1}, {0x00016e40, 0x00016e9a, 1}, {0x00016f00, 0x00016f4a, 1}, {0x00016f4f, 0x00016f87, 1}, {0x00016f8f, 0x00016f9f, 1}, {0x00016fe0, 0x00016fe4, 1}, {0x00016ff0, 0x00016ff1, 1}, {0x00017000, 0x000187f7, 1}, {0x00018800, 0x00018cd5, 1}, {0x00018d00, 0x00018d08, 1}, {0x0001aff0, 0x0001aff3, 1}, {0x0001aff5, 0x0001affb, 1}, {0x0001affd, 0x0001affe, 1}, {0x0001b000, 0x0001b122, 1}, {0x0001b132, 0x0001b150, 30}, {0x0001b151, 0x0001b152, 1}, {0x0001b155, 0x0001b164, 15}, {0x0001b165, 0x0001b167, 1}, {0x0001b170, 0x0001b2fb, 1}, {0x0001bc00, 0x0001bc6a, 1}, {0x0001bc70, 0x0001bc7c, 1}, {0x0001bc80, 0x0001bc88, 1}, {0x0001bc90, 0x0001bc99, 1}, {0x0001bc9c, 0x0001bca3, 1}, {0x0001cf00, 0x0001cf2d, 1}, {0x0001cf30, 0x0001cf46, 1}, {0x0001cf50, 0x0001cfc3, 1}, {0x0001d000, 0x0001d0f5, 1}, {0x0001d100, 0x0001d126, 1}, {0x0001d129, 0x0001d1ea, 1}, {0x0001d200, 0x0001d245, 1}, {0x0001d2c0, 0x0001d2d3, 1}, {0x0001d2e0, 0x0001d2f3, 1}, {0x0001d300, 0x0001d356, 1}, {0x0001d360, 0x0001d378, 1}, {0x0001d400, 0x0001d454, 1}, {0x0001d456, 0x0001d49c, 1}, {0x0001d49e, 0x0001d49f, 1}, {0x0001d4a2, 0x0001d4a5, 3}, {0x0001d4a6, 0x0001d4a9, 3}, {0x0001d4aa, 0x0001d4ac, 1}, {0x0001d4ae, 0x0001d4b9, 1}, {0x0001d4bb, 0x0001d4bd, 2}, {0x0001d4be, 0x0001d4c3, 1}, {0x0001d4c5, 0x0001d505, 1}, {0x0001d507, 0x0001d50a, 1}, {0x0001d50d, 0x0001d514, 1}, {0x0001d516, 0x0001d51c, 1}, {0x0001d51e, 0x0001d539, 1}, {0x0001d53b, 0x0001d53e, 1}, {0x0001d540, 0x0001d544, 1}, {0x0001d546, 0x0001d54a, 4}, {0x0001d54b, 0x0001d550, 1}, {0x0001d552, 0x0001d6a5, 1}, {0x0001d6a8, 0x0001d7cb, 1}, {0x0001d7ce, 0x0001da8b, 1}, {0x0001da9b, 0x0001da9f, 1}, {0x0001daa1, 0x0001daaf, 1}, {0x0001df00, 0x0001df1e, 1}, {0x0001df25, 0x0001df2a, 1}, {0x0001e000, 0x0001e006, 1}, {0x0001e008, 0x0001e018, 1}, {0x0001e01b, 0x0001e021, 1}, {0x0001e023, 0x0001e024, 1}, {0x0001e026, 0x0001e02a, 1}, {0x0001e030, 0x0001e06d, 1}, {0x0001e08f, 0x0001e100, 113}, {0x0001e101, 0x0001e12c, 1}, {0x0001e130, 0x0001e13d, 1}, {0x0001e140, 0x0001e149, 1}, {0x0001e14e, 0x0001e14f, 1}, {0x0001e290, 0x0001e2ae, 1}, {0x0001e2c0, 0x0001e2f9, 1}, {0x0001e2ff, 0x0001e4d0, 465}, {0x0001e4d1, 0x0001e4f9, 1}, {0x0001e7e0, 0x0001e7e6, 1}, {0x0001e7e8, 0x0001e7eb, 1}, {0x0001e7ed, 0x0001e7ee, 1}, {0x0001e7f0, 0x0001e7fe, 1}, {0x0001e800, 0x0001e8c4, 1}, {0x0001e8c7, 0x0001e8d6, 1}, {0x0001e900, 0x0001e94b, 1}, {0x0001e950, 0x0001e959, 1}, {0x0001e95e, 0x0001e95f, 1}, {0x0001ec71, 0x0001ecb4, 1}, {0x0001ed01, 0x0001ed3d, 1}, {0x0001ee00, 0x0001ee03, 1}, {0x0001ee05, 0x0001ee1f, 1}, {0x0001ee21, 0x0001ee22, 1}, {0x0001ee24, 0x0001ee27, 3}, {0x0001ee29, 0x0001ee32, 1}, {0x0001ee34, 0x0001ee37, 1}, {0x0001ee39, 0x0001ee3b, 2}, {0x0001ee42, 0x0001ee47, 5}, {0x0001ee49, 0x0001ee4d, 2}, {0x0001ee4e, 0x0001ee4f, 1}, {0x0001ee51, 0x0001ee52, 1}, {0x0001ee54, 0x0001ee57, 3}, {0x0001ee59, 0x0001ee61, 2}, {0x0001ee62, 0x0001ee64, 2}, {0x0001ee67, 0x0001ee6a, 1}, {0x0001ee6c, 0x0001ee72, 1}, {0x0001ee74, 0x0001ee77, 1}, {0x0001ee79, 0x0001ee7c, 1}, {0x0001ee7e, 0x0001ee80, 2}, {0x0001ee81, 0x0001ee89, 1}, {0x0001ee8b, 0x0001ee9b, 1}, {0x0001eea1, 0x0001eea3, 1}, {0x0001eea5, 0x0001eea9, 1}, {0x0001eeab, 0x0001eebb, 1}, {0x0001eef0, 0x0001eef1, 1}, {0x0001f000, 0x0001f02b, 1}, {0x0001f030, 0x0001f093, 1}, {0x0001f0a0, 0x0001f0ae, 1}, {0x0001f0b1, 0x0001f0bf, 1}, {0x0001f0c1, 0x0001f0cf, 1}, {0x0001f0d1, 0x0001f0f5, 1}, {0x0001f100, 0x0001f1ad, 1}, {0x0001f1e6, 0x0001f202, 1}, {0x0001f210, 0x0001f23b, 1}, {0x0001f240, 0x0001f248, 1}, {0x0001f250, 0x0001f251, 1}, {0x0001f260, 0x0001f265, 1}, {0x0001f300, 0x0001f6d7, 1}, {0x0001f6dc, 0x0001f6ec, 1}, {0x0001f6f0, 0x0001f6fc, 1}, {0x0001f700, 0x0001f776, 1}, {0x0001f77b, 0x0001f7d9, 1}, {0x0001f7e0, 0x0001f7eb, 1}, {0x0001f7f0, 0x0001f800, 16}, {0x0001f801, 0x0001f80b, 1}, {0x0001f810, 0x0001f847, 1}, {0x0001f850, 0x0001f859, 1}, {0x0001f860, 0x0001f887, 1}, {0x0001f890, 0x0001f8ad, 1}, {0x0001f8b0, 0x0001f8b1, 1}, {0x0001f900, 0x0001fa53, 1}, {0x0001fa60, 0x0001fa6d, 1}, {0x0001fa70, 0x0001fa7c, 1}, {0x0001fa80, 0x0001fa88, 1}, {0x0001fa90, 0x0001fabd, 1}, {0x0001fabf, 0x0001fac5, 1}, {0x0001face, 0x0001fadb, 1}, {0x0001fae0, 0x0001fae8, 1}, {0x0001faf0, 0x0001faf8, 1}, {0x0001fb00, 0x0001fb92, 1}, {0x0001fb94, 0x0001fbca, 1}, {0x0001fbf0, 0x0001fbf9, 1}, {0x00020000, 0x0002a6df, 1}, {0x0002a700, 0x0002b739, 1}, {0x0002b740, 0x0002b81d, 1}, {0x0002b820, 0x0002cea1, 1}, {0x0002ceb0, 0x0002ebe0, 1}, {0x0002f800, 0x0002fa1d, 1}, {0x00030000, 0x0003134a, 1}, {0x00031350, 0x000323af, 1}, {0x000e0001, 0x000e0020, 31}, {0x000e0021, 0x000e007f, 1}, {0x000e0100, 0x000e01ef, 1}, {0x000f0000, 0x000ffffd, 1}, {0x00100000, 0x0010fffd, 1}, }, LatinOffset: 0, } // Total size 73496 bytes (71 KiB) strcase-0.0.5/internal/tables/tables_go116.go 0000664 0000000 0000000 00000607115 14720254634 0021005 0 ustar 00root root 0000000 0000000 // Code generated by running "go generate" in github.com/charlievieth/strcase. DO NOT EDIT. //go:build go1.16 && !go1.21 // +build go1.16,!go1.21 package tables import "unicode" // UnicodeVersion is the Unicode version from which the tables in this package are derived. const UnicodeVersion = "13.0.0" func init() { // This is essentially a compile time assertion that can only fail if a // future Go release updates the version of Unicode it supports. This // check is elided if the Unicode versions match. // // TLDR if you see this panic file an issue: // https://github.com/charlievieth/strcase/issues // if UnicodeVersion != unicode.Version { panic("strcase.UnicodeVersion \"" + UnicodeVersion + "\" != unicode.Version \"" + unicode.Version + "\"") } } // A foldPair stores Unicode case folding pairs type foldPair struct { From uint32 To uint32 } // TODO: rename to "foldCase" // // CaseFold returns the Unicode simple case-fold for r, if one exists, or r // unmodified, if one does not exist. func CaseFold(r rune) rune { // TODO: check if r is ASCII here? u := uint32(r) h := (u * _CaseFoldsSeed) >> _CaseFoldsShift p := _CaseFolds[h] if p.From == u { r = rune(p.To) } return r } // TODO: rename func FoldMap(r rune) *[4]uint16 { u := uint32(r) h := (u * _FoldMapSeed) >> _FoldMapShift p := &_FoldMap[h] if uint32(p[0]) == u { return p } return nil } func FoldMapExcludingUpperLower(r rune) [2]rune { u := uint32(r) h := (u * _FoldMapSeed) >> _FoldMapShift p := &_FoldMapExcludingUpperLower[h] if uint32(p.r) == u { return [2]rune{rune(p.a[0]), rune(p.a[1])} } return [2]rune{} } // ToUpperLower combines unicode.ToUpper and unicode.ToLower in one function. func ToUpperLower(r rune) (upper, lower rune, foundMapping bool) { if r <= 0x80 { if 'A' <= r && r <= 'Z' { return r, r + ('a' - 'A'), true } if 'a' <= r && r <= 'z' { return r - ('a' - 'A'), r, true } return r, r, false } // Hash rune r and see if it's in the _UpperLower table. u := uint32(r) h := (u | u<<24) * _UpperLowerSeed p := &_UpperLower[h>>_UpperLowerShift] if p[0] == u || p[1] == u { return rune(p[0]), rune(p[1]), true } // Handle Unicode characters that do not equal // their upper and lower case forms. return toUpperLowerSpecial(r) } const _CaseFoldsSeed = 0x24F847 const _CaseFoldsShift = 19 // _CaseFolds stores all Unicode simple case-folds. var _CaseFolds = [8192]foldPair{ 71: {0xA640, 0xA641}, // 'Ꙁ' => 'ꙁ' 80: {0xA642, 0xA643}, // 'Ꙃ' => 'ꙃ' 89: {0xA644, 0xA645}, // 'Ꙅ' => 'ꙅ' 99: {0xA646, 0xA647}, // 'Ꙇ' => 'ꙇ' 108: {0xA648, 0xA649}, // 'Ꙉ' => 'ꙉ' 117: {0xA64A, 0xA64B}, // 'Ꙋ' => 'ꙋ' 126: {0xA64C, 0xA64D}, // 'Ꙍ' => 'ꙍ' 136: {0xA64E, 0xA64F}, // 'Ꙏ' => 'ꙏ' 145: {0xA650, 0xA651}, // 'Ꙑ' => 'ꙑ' 154: {0xA652, 0xA653}, // 'Ꙓ' => 'ꙓ' 163: {0xA654, 0xA655}, // 'Ꙕ' => 'ꙕ' 173: {0xA656, 0xA657}, // 'Ꙗ' => 'ꙗ' 182: {0xA658, 0xA659}, // 'Ꙙ' => 'ꙙ' 191: {0xA65A, 0xA65B}, // 'Ꙛ' => 'ꙛ' 200: {0xA65C, 0xA65D}, // 'Ꙝ' => 'ꙝ' 210: {0xA65E, 0xA65F}, // 'Ꙟ' => 'ꙟ' 219: {0xA660, 0xA661}, // 'Ꙡ' => 'ꙡ' 228: {0xA662, 0xA663}, // 'Ꙣ' => 'ꙣ' 237: {0xA664, 0xA665}, // 'Ꙥ' => 'ꙥ' 247: {0xA666, 0xA667}, // 'Ꙧ' => 'ꙧ' 256: {0xA668, 0xA669}, // 'Ꙩ' => 'ꙩ' 265: {0xA66A, 0xA66B}, // 'Ꙫ' => 'ꙫ' 274: {0xA66C, 0xA66D}, // 'Ꙭ' => 'ꙭ' 300: {0x0041, 0x0061}, // 'A' => 'a' 305: {0x0042, 0x0062}, // 'B' => 'b' 309: {0x0043, 0x0063}, // 'C' => 'c' 314: {0x0044, 0x0064}, // 'D' => 'd' 318: {0x0045, 0x0065}, // 'E' => 'e' 323: {0x0046, 0x0066}, // 'F' => 'f' 328: {0x0047, 0x0067}, // 'G' => 'g' 332: {0x0048, 0x0068}, // 'H' => 'h' 337: {0x0049, 0x0069}, // 'I' => 'i' 341: {0x004A, 0x006A}, // 'J' => 'j' 346: {0x004B, 0x006B}, // 'K' => 'k' 351: {0x004C, 0x006C}, // 'L' => 'l' 355: {0x004D, 0x006D}, // 'M' => 'm' 360: {0x004E, 0x006E}, // 'N' => 'n' 365: {0x004F, 0x006F}, // 'O' => 'o' 367: {0xA680, 0xA681}, // 'Ꚁ' => 'ꚁ' 369: {0x0050, 0x0070}, // 'P' => 'p' 374: {0x0051, 0x0071}, // 'Q' => 'q' 376: {0xA682, 0xA683}, // 'Ꚃ' => 'ꚃ' 378: {0x0052, 0x0072}, // 'R' => 'r' 383: {0x0053, 0x0073}, // 'S' => 's' 385: {0xA684, 0xA685}, // 'Ꚅ' => 'ꚅ' 388: {0x0054, 0x0074}, // 'T' => 't' 392: {0x0055, 0x0075}, // 'U' => 'u' 394: {0xA686, 0xA687}, // 'Ꚇ' => 'ꚇ' 397: {0x0056, 0x0076}, // 'V' => 'v' 402: {0x0057, 0x0077}, // 'W' => 'w' 404: {0xA688, 0xA689}, // 'Ꚉ' => 'ꚉ' 406: {0x0058, 0x0078}, // 'X' => 'x' 411: {0x0059, 0x0079}, // 'Y' => 'y' 413: {0xA68A, 0xA68B}, // 'Ꚋ' => 'ꚋ' 415: {0x005A, 0x007A}, // 'Z' => 'z' 422: {0xA68C, 0xA68D}, // 'Ꚍ' => 'ꚍ' 431: {0xA68E, 0xA68F}, // 'Ꚏ' => 'ꚏ' 441: {0xA690, 0xA691}, // 'Ꚑ' => 'ꚑ' 450: {0xA692, 0xA693}, // 'Ꚓ' => 'ꚓ' 459: {0xA694, 0xA695}, // 'Ꚕ' => 'ꚕ' 468: {0xA696, 0xA697}, // 'Ꚗ' => 'ꚗ' 478: {0xA698, 0xA699}, // 'Ꚙ' => 'ꚙ' 487: {0xA69A, 0xA69B}, // 'Ꚛ' => 'ꚛ' 836: {0x00B5, 0x03BC}, // 'µ' => 'μ' 887: {0x00C0, 0x00E0}, // 'À' => 'à' 891: {0x00C1, 0x00E1}, // 'Á' => 'á' 896: {0x00C2, 0x00E2}, // 'Â' => 'â' 901: {0x00C3, 0x00E3}, // 'Ã' => 'ã' 905: {0x00C4, 0x00E4}, // 'Ä' => 'ä' 910: {0x00C5, 0x00E5}, // 'Å' => 'å' 915: {0x00C6, 0x00E6}, // 'Æ' => 'æ' 919: {0x00C7, 0x00E7}, // 'Ç' => 'ç' 924: {0x00C8, 0x00E8}, // 'È' => 'è' 928: {0x00C9, 0x00E9}, // 'É' => 'é' 933: {0x00CA, 0x00EA}, // 'Ê' => 'ê' 938: {0x00CB, 0x00EB}, // 'Ë' => 'ë' 942: {0x00CC, 0x00EC}, // 'Ì' => 'ì' 947: {0x00CD, 0x00ED}, // 'Í' => 'í' 948: {0x1C80, 0x0432}, // 'ᲀ' => 'в' 951: {0x00CE, 0x00EE}, // 'Î' => 'î' 953: {0x1C81, 0x0434}, // 'ᲁ' => 'д' 956: {0x00CF, 0x00EF}, // 'Ï' => 'ï' 957: {0x1C82, 0x043E}, // 'ᲂ' => 'о' 961: {0x00D0, 0x00F0}, // 'Ð' => 'ð' 962: {0x1C83, 0x0441}, // 'ᲃ' => 'с' 965: {0x00D1, 0x00F1}, // 'Ñ' => 'ñ' 966: {0x1C84, 0x0442}, // 'ᲄ' => 'т' 970: {0x00D2, 0x00F2}, // 'Ò' => 'ò' 971: {0x1C85, 0x0442}, // 'ᲅ' => 'т' 975: {0x00D3, 0x00F3}, // 'Ó' => 'ó' 976: {0x1C86, 0x044A}, // 'ᲆ' => 'ъ' 979: {0x00D4, 0x00F4}, // 'Ô' => 'ô' 980: {0x1C87, 0x0463}, // 'ᲇ' => 'ѣ' 984: {0x00D5, 0x00F5}, // 'Õ' => 'õ' 985: {0x1C88, 0xA64B}, // 'ᲈ' => 'ꙋ' 988: {0x00D6, 0x00F6}, // 'Ö' => 'ö' 998: {0x00D8, 0x00F8}, // 'Ø' => 'ø' 1002: {0x00D9, 0x00F9}, // 'Ù' => 'ù' 1007: {0x00DA, 0x00FA}, // 'Ú' => 'ú' 1012: {0x00DB, 0x00FB}, // 'Û' => 'û' 1016: {0x00DC, 0x00FC}, // 'Ü' => 'ü' 1021: {0x00DD, 0x00FD}, // 'Ý' => 'ý' 1022: {0x1C90, 0x10D0}, // 'Ა' => 'ა' 1025: {0x00DE, 0x00FE}, // 'Þ' => 'þ' 1027: {0x1C91, 0x10D1}, // 'Ბ' => 'ბ' 1031: {0x1C92, 0x10D2}, // 'Გ' => 'გ' 1036: {0x1C93, 0x10D3}, // 'Დ' => 'დ' 1040: {0x1C94, 0x10D4}, // 'Ე' => 'ე' 1045: {0x1C95, 0x10D5}, // 'Ვ' => 'ვ' 1050: {0x1C96, 0x10D6}, // 'Ზ' => 'ზ' 1054: {0x1C97, 0x10D7}, // 'Თ' => 'თ' 1059: {0x1C98, 0x10D8}, // 'Ი' => 'ი' 1064: {0x1C99, 0x10D9}, // 'Კ' => 'კ' 1068: {0x1C9A, 0x10DA}, // 'Ლ' => 'ლ' 1073: {0x1C9B, 0x10DB}, // 'Მ' => 'მ' 1077: {0x1C9C, 0x10DC}, // 'Ნ' => 'ნ' 1082: {0x1C9D, 0x10DD}, // 'Ო' => 'ო' 1087: {0x1C9E, 0x10DE}, // 'Პ' => 'პ' 1091: {0x1C9F, 0x10DF}, // 'Ჟ' => 'ჟ' 1096: {0x1CA0, 0x10E0}, // 'Რ' => 'რ' 1100: {0x1CA1, 0x10E1}, // 'Ს' => 'ს' 1105: {0x1CA2, 0x10E2}, // 'Ტ' => 'ტ' 1110: {0x1CA3, 0x10E3}, // 'Უ' => 'უ' 1114: {0x1CA4, 0x10E4}, // 'Ფ' => 'ფ' 1115: {0xA722, 0xA723}, // 'Ꜣ' => 'ꜣ' 1119: {0x1CA5, 0x10E5}, // 'Ქ' => 'ქ' 1124: {0x1CA6, 0x10E6}, // 'Ღ' => 'ღ' 1125: {0xA724, 0xA725}, // 'Ꜥ' => 'ꜥ' 1128: {0x1CA7, 0x10E7}, // 'Ყ' => 'ყ' 1133: {0x1CA8, 0x10E8}, // 'Შ' => 'შ' 1134: {0xA726, 0xA727}, // 'Ꜧ' => 'ꜧ' 1137: {0x1CA9, 0x10E9}, // 'Ჩ' => 'ჩ' 1142: {0x1CAA, 0x10EA}, // 'Ც' => 'ც' 1143: {0xA728, 0xA729}, // 'Ꜩ' => 'ꜩ' 1147: {0x1CAB, 0x10EB}, // 'Ძ' => 'ძ' 1151: {0x1CAC, 0x10EC}, // 'Წ' => 'წ' 1152: {0xA72A, 0xA72B}, // 'Ꜫ' => 'ꜫ' 1156: {0x1CAD, 0x10ED}, // 'Ჭ' => 'ჭ' 1161: {0x1CAE, 0x10EE}, // 'Ხ' => 'ხ' 1162: {0xA72C, 0xA72D}, // 'Ꜭ' => 'ꜭ' 1165: {0x1CAF, 0x10EF}, // 'Ჯ' => 'ჯ' 1170: {0x1CB0, 0x10F0}, // 'Ჰ' => 'ჰ' 1171: {0xA72E, 0xA72F}, // 'Ꜯ' => 'ꜯ' 1174: {0x1CB1, 0x10F1}, // 'Ჱ' => 'ჱ' 1179: {0x1CB2, 0x10F2}, // 'Ჲ' => 'ჲ' 1183: {0x0100, 0x0101}, // 'Ā' => 'ā' 1184: {0x1CB3, 0x10F3}, // 'Ჳ' => 'ჳ' 1188: {0x1CB4, 0x10F4}, // 'Ჴ' => 'ჴ' 1189: {0xA732, 0xA733}, // 'Ꜳ' => 'ꜳ' 1192: {0x0102, 0x0103}, // 'Ă' => 'ă' 1193: {0x1CB5, 0x10F5}, // 'Ჵ' => 'ჵ' 1198: {0x1CB6, 0x10F6}, // 'Ჶ' => 'ჶ' 1199: {0xA734, 0xA735}, // 'Ꜵ' => 'ꜵ' 1201: {0x0104, 0x0105}, // 'Ą' => 'ą' 1202: {0x1CB7, 0x10F7}, // 'Ჷ' => 'ჷ' 1207: {0x1CB8, 0x10F8}, // 'Ჸ' => 'ჸ' 1208: {0xA736, 0xA737}, // 'Ꜷ' => 'ꜷ' 1210: {0x0106, 0x0107}, // 'Ć' => 'ć' 1211: {0x1CB9, 0x10F9}, // 'Ჹ' => 'ჹ' 1216: {0x1CBA, 0x10FA}, // 'Ჺ' => 'ჺ' 1217: {0xA738, 0xA739}, // 'Ꜹ' => 'ꜹ' 1220: {0x0108, 0x0109}, // 'Ĉ' => 'ĉ' 1226: {0xA73A, 0xA73B}, // 'Ꜻ' => 'ꜻ' 1229: {0x010A, 0x010B}, // 'Ċ' => 'ċ' 1230: {0x1CBD, 0x10FD}, // 'Ჽ' => 'ჽ' 1235: {0x1CBE, 0x10FE}, // 'Ჾ' => 'ჾ' 1236: {0xA73C, 0xA73D}, // 'Ꜽ' => 'ꜽ' 1238: {0x010C, 0x010D}, // 'Č' => 'č' 1239: {0x1CBF, 0x10FF}, // 'Ჿ' => 'ჿ' 1245: {0xA73E, 0xA73F}, // 'Ꜿ' => 'ꜿ' 1247: {0x010E, 0x010F}, // 'Ď' => 'ď' 1254: {0xA740, 0xA741}, // 'Ꝁ' => 'ꝁ' 1256: {0x0110, 0x0111}, // 'Đ' => 'đ' 1263: {0xA742, 0xA743}, // 'Ꝃ' => 'ꝃ' 1266: {0x0112, 0x0113}, // 'Ē' => 'ē' 1273: {0xA744, 0xA745}, // 'Ꝅ' => 'ꝅ' 1275: {0x0114, 0x0115}, // 'Ĕ' => 'ĕ' 1282: {0xA746, 0xA747}, // 'Ꝇ' => 'ꝇ' 1284: {0x0116, 0x0117}, // 'Ė' => 'ė' 1291: {0xA748, 0xA749}, // 'Ꝉ' => 'ꝉ' 1293: {0x0118, 0x0119}, // 'Ę' => 'ę' 1300: {0xA74A, 0xA74B}, // 'Ꝋ' => 'ꝋ' 1303: {0x011A, 0x011B}, // 'Ě' => 'ě' 1310: {0xA74C, 0xA74D}, // 'Ꝍ' => 'ꝍ' 1312: {0x011C, 0x011D}, // 'Ĝ' => 'ĝ' 1319: {0xA74E, 0xA74F}, // 'Ꝏ' => 'ꝏ' 1321: {0x011E, 0x011F}, // 'Ğ' => 'ğ' 1328: {0xA750, 0xA751}, // 'Ꝑ' => 'ꝑ' 1330: {0x0120, 0x0121}, // 'Ġ' => 'ġ' 1337: {0xA752, 0xA753}, // 'Ꝓ' => 'ꝓ' 1340: {0x0122, 0x0123}, // 'Ģ' => 'ģ' 1346: {0xA754, 0xA755}, // 'Ꝕ' => 'ꝕ' 1349: {0x0124, 0x0125}, // 'Ĥ' => 'ĥ' 1356: {0xA756, 0xA757}, // 'Ꝗ' => 'ꝗ' 1358: {0x0126, 0x0127}, // 'Ħ' => 'ħ' 1365: {0xA758, 0xA759}, // 'Ꝙ' => 'ꝙ' 1367: {0x0128, 0x0129}, // 'Ĩ' => 'ĩ' 1374: {0xA75A, 0xA75B}, // 'Ꝛ' => 'ꝛ' 1377: {0x012A, 0x012B}, // 'Ī' => 'ī' 1383: {0xA75C, 0xA75D}, // 'Ꝝ' => 'ꝝ' 1386: {0x012C, 0x012D}, // 'Ĭ' => 'ĭ' 1393: {0xA75E, 0xA75F}, // 'Ꝟ' => 'ꝟ' 1395: {0x012E, 0x012F}, // 'Į' => 'į' 1402: {0xA760, 0xA761}, // 'Ꝡ' => 'ꝡ' 1411: {0xA762, 0xA763}, // 'Ꝣ' => 'ꝣ' 1414: {0x0132, 0x0133}, // 'IJ' => 'ij' 1420: {0xA764, 0xA765}, // 'Ꝥ' => 'ꝥ' 1423: {0x0134, 0x0135}, // 'Ĵ' => 'ĵ' 1430: {0xA766, 0xA767}, // 'Ꝧ' => 'ꝧ' 1432: {0x0136, 0x0137}, // 'Ķ' => 'ķ' 1439: {0xA768, 0xA769}, // 'Ꝩ' => 'ꝩ' 1446: {0x0139, 0x013A}, // 'Ĺ' => 'ĺ' 1448: {0xA76A, 0xA76B}, // 'Ꝫ' => 'ꝫ' 1455: {0x013B, 0x013C}, // 'Ļ' => 'ļ' 1457: {0xA76C, 0xA76D}, // 'Ꝭ' => 'ꝭ' 1464: {0x013D, 0x013E}, // 'Ľ' => 'ľ' 1467: {0xA76E, 0xA76F}, // 'Ꝯ' => 'ꝯ' 1474: {0x013F, 0x0140}, // 'Ŀ' => 'ŀ' 1483: {0x0141, 0x0142}, // 'Ł' => 'ł' 1492: {0x0143, 0x0144}, // 'Ń' => 'ń' 1501: {0x0145, 0x0146}, // 'Ņ' => 'ņ' 1511: {0x0147, 0x0148}, // 'Ň' => 'ň' 1517: {0xA779, 0xA77A}, // 'Ꝺ' => 'ꝺ' 1525: {0x014A, 0x014B}, // 'Ŋ' => 'ŋ' 1527: {0xA77B, 0xA77C}, // 'Ꝼ' => 'ꝼ' 1534: {0x014C, 0x014D}, // 'Ō' => 'ō' 1536: {0xA77D, 0x1D79}, // 'Ᵹ' => 'ᵹ' 1541: {0xA77E, 0xA77F}, // 'Ꝿ' => 'ꝿ' 1543: {0x014E, 0x014F}, // 'Ŏ' => 'ŏ' 1550: {0xA780, 0xA781}, // 'Ꞁ' => 'ꞁ' 1552: {0x0150, 0x0151}, // 'Ő' => 'ő' 1559: {0xA782, 0xA783}, // 'Ꞃ' => 'ꞃ' 1561: {0x0152, 0x0153}, // 'Œ' => 'œ' 1568: {0xA784, 0xA785}, // 'Ꞅ' => 'ꞅ' 1571: {0x0154, 0x0155}, // 'Ŕ' => 'ŕ' 1578: {0xA786, 0xA787}, // 'Ꞇ' => 'ꞇ' 1580: {0x0156, 0x0157}, // 'Ŗ' => 'ŗ' 1589: {0x0158, 0x0159}, // 'Ř' => 'ř' 1598: {0x015A, 0x015B}, // 'Ś' => 'ś' 1601: {0xA78B, 0xA78C}, // 'Ꞌ' => 'ꞌ' 1608: {0x015C, 0x015D}, // 'Ŝ' => 'ŝ' 1610: {0xA78D, 0x0265}, // 'Ɥ' => 'ɥ' 1617: {0x015E, 0x015F}, // 'Ş' => 'ş' 1624: {0xA790, 0xA791}, // 'Ꞑ' => 'ꞑ' 1626: {0x0160, 0x0161}, // 'Š' => 'š' 1633: {0xA792, 0xA793}, // 'Ꞓ' => 'ꞓ' 1635: {0x0162, 0x0163}, // 'Ţ' => 'ţ' 1645: {0x0164, 0x0165}, // 'Ť' => 'ť' 1651: {0xA796, 0xA797}, // 'Ꞗ' => 'ꞗ' 1654: {0x0166, 0x0167}, // 'Ŧ' => 'ŧ' 1661: {0xA798, 0xA799}, // 'Ꞙ' => 'ꞙ' 1663: {0x0168, 0x0169}, // 'Ũ' => 'ũ' 1670: {0xA79A, 0xA79B}, // 'Ꞛ' => 'ꞛ' 1672: {0x016A, 0x016B}, // 'Ū' => 'ū' 1679: {0xA79C, 0xA79D}, // 'Ꞝ' => 'ꞝ' 1682: {0x016C, 0x016D}, // 'Ŭ' => 'ŭ' 1688: {0xA79E, 0xA79F}, // 'Ꞟ' => 'ꞟ' 1691: {0x016E, 0x016F}, // 'Ů' => 'ů' 1698: {0xA7A0, 0xA7A1}, // 'Ꞡ' => 'ꞡ' 1700: {0x0170, 0x0171}, // 'Ű' => 'ű' 1707: {0xA7A2, 0xA7A3}, // 'Ꞣ' => 'ꞣ' 1709: {0x0172, 0x0173}, // 'Ų' => 'ų' 1716: {0xA7A4, 0xA7A5}, // 'Ꞥ' => 'ꞥ' 1719: {0x0174, 0x0175}, // 'Ŵ' => 'ŵ' 1725: {0xA7A6, 0xA7A7}, // 'Ꞧ' => 'ꞧ' 1728: {0x0176, 0x0177}, // 'Ŷ' => 'ŷ' 1735: {0xA7A8, 0xA7A9}, // 'Ꞩ' => 'ꞩ' 1737: {0x0178, 0x00FF}, // 'Ÿ' => 'ÿ' 1742: {0x0179, 0x017A}, // 'Ź' => 'ź' 1744: {0xA7AA, 0x0266}, // 'Ɦ' => 'ɦ' 1749: {0xA7AB, 0x025C}, // 'Ɜ' => 'ɜ' 1751: {0x017B, 0x017C}, // 'Ż' => 'ż' 1753: {0xA7AC, 0x0261}, // 'Ɡ' => 'ɡ' 1758: {0xA7AD, 0x026C}, // 'Ɬ' => 'ɬ' 1760: {0x017D, 0x017E}, // 'Ž' => 'ž' 1762: {0xA7AE, 0x026A}, // 'Ɪ' => 'ɪ' 1769: {0x017F, 0x0073}, // 'ſ' => 's' 1772: {0xA7B0, 0x029E}, // 'Ʞ' => 'ʞ' 1776: {0xA7B1, 0x0287}, // 'Ʇ' => 'ʇ' 1779: {0x0181, 0x0253}, // 'Ɓ' => 'ɓ' 1781: {0xA7B2, 0x029D}, // 'Ʝ' => 'ʝ' 1783: {0x0182, 0x0183}, // 'Ƃ' => 'ƃ' 1785: {0xA7B3, 0xAB53}, // 'Ꭓ' => 'ꭓ' 1790: {0xA7B4, 0xA7B5}, // 'Ꞵ' => 'ꞵ' 1793: {0x0184, 0x0185}, // 'Ƅ' => 'ƅ' 1799: {0xA7B6, 0xA7B7}, // 'Ꞷ' => 'ꞷ' 1802: {0x0186, 0x0254}, // 'Ɔ' => 'ɔ' 1806: {0x0187, 0x0188}, // 'Ƈ' => 'ƈ' 1809: {0xA7B8, 0xA7B9}, // 'Ꞹ' => 'ꞹ' 1816: {0x0189, 0x0256}, // 'Ɖ' => 'ɖ' 1818: {0xA7BA, 0xA7BB}, // 'Ꞻ' => 'ꞻ' 1820: {0x018A, 0x0257}, // 'Ɗ' => 'ɗ' 1825: {0x018B, 0x018C}, // 'Ƌ' => 'ƌ' 1827: {0xA7BC, 0xA7BD}, // 'Ꞽ' => 'ꞽ' 1836: {0xA7BE, 0xA7BF}, // 'Ꞿ' => 'ꞿ' 1839: {0x018E, 0x01DD}, // 'Ǝ' => 'ǝ' 1843: {0x018F, 0x0259}, // 'Ə' => 'ə' 1848: {0x0190, 0x025B}, // 'Ɛ' => 'ɛ' 1853: {0x0191, 0x0192}, // 'Ƒ' => 'ƒ' 1855: {0xA7C2, 0xA7C3}, // 'Ꟃ' => 'ꟃ' 1862: {0x0193, 0x0260}, // 'Ɠ' => 'ɠ' 1864: {0xA7C4, 0xA794}, // 'Ꞔ' => 'ꞔ' 1866: {0x0194, 0x0263}, // 'Ɣ' => 'ɣ' 1869: {0xA7C5, 0x0282}, // 'Ʂ' => 'ʂ' 1873: {0xA7C6, 0x1D8E}, // 'Ᶎ' => 'ᶎ' 1876: {0x0196, 0x0269}, // 'Ɩ' => 'ɩ' 1878: {0xA7C7, 0xA7C8}, // 'Ꟈ' => 'ꟈ' 1880: {0x0197, 0x0268}, // 'Ɨ' => 'ɨ' 1885: {0x0198, 0x0199}, // 'Ƙ' => 'ƙ' 1887: {0xA7C9, 0xA7CA}, // 'Ꟊ' => 'ꟊ' 1903: {0x019C, 0x026F}, // 'Ɯ' => 'ɯ' 1908: {0x019D, 0x0272}, // 'Ɲ' => 'ɲ' 1917: {0x019F, 0x0275}, // 'Ɵ' => 'ɵ' 1922: {0x01A0, 0x01A1}, // 'Ơ' => 'ơ' 1931: {0x01A2, 0x01A3}, // 'Ƣ' => 'ƣ' 1940: {0x01A4, 0x01A5}, // 'Ƥ' => 'ƥ' 1950: {0x01A6, 0x0280}, // 'Ʀ' => 'ʀ' 1954: {0x01A7, 0x01A8}, // 'Ƨ' => 'ƨ' 1964: {0x01A9, 0x0283}, // 'Ʃ' => 'ʃ' 1977: {0x01AC, 0x01AD}, // 'Ƭ' => 'ƭ' 1987: {0x01AE, 0x0288}, // 'Ʈ' => 'ʈ' 1991: {0x01AF, 0x01B0}, // 'Ư' => 'ư' 2000: {0x01B1, 0x028A}, // 'Ʊ' => 'ʊ' 2005: {0x01B2, 0x028B}, // 'Ʋ' => 'ʋ' 2010: {0x01B3, 0x01B4}, // 'Ƴ' => 'ƴ' 2019: {0x01B5, 0x01B6}, // 'Ƶ' => 'ƶ' 2028: {0x01B7, 0x0292}, // 'Ʒ' => 'ʒ' 2033: {0x01B8, 0x01B9}, // 'Ƹ' => 'ƹ' 2051: {0x01BC, 0x01BD}, // 'Ƽ' => 'ƽ' 2088: {0x01C4, 0x01C6}, // 'DŽ' => 'dž' 2090: {0xA7F5, 0xA7F6}, // 'Ꟶ' => 'ꟶ' 2093: {0x01C5, 0x01C6}, // 'Dž' => 'dž' 2102: {0x01C7, 0x01C9}, // 'LJ' => 'lj' 2107: {0x01C8, 0x01C9}, // 'Lj' => 'lj' 2116: {0x01CA, 0x01CC}, // 'NJ' => 'nj' 2121: {0x01CB, 0x01CC}, // 'Nj' => 'nj' 2130: {0x01CD, 0x01CE}, // 'Ǎ' => 'ǎ' 2139: {0x01CF, 0x01D0}, // 'Ǐ' => 'ǐ' 2148: {0x01D1, 0x01D2}, // 'Ǒ' => 'ǒ' 2158: {0x01D3, 0x01D4}, // 'Ǔ' => 'ǔ' 2167: {0x01D5, 0x01D6}, // 'Ǖ' => 'ǖ' 2176: {0x01D7, 0x01D8}, // 'Ǘ' => 'ǘ' 2185: {0x01D9, 0x01DA}, // 'Ǚ' => 'ǚ' 2195: {0x01DB, 0x01DC}, // 'Ǜ' => 'ǜ' 2208: {0x01DE, 0x01DF}, // 'Ǟ' => 'ǟ' 2218: {0x01E0, 0x01E1}, // 'Ǡ' => 'ǡ' 2227: {0x01E2, 0x01E3}, // 'Ǣ' => 'ǣ' 2236: {0x01E4, 0x01E5}, // 'Ǥ' => 'ǥ' 2245: {0x01E6, 0x01E7}, // 'Ǧ' => 'ǧ' 2255: {0x01E8, 0x01E9}, // 'Ǩ' => 'ǩ' 2264: {0x01EA, 0x01EB}, // 'Ǫ' => 'ǫ' 2273: {0x01EC, 0x01ED}, // 'Ǭ' => 'ǭ' 2282: {0x01EE, 0x01EF}, // 'Ǯ' => 'ǯ' 2296: {0x01F1, 0x01F3}, // 'DZ' => 'dz' 2301: {0x01F2, 0x01F3}, // 'Dz' => 'dz' 2310: {0x01F4, 0x01F5}, // 'Ǵ' => 'ǵ' 2319: {0x01F6, 0x0195}, // 'Ƕ' => 'ƕ' 2324: {0x01F7, 0x01BF}, // 'Ƿ' => 'ƿ' 2329: {0x01F8, 0x01F9}, // 'Ǹ' => 'ǹ' 2338: {0x01FA, 0x01FB}, // 'Ǻ' => 'ǻ' 2347: {0x01FC, 0x01FD}, // 'Ǽ' => 'ǽ' 2356: {0x01FE, 0x01FF}, // 'Ǿ' => 'ǿ' 2366: {0x0200, 0x0201}, // 'Ȁ' => 'ȁ' 2375: {0x0202, 0x0203}, // 'Ȃ' => 'ȃ' 2384: {0x0204, 0x0205}, // 'Ȅ' => 'ȅ' 2393: {0x0206, 0x0207}, // 'Ȇ' => 'ȇ' 2403: {0x0208, 0x0209}, // 'Ȉ' => 'ȉ' 2412: {0x020A, 0x020B}, // 'Ȋ' => 'ȋ' 2421: {0x020C, 0x020D}, // 'Ȍ' => 'ȍ' 2430: {0x020E, 0x020F}, // 'Ȏ' => 'ȏ' 2440: {0x0210, 0x0211}, // 'Ȑ' => 'ȑ' 2449: {0x0212, 0x0213}, // 'Ȓ' => 'ȓ' 2458: {0x0214, 0x0215}, // 'Ȕ' => 'ȕ' 2467: {0x0216, 0x0217}, // 'Ȗ' => 'ȗ' 2470: {0x24B6, 0x24D0}, // 'Ⓐ' => 'ⓐ' 2474: {0x24B7, 0x24D1}, // 'Ⓑ' => 'ⓑ' 2476: {0x0218, 0x0219}, // 'Ș' => 'ș' 2479: {0x24B8, 0x24D2}, // 'Ⓒ' => 'ⓒ' 2484: {0x24B9, 0x24D3}, // 'Ⓓ' => 'ⓓ' 2486: {0x021A, 0x021B}, // 'Ț' => 'ț' 2488: {0x24BA, 0x24D4}, // 'Ⓔ' => 'ⓔ' 2493: {0x24BB, 0x24D5}, // 'Ⓕ' => 'ⓕ' 2495: {0x021C, 0x021D}, // 'Ȝ' => 'ȝ' 2498: {0x24BC, 0x24D6}, // 'Ⓖ' => 'ⓖ' 2502: {0x24BD, 0x24D7}, // 'Ⓗ' => 'ⓗ' 2504: {0x021E, 0x021F}, // 'Ȟ' => 'ȟ' 2507: {0x24BE, 0x24D8}, // 'Ⓘ' => 'ⓘ' 2511: {0x24BF, 0x24D9}, // 'Ⓙ' => 'ⓙ' 2513: {0x0220, 0x019E}, // 'Ƞ' => 'ƞ' 2516: {0x24C0, 0x24DA}, // 'Ⓚ' => 'ⓚ' 2521: {0x24C1, 0x24DB}, // 'Ⓛ' => 'ⓛ' 2523: {0x0222, 0x0223}, // 'Ȣ' => 'ȣ' 2525: {0x24C2, 0x24DC}, // 'Ⓜ' => 'ⓜ' 2530: {0x24C3, 0x24DD}, // 'Ⓝ' => 'ⓝ' 2532: {0x0224, 0x0225}, // 'Ȥ' => 'ȥ' 2535: {0x24C4, 0x24DE}, // 'Ⓞ' => 'ⓞ' 2539: {0x24C5, 0x24DF}, // 'Ⓟ' => 'ⓟ' 2541: {0x0226, 0x0227}, // 'Ȧ' => 'ȧ' 2544: {0x24C6, 0x24E0}, // 'Ⓠ' => 'ⓠ' 2548: {0x24C7, 0x24E1}, // 'Ⓡ' => 'ⓡ' 2550: {0x0228, 0x0229}, // 'Ȩ' => 'ȩ' 2553: {0x24C8, 0x24E2}, // 'Ⓢ' => 'ⓢ' 2558: {0x24C9, 0x24E3}, // 'Ⓣ' => 'ⓣ' 2560: {0x022A, 0x022B}, // 'Ȫ' => 'ȫ' 2562: {0x24CA, 0x24E4}, // 'Ⓤ' => 'ⓤ' 2567: {0x24CB, 0x24E5}, // 'Ⓥ' => 'ⓥ' 2569: {0x022C, 0x022D}, // 'Ȭ' => 'ȭ' 2571: {0x24CC, 0x24E6}, // 'Ⓦ' => 'ⓦ' 2576: {0x24CD, 0x24E7}, // 'Ⓧ' => 'ⓧ' 2578: {0x022E, 0x022F}, // 'Ȯ' => 'ȯ' 2581: {0x24CE, 0x24E8}, // 'Ⓨ' => 'ⓨ' 2585: {0x24CF, 0x24E9}, // 'Ⓩ' => 'ⓩ' 2587: {0x0230, 0x0231}, // 'Ȱ' => 'ȱ' 2597: {0x0232, 0x0233}, // 'Ȳ' => 'ȳ' 2634: {0x023A, 0x2C65}, // 'Ⱥ' => 'ⱥ' 2638: {0x023B, 0x023C}, // 'Ȼ' => 'ȼ' 2647: {0x023D, 0x019A}, // 'Ƚ' => 'ƚ' 2652: {0x023E, 0x2C66}, // 'Ⱦ' => 'ⱦ' 2666: {0x0241, 0x0242}, // 'Ɂ' => 'ɂ' 2675: {0x0243, 0x0180}, // 'Ƀ' => 'ƀ' 2680: {0x0244, 0x0289}, // 'Ʉ' => 'ʉ' 2684: {0x0245, 0x028C}, // 'Ʌ' => 'ʌ' 2689: {0x0246, 0x0247}, // 'Ɇ' => 'ɇ' 2698: {0x0248, 0x0249}, // 'Ɉ' => 'ɉ' 2708: {0x024A, 0x024B}, // 'Ɋ' => 'ɋ' 2717: {0x024C, 0x024D}, // 'Ɍ' => 'ɍ' 2723: {0x1E00, 0x1E01}, // 'Ḁ' => 'ḁ' 2726: {0x024E, 0x024F}, // 'Ɏ' => 'ɏ' 2732: {0x1E02, 0x1E03}, // 'Ḃ' => 'ḃ' 2741: {0x1E04, 0x1E05}, // 'Ḅ' => 'ḅ' 2750: {0x1E06, 0x1E07}, // 'Ḇ' => 'ḇ' 2760: {0x1E08, 0x1E09}, // 'Ḉ' => 'ḉ' 2769: {0x1E0A, 0x1E0B}, // 'Ḋ' => 'ḋ' 2778: {0x1E0C, 0x1E0D}, // 'Ḍ' => 'ḍ' 2787: {0x1E0E, 0x1E0F}, // 'Ḏ' => 'ḏ' 2796: {0x1E10, 0x1E11}, // 'Ḑ' => 'ḑ' 2806: {0x1E12, 0x1E13}, // 'Ḓ' => 'ḓ' 2815: {0x1E14, 0x1E15}, // 'Ḕ' => 'ḕ' 2824: {0x1E16, 0x1E17}, // 'Ḗ' => 'ḗ' 2833: {0x1E18, 0x1E19}, // 'Ḙ' => 'ḙ' 2843: {0x1E1A, 0x1E1B}, // 'Ḛ' => 'ḛ' 2852: {0x1E1C, 0x1E1D}, // 'Ḝ' => 'ḝ' 2861: {0x1E1E, 0x1E1F}, // 'Ḟ' => 'ḟ' 2870: {0x1E20, 0x1E21}, // 'Ḡ' => 'ḡ' 2880: {0x1E22, 0x1E23}, // 'Ḣ' => 'ḣ' 2889: {0x1E24, 0x1E25}, // 'Ḥ' => 'ḥ' 2898: {0x1E26, 0x1E27}, // 'Ḧ' => 'ḧ' 2901: {0x2C00, 0x2C30}, // 'Ⰰ' => 'ⰰ' 2906: {0x2C01, 0x2C31}, // 'Ⰱ' => 'ⰱ' 2907: {0x1E28, 0x1E29}, // 'Ḩ' => 'ḩ' 2910: {0x2C02, 0x2C32}, // 'Ⰲ' => 'ⰲ' 2915: {0x2C03, 0x2C33}, // 'Ⰳ' => 'ⰳ' 2917: {0x1E2A, 0x1E2B}, // 'Ḫ' => 'ḫ' 2920: {0x2C04, 0x2C34}, // 'Ⰴ' => 'ⰴ' 2924: {0x2C05, 0x2C35}, // 'Ⰵ' => 'ⰵ' 2926: {0x1E2C, 0x1E2D}, // 'Ḭ' => 'ḭ' 2929: {0x2C06, 0x2C36}, // 'Ⰶ' => 'ⰶ' 2933: {0x2C07, 0x2C37}, // 'Ⰷ' => 'ⰷ' 2935: {0x1E2E, 0x1E2F}, // 'Ḯ' => 'ḯ' 2938: {0x2C08, 0x2C38}, // 'Ⰸ' => 'ⰸ' 2943: {0x2C09, 0x2C39}, // 'Ⰹ' => 'ⰹ' 2944: {0x1E30, 0x1E31}, // 'Ḱ' => 'ḱ' 2947: {0x2C0A, 0x2C3A}, // 'Ⰺ' => 'ⰺ' 2952: {0x2C0B, 0x2C3B}, // 'Ⰻ' => 'ⰻ' 2954: {0x1E32, 0x1E33}, // 'Ḳ' => 'ḳ' 2956: {0x2C0C, 0x2C3C}, // 'Ⰼ' => 'ⰼ' 2961: {0x2C0D, 0x2C3D}, // 'Ⰽ' => 'ⰽ' 2963: {0x1E34, 0x1E35}, // 'Ḵ' => 'ḵ' 2966: {0x2C0E, 0x2C3E}, // 'Ⰾ' => 'ⰾ' 2970: {0x2C0F, 0x2C3F}, // 'Ⰿ' => 'ⰿ' 2972: {0x1E36, 0x1E37}, // 'Ḷ' => 'ḷ' 2975: {0x2C10, 0x2C40}, // 'Ⱀ' => 'ⱀ' 2980: {0x2C11, 0x2C41}, // 'Ⱁ' => 'ⱁ' 2981: {0x1E38, 0x1E39}, // 'Ḹ' => 'ḹ' 2984: {0x2C12, 0x2C42}, // 'Ⱂ' => 'ⱂ' 2989: {0x2C13, 0x2C43}, // 'Ⱃ' => 'ⱃ' 2991: {0x1E3A, 0x1E3B}, // 'Ḻ' => 'ḻ' 2993: {0x2C14, 0x2C44}, // 'Ⱄ' => 'ⱄ' 2998: {0x2C15, 0x2C45}, // 'Ⱅ' => 'ⱅ' 3000: {0x1E3C, 0x1E3D}, // 'Ḽ' => 'ḽ' 3003: {0x2C16, 0x2C46}, // 'Ⱆ' => 'ⱆ' 3007: {0x2C17, 0x2C47}, // 'Ⱇ' => 'ⱇ' 3009: {0x1E3E, 0x1E3F}, // 'Ḿ' => 'ḿ' 3012: {0x2C18, 0x2C48}, // 'Ⱈ' => 'ⱈ' 3017: {0x2C19, 0x2C49}, // 'Ⱉ' => 'ⱉ' 3018: {0x1E40, 0x1E41}, // 'Ṁ' => 'ṁ' 3021: {0x2C1A, 0x2C4A}, // 'Ⱊ' => 'ⱊ' 3026: {0x2C1B, 0x2C4B}, // 'Ⱋ' => 'ⱋ' 3028: {0x1E42, 0x1E43}, // 'Ṃ' => 'ṃ' 3030: {0x2C1C, 0x2C4C}, // 'Ⱌ' => 'ⱌ' 3035: {0x2C1D, 0x2C4D}, // 'Ⱍ' => 'ⱍ' 3037: {0x1E44, 0x1E45}, // 'Ṅ' => 'ṅ' 3040: {0x2C1E, 0x2C4E}, // 'Ⱎ' => 'ⱎ' 3044: {0x2C1F, 0x2C4F}, // 'Ⱏ' => 'ⱏ' 3046: {0x1E46, 0x1E47}, // 'Ṇ' => 'ṇ' 3049: {0x2C20, 0x2C50}, // 'Ⱐ' => 'ⱐ' 3054: {0x2C21, 0x2C51}, // 'Ⱑ' => 'ⱑ' 3055: {0x1E48, 0x1E49}, // 'Ṉ' => 'ṉ' 3058: {0x2C22, 0x2C52}, // 'Ⱒ' => 'ⱒ' 3063: {0x2C23, 0x2C53}, // 'Ⱓ' => 'ⱓ' 3065: {0x1E4A, 0x1E4B}, // 'Ṋ' => 'ṋ' 3067: {0x2C24, 0x2C54}, // 'Ⱔ' => 'ⱔ' 3072: {0x2C25, 0x2C55}, // 'Ⱕ' => 'ⱕ' 3074: {0x1E4C, 0x1E4D}, // 'Ṍ' => 'ṍ' 3077: {0x2C26, 0x2C56}, // 'Ⱖ' => 'ⱖ' 3081: {0x2C27, 0x2C57}, // 'Ⱗ' => 'ⱗ' 3083: {0x1E4E, 0x1E4F}, // 'Ṏ' => 'ṏ' 3086: {0x2C28, 0x2C58}, // 'Ⱘ' => 'ⱘ' 3090: {0x2C29, 0x2C59}, // 'Ⱙ' => 'ⱙ' 3092: {0x1E50, 0x1E51}, // 'Ṑ' => 'ṑ' 3095: {0x2C2A, 0x2C5A}, // 'Ⱚ' => 'ⱚ' 3100: {0x2C2B, 0x2C5B}, // 'Ⱛ' => 'ⱛ' 3101: {0x1E52, 0x1E53}, // 'Ṓ' => 'ṓ' 3104: {0x2C2C, 0x2C5C}, // 'Ⱜ' => 'ⱜ' 3109: {0x2C2D, 0x2C5D}, // 'Ⱝ' => 'ⱝ' 3111: {0x1E54, 0x1E55}, // 'Ṕ' => 'ṕ' 3114: {0x2C2E, 0x2C5E}, // 'Ⱞ' => 'ⱞ' 3120: {0x1E56, 0x1E57}, // 'Ṗ' => 'ṗ' 3129: {0x1E58, 0x1E59}, // 'Ṙ' => 'ṙ' 3138: {0x1E5A, 0x1E5B}, // 'Ṛ' => 'ṛ' 3148: {0x1E5C, 0x1E5D}, // 'Ṝ' => 'ṝ' 3157: {0x1E5E, 0x1E5F}, // 'Ṟ' => 'ṟ' 3166: {0x1E60, 0x1E61}, // 'Ṡ' => 'ṡ' 3175: {0x1E62, 0x1E63}, // 'Ṣ' => 'ṣ' 3185: {0x1E64, 0x1E65}, // 'Ṥ' => 'ṥ' 3194: {0x1E66, 0x1E67}, // 'Ṧ' => 'ṧ' 3203: {0x1E68, 0x1E69}, // 'Ṩ' => 'ṩ' 3212: {0x1E6A, 0x1E6B}, // 'Ṫ' => 'ṫ' 3222: {0x1E6C, 0x1E6D}, // 'Ṭ' => 'ṭ' 3231: {0x1E6E, 0x1E6F}, // 'Ṯ' => 'ṯ' 3240: {0x1E70, 0x1E71}, // 'Ṱ' => 'ṱ' 3249: {0x1E72, 0x1E73}, // 'Ṳ' => 'ṳ' 3259: {0x1E74, 0x1E75}, // 'Ṵ' => 'ṵ' 3268: {0x1E76, 0x1E77}, // 'Ṷ' => 'ṷ' 3277: {0x1E78, 0x1E79}, // 'Ṹ' => 'ṹ' 3283: {0x10A0, 0x2D00}, // 'Ⴀ' => 'ⴀ' 3286: {0x1E7A, 0x1E7B}, // 'Ṻ' => 'ṻ' 3288: {0x10A1, 0x2D01}, // 'Ⴁ' => 'ⴁ' 3293: {0x10A2, 0x2D02}, // 'Ⴂ' => 'ⴂ' 3296: {0x1E7C, 0x1E7D}, // 'Ṽ' => 'ṽ' 3297: {0x10A3, 0x2D03}, // 'Ⴃ' => 'ⴃ' 3302: {0x10A4, 0x2D04}, // 'Ⴄ' => 'ⴄ' 3305: {0x1E7E, 0x1E7F}, // 'Ṿ' => 'ṿ' 3307: {0x10A5, 0x2D05}, // 'Ⴅ' => 'ⴅ' 3311: {0x10A6, 0x2D06}, // 'Ⴆ' => 'ⴆ' 3314: {0x1E80, 0x1E81}, // 'Ẁ' => 'ẁ' 3316: {0x10A7, 0x2D07}, // 'Ⴇ' => 'ⴇ' 3320: {0x10A8, 0x2D08}, // 'Ⴈ' => 'ⴈ' 3323: {0x1E82, 0x1E83}, // 'Ẃ' => 'ẃ' 3325: {0x10A9, 0x2D09}, // 'Ⴉ' => 'ⴉ' 3330: {0x10AA, 0x2D0A}, // 'Ⴊ' => 'ⴊ' 3333: {0x1E84, 0x1E85}, // 'Ẅ' => 'ẅ' 3334: {0x10AB, 0x2D0B}, // 'Ⴋ' => 'ⴋ' 3339: {0x10AC, 0x2D0C}, // 'Ⴌ' => 'ⴌ' 3342: {0x1E86, 0x1E87}, // 'Ẇ' => 'ẇ' 3344: {0x10AD, 0x2D0D}, // 'Ⴍ' => 'ⴍ' 3345: {0x2C60, 0x2C61}, // 'Ⱡ' => 'ⱡ' 3348: {0x10AE, 0x2D0E}, // 'Ⴎ' => 'ⴎ' 3351: {0x1E88, 0x1E89}, // 'Ẉ' => 'ẉ' 3353: {0x10AF, 0x2D0F}, // 'Ⴏ' => 'ⴏ' 3354: {0x2C62, 0x026B}, // 'Ɫ' => 'ɫ' 3357: {0x10B0, 0x2D10}, // 'Ⴐ' => 'ⴐ' 3359: {0x2C63, 0x1D7D}, // 'Ᵽ' => 'ᵽ' 3360: {0x1E8A, 0x1E8B}, // 'Ẋ' => 'ẋ' 3362: {0x10B1, 0x2D11}, // 'Ⴑ' => 'ⴑ' 3363: {0x2C64, 0x027D}, // 'Ɽ' => 'ɽ' 3367: {0x10B2, 0x2D12}, // 'Ⴒ' => 'ⴒ' 3370: {0x1E8C, 0x1E8D}, // 'Ẍ' => 'ẍ' 3371: {0x10B3, 0x2D13}, // 'Ⴓ' => 'ⴓ' 3376: {0x10B4, 0x2D14}, // 'Ⴔ' => 'ⴔ' 3377: {0x2C67, 0x2C68}, // 'Ⱨ' => 'ⱨ' 3379: {0x1E8E, 0x1E8F}, // 'Ẏ' => 'ẏ' 3380: {0x10B5, 0x2D15}, // 'Ⴕ' => 'ⴕ' 3385: {0x10B6, 0x2D16}, // 'Ⴖ' => 'ⴖ' 3386: {0x2C69, 0x2C6A}, // 'Ⱪ' => 'ⱪ' 3388: {0x1E90, 0x1E91}, // 'Ẑ' => 'ẑ' 3390: {0x10B7, 0x2D17}, // 'Ⴗ' => 'ⴗ' 3394: {0x10B8, 0x2D18}, // 'Ⴘ' => 'ⴘ' 3395: {0x2C6B, 0x2C6C}, // 'Ⱬ' => 'ⱬ' 3397: {0x1E92, 0x1E93}, // 'Ẓ' => 'ẓ' 3399: {0x10B9, 0x2D19}, // 'Ⴙ' => 'ⴙ' 3404: {0x10BA, 0x2D1A}, // 'Ⴚ' => 'ⴚ' 3405: {0x2C6D, 0x0251}, // 'Ɑ' => 'ɑ' 3406: {0x1E94, 0x1E95}, // 'Ẕ' => 'ẕ' 3408: {0x10BB, 0x2D1B}, // 'Ⴛ' => 'ⴛ' 3409: {0x2C6E, 0x0271}, // 'Ɱ' => 'ɱ' 3413: {0x10BC, 0x2D1C}, // 'Ⴜ' => 'ⴜ' 3414: {0x2C6F, 0x0250}, // 'Ɐ' => 'ɐ' 3417: {0x10BD, 0x2D1D}, // 'Ⴝ' => 'ⴝ' 3419: {0x2C70, 0x0252}, // 'Ɒ' => 'ɒ' 3422: {0x10BE, 0x2D1E}, // 'Ⴞ' => 'ⴞ' 3427: {0x10BF, 0x2D1F}, // 'Ⴟ' => 'ⴟ' 3428: {0x2C72, 0x2C73}, // 'Ⱳ' => 'ⱳ' 3431: {0x10C0, 0x2D20}, // 'Ⴠ' => 'ⴠ' 3436: {0x10C1, 0x2D21}, // 'Ⴡ' => 'ⴡ' 3439: {0x1E9B, 0x1E61}, // 'ẛ' => 'ṡ' 3441: {0x10C2, 0x2D22}, // 'Ⴢ' => 'ⴢ' 3442: {0x2C75, 0x2C76}, // 'Ⱶ' => 'ⱶ' 3445: {0x10C3, 0x2D23}, // 'Ⴣ' => 'ⴣ' 3450: {0x10C4, 0x2D24}, // 'Ⴤ' => 'ⴤ' 3453: {0x1E9E, 0x00DF}, // 'ẞ' => 'ß' 3454: {0x10C5, 0x2D25}, // 'Ⴥ' => 'ⴥ' 3462: {0x1EA0, 0x1EA1}, // 'Ạ' => 'ạ' 3464: {0x10C7, 0x2D27}, // 'Ⴧ' => 'ⴧ' 3471: {0x1EA2, 0x1EA3}, // 'Ả' => 'ả' 3480: {0x1EA4, 0x1EA5}, // 'Ấ' => 'ấ' 3483: {0x2C7E, 0x023F}, // 'Ȿ' => 'ȿ' 3488: {0x2C7F, 0x0240}, // 'Ɀ' => 'ɀ' 3490: {0x1EA6, 0x1EA7}, // 'Ầ' => 'ầ' 3491: {0x10CD, 0x2D2D}, // 'Ⴭ' => 'ⴭ' 3493: {0x2C80, 0x2C81}, // 'Ⲁ' => 'ⲁ' 3499: {0x1EA8, 0x1EA9}, // 'Ẩ' => 'ẩ' 3502: {0x2C82, 0x2C83}, // 'Ⲃ' => 'ⲃ' 3508: {0x1EAA, 0x1EAB}, // 'Ẫ' => 'ẫ' 3511: {0x2C84, 0x2C85}, // 'Ⲅ' => 'ⲅ' 3517: {0x1EAC, 0x1EAD}, // 'Ậ' => 'ậ' 3520: {0x2C86, 0x2C87}, // 'Ⲇ' => 'ⲇ' 3527: {0x1EAE, 0x1EAF}, // 'Ắ' => 'ắ' 3530: {0x2C88, 0x2C89}, // 'Ⲉ' => 'ⲉ' 3536: {0x1EB0, 0x1EB1}, // 'Ằ' => 'ằ' 3539: {0x2C8A, 0x2C8B}, // 'Ⲋ' => 'ⲋ' 3545: {0x1EB2, 0x1EB3}, // 'Ẳ' => 'ẳ' 3548: {0x2C8C, 0x2C8D}, // 'Ⲍ' => 'ⲍ' 3554: {0x1EB4, 0x1EB5}, // 'Ẵ' => 'ẵ' 3557: {0x2C8E, 0x2C8F}, // 'Ⲏ' => 'ⲏ' 3564: {0x1EB6, 0x1EB7}, // 'Ặ' => 'ặ' 3566: {0x2C90, 0x2C91}, // 'Ⲑ' => 'ⲑ' 3573: {0x1EB8, 0x1EB9}, // 'Ẹ' => 'ẹ' 3576: {0x2C92, 0x2C93}, // 'Ⲓ' => 'ⲓ' 3582: {0x1EBA, 0x1EBB}, // 'Ẻ' => 'ẻ' 3585: {0x2C94, 0x2C95}, // 'Ⲕ' => 'ⲕ' 3591: {0x1EBC, 0x1EBD}, // 'Ẽ' => 'ẽ' 3594: {0x2C96, 0x2C97}, // 'Ⲗ' => 'ⲗ' 3601: {0x1EBE, 0x1EBF}, // 'Ế' => 'ế' 3603: {0x2C98, 0x2C99}, // 'Ⲙ' => 'ⲙ' 3610: {0x1EC0, 0x1EC1}, // 'Ề' => 'ề' 3613: {0x2C9A, 0x2C9B}, // 'Ⲛ' => 'ⲛ' 3619: {0x1EC2, 0x1EC3}, // 'Ể' => 'ể' 3622: {0x2C9C, 0x2C9D}, // 'Ⲝ' => 'ⲝ' 3628: {0x1EC4, 0x1EC5}, // 'Ễ' => 'ễ' 3631: {0x2C9E, 0x2C9F}, // 'Ⲟ' => 'ⲟ' 3638: {0x1EC6, 0x1EC7}, // 'Ệ' => 'ệ' 3640: {0x2CA0, 0x2CA1}, // 'Ⲡ' => 'ⲡ' 3647: {0x1EC8, 0x1EC9}, // 'Ỉ' => 'ỉ' 3650: {0x2CA2, 0x2CA3}, // 'Ⲣ' => 'ⲣ' 3656: {0x1ECA, 0x1ECB}, // 'Ị' => 'ị' 3659: {0x2CA4, 0x2CA5}, // 'Ⲥ' => 'ⲥ' 3665: {0x1ECC, 0x1ECD}, // 'Ọ' => 'ọ' 3668: {0x2CA6, 0x2CA7}, // 'Ⲧ' => 'ⲧ' 3675: {0x1ECE, 0x1ECF}, // 'Ỏ' => 'ỏ' 3677: {0x2CA8, 0x2CA9}, // 'Ⲩ' => 'ⲩ' 3684: {0x1ED0, 0x1ED1}, // 'Ố' => 'ố' 3687: {0x2CAA, 0x2CAB}, // 'Ⲫ' => 'ⲫ' 3693: {0x1ED2, 0x1ED3}, // 'Ồ' => 'ồ' 3696: {0x2CAC, 0x2CAD}, // 'Ⲭ' => 'ⲭ' 3702: {0x1ED4, 0x1ED5}, // 'Ổ' => 'ổ' 3705: {0x2CAE, 0x2CAF}, // 'Ⲯ' => 'ⲯ' 3711: {0x1ED6, 0x1ED7}, // 'Ỗ' => 'ỗ' 3714: {0x2CB0, 0x2CB1}, // 'Ⲱ' => 'ⲱ' 3721: {0x1ED8, 0x1ED9}, // 'Ộ' => 'ộ' 3724: {0x2CB2, 0x2CB3}, // 'Ⲳ' => 'ⲳ' 3730: {0x1EDA, 0x1EDB}, // 'Ớ' => 'ớ' 3733: {0x2CB4, 0x2CB5}, // 'Ⲵ' => 'ⲵ' 3739: {0x1EDC, 0x1EDD}, // 'Ờ' => 'ờ' 3742: {0x2CB6, 0x2CB7}, // 'Ⲷ' => 'ⲷ' 3748: {0x1EDE, 0x1EDF}, // 'Ở' => 'ở' 3751: {0x2CB8, 0x2CB9}, // 'Ⲹ' => 'ⲹ' 3758: {0x1EE0, 0x1EE1}, // 'Ỡ' => 'ỡ' 3761: {0x2CBA, 0x2CBB}, // 'Ⲻ' => 'ⲻ' 3767: {0x1EE2, 0x1EE3}, // 'Ợ' => 'ợ' 3770: {0x2CBC, 0x2CBD}, // 'Ⲽ' => 'ⲽ' 3776: {0x1EE4, 0x1EE5}, // 'Ụ' => 'ụ' 3779: {0x2CBE, 0x2CBF}, // 'Ⲿ' => 'ⲿ' 3785: {0x1EE6, 0x1EE7}, // 'Ủ' => 'ủ' 3788: {0x2CC0, 0x2CC1}, // 'Ⳁ' => 'ⳁ' 3795: {0x1EE8, 0x1EE9}, // 'Ứ' => 'ứ' 3798: {0x2CC2, 0x2CC3}, // 'Ⳃ' => 'ⳃ' 3804: {0x1EEA, 0x1EEB}, // 'Ừ' => 'ừ' 3807: {0x2CC4, 0x2CC5}, // 'Ⳅ' => 'ⳅ' 3813: {0x1EEC, 0x1EED}, // 'Ử' => 'ử' 3816: {0x2CC6, 0x2CC7}, // 'Ⳇ' => 'ⳇ' 3822: {0x1EEE, 0x1EEF}, // 'Ữ' => 'ữ' 3825: {0x2CC8, 0x2CC9}, // 'Ⳉ' => 'ⳉ' 3832: {0x1EF0, 0x1EF1}, // 'Ự' => 'ự' 3835: {0x2CCA, 0x2CCB}, // 'Ⳋ' => 'ⳋ' 3841: {0x1EF2, 0x1EF3}, // 'Ỳ' => 'ỳ' 3844: {0x2CCC, 0x2CCD}, // 'Ⳍ' => 'ⳍ' 3850: {0x1EF4, 0x1EF5}, // 'Ỵ' => 'ỵ' 3853: {0x2CCE, 0x2CCF}, // 'Ⳏ' => 'ⳏ' 3859: {0x1EF6, 0x1EF7}, // 'Ỷ' => 'ỷ' 3862: {0x2CD0, 0x2CD1}, // 'Ⳑ' => 'ⳑ' 3867: {0x0345, 0x03B9}, // 'ͅ' => 'ι' 3869: {0x1EF8, 0x1EF9}, // 'Ỹ' => 'ỹ' 3871: {0x2CD2, 0x2CD3}, // 'Ⳓ' => 'ⳓ' 3878: {0x1EFA, 0x1EFB}, // 'Ỻ' => 'ỻ' 3881: {0x2CD4, 0x2CD5}, // 'Ⳕ' => 'ⳕ' 3887: {0x1EFC, 0x1EFD}, // 'Ỽ' => 'ỽ' 3890: {0x2CD6, 0x2CD7}, // 'Ⳗ' => 'ⳗ' 3896: {0x1EFE, 0x1EFF}, // 'Ỿ' => 'ỿ' 3899: {0x2CD8, 0x2CD9}, // 'Ⳙ' => 'ⳙ' 3908: {0x2CDA, 0x2CDB}, // 'Ⳛ' => 'ⳛ' 3918: {0x2CDC, 0x2CDD}, // 'Ⳝ' => 'ⳝ' 3927: {0x2CDE, 0x2CDF}, // 'Ⳟ' => 'ⳟ' 3936: {0x2CE0, 0x2CE1}, // 'Ⳡ' => 'ⳡ' 3943: {0x1F08, 0x1F00}, // 'Ἀ' => 'ἀ' 3945: {0x2CE2, 0x2CE3}, // 'Ⳣ' => 'ⳣ' 3947: {0x1F09, 0x1F01}, // 'Ἁ' => 'ἁ' 3952: {0x1F0A, 0x1F02}, // 'Ἂ' => 'ἂ' 3956: {0x1F0B, 0x1F03}, // 'Ἃ' => 'ἃ' 3961: {0x1F0C, 0x1F04}, // 'Ἄ' => 'ἄ' 3966: {0x1F0D, 0x1F05}, // 'Ἅ' => 'ἅ' 3970: {0x1F0E, 0x1F06}, // 'Ἆ' => 'ἆ' 3975: {0x1F0F, 0x1F07}, // 'Ἇ' => 'ἇ' 3987: {0x2CEB, 0x2CEC}, // 'Ⳬ' => 'ⳬ' 3996: {0x2CED, 0x2CEE}, // 'Ⳮ' => 'ⳮ' 4016: {0x1F18, 0x1F10}, // 'Ἐ' => 'ἐ' 4019: {0x2CF2, 0x2CF3}, // 'Ⳳ' => 'ⳳ' 4021: {0x1F19, 0x1F11}, // 'Ἑ' => 'ἑ' 4026: {0x1F1A, 0x1F12}, // 'Ἒ' => 'ἒ' 4030: {0x1F1B, 0x1F13}, // 'Ἓ' => 'ἓ' 4035: {0x1F1C, 0x1F14}, // 'Ἔ' => 'ἔ' 4040: {0x1F1D, 0x1F15}, // 'Ἕ' => 'ἕ' 4066: {0x0370, 0x0371}, // 'Ͱ' => 'ͱ' 4075: {0x0372, 0x0373}, // 'Ͳ' => 'ͳ' 4090: {0x1F28, 0x1F20}, // 'Ἠ' => 'ἠ' 4094: {0x0376, 0x0377}, // 'Ͷ' => 'ͷ' 4095: {0x1F29, 0x1F21}, // 'Ἡ' => 'ἡ' 4100: {0x1F2A, 0x1F22}, // 'Ἢ' => 'ἢ' 4104: {0x1F2B, 0x1F23}, // 'Ἣ' => 'ἣ' 4109: {0x1F2C, 0x1F24}, // 'Ἤ' => 'ἤ' 4114: {0x1F2D, 0x1F25}, // 'Ἥ' => 'ἥ' 4118: {0x1F2E, 0x1F26}, // 'Ἦ' => 'ἦ' 4123: {0x1F2F, 0x1F27}, // 'Ἧ' => 'ἧ' 4136: {0x037F, 0x03F3}, // 'Ϳ' => 'ϳ' 4164: {0x1F38, 0x1F30}, // 'Ἰ' => 'ἰ' 4168: {0x0386, 0x03AC}, // 'Ά' => 'ά' 4169: {0x1F39, 0x1F31}, // 'Ἱ' => 'ἱ' 4174: {0x1F3A, 0x1F32}, // 'Ἲ' => 'ἲ' 4177: {0x0388, 0x03AD}, // 'Έ' => 'έ' 4178: {0x1F3B, 0x1F33}, // 'Ἳ' => 'ἳ' 4182: {0x0389, 0x03AE}, // 'Ή' => 'ή' 4183: {0x1F3C, 0x1F34}, // 'Ἴ' => 'ἴ' 4186: {0x038A, 0x03AF}, // 'Ί' => 'ί' 4187: {0x1F3D, 0x1F35}, // 'Ἵ' => 'ἵ' 4192: {0x1F3E, 0x1F36}, // 'Ἶ' => 'ἶ' 4196: {0x038C, 0x03CC}, // 'Ό' => 'ό' 4197: {0x1F3F, 0x1F37}, // 'Ἷ' => 'ἷ' 4205: {0x038E, 0x03CD}, // 'Ύ' => 'ύ' 4209: {0x038F, 0x03CE}, // 'Ώ' => 'ώ' 4219: {0x0391, 0x03B1}, // 'Α' => 'α' 4223: {0x0392, 0x03B2}, // 'Β' => 'β' 4228: {0x0393, 0x03B3}, // 'Γ' => 'γ' 4233: {0x0394, 0x03B4}, // 'Δ' => 'δ' 4237: {0x0395, 0x03B5}, // 'Ε' => 'ε' 4238: {0x1F48, 0x1F40}, // 'Ὀ' => 'ὀ' 4242: {0x0396, 0x03B6}, // 'Ζ' => 'ζ' 4243: {0x1F49, 0x1F41}, // 'Ὁ' => 'ὁ' 4246: {0x0397, 0x03B7}, // 'Η' => 'η' 4248: {0x1F4A, 0x1F42}, // 'Ὂ' => 'ὂ' 4251: {0x0398, 0x03B8}, // 'Θ' => 'θ' 4252: {0x1F4B, 0x1F43}, // 'Ὃ' => 'ὃ' 4256: {0x0399, 0x03B9}, // 'Ι' => 'ι' 4257: {0x1F4C, 0x1F44}, // 'Ὄ' => 'ὄ' 4260: {0x039A, 0x03BA}, // 'Κ' => 'κ' 4261: {0x1F4D, 0x1F45}, // 'Ὅ' => 'ὅ' 4265: {0x039B, 0x03BB}, // 'Λ' => 'λ' 4270: {0x039C, 0x03BC}, // 'Μ' => 'μ' 4274: {0x039D, 0x03BD}, // 'Ν' => 'ν' 4279: {0x039E, 0x03BE}, // 'Ξ' => 'ξ' 4283: {0x039F, 0x03BF}, // 'Ο' => 'ο' 4288: {0x03A0, 0x03C0}, // 'Π' => 'π' 4293: {0x03A1, 0x03C1}, // 'Ρ' => 'ρ' 4302: {0x03A3, 0x03C3}, // 'Σ' => 'σ' 4306: {0x03A4, 0x03C4}, // 'Τ' => 'τ' 4309: {0x118A0, 0x118C0}, // '𑢠' => '𑣀' 4311: {0x03A5, 0x03C5}, // 'Υ' => 'υ' 4313: {0x118A1, 0x118C1}, // '𑢡' => '𑣁' 4316: {0x03A6, 0x03C6}, // 'Φ' => 'φ' 4317: {0x1F59, 0x1F51}, // 'Ὑ' => 'ὑ' 4318: {0x118A2, 0x118C2}, // '𑢢' => '𑣂' 4320: {0x03A7, 0x03C7}, // 'Χ' => 'χ' 4322: {0x118A3, 0x118C3}, // '𑢣' => '𑣃' 4325: {0x03A8, 0x03C8}, // 'Ψ' => 'ψ' 4326: {0x1F5B, 0x1F53}, // 'Ὓ' => 'ὓ' 4327: {0x118A4, 0x118C4}, // '𑢤' => '𑣄' 4330: {0x03A9, 0x03C9}, // 'Ω' => 'ω' 4332: {0x118A5, 0x118C5}, // '𑢥' => '𑣅' 4334: {0x03AA, 0x03CA}, // 'Ϊ' => 'ϊ' 4335: {0x1F5D, 0x1F55}, // 'Ὕ' => 'ὕ' 4336: {0x118A6, 0x118C6}, // '𑢦' => '𑣆' 4339: {0x03AB, 0x03CB}, // 'Ϋ' => 'ϋ' 4341: {0x118A7, 0x118C7}, // '𑢧' => '𑣇' 4345: {0x1F5F, 0x1F57}, // 'Ὗ' => 'ὗ' 4346: {0x118A8, 0x118C8}, // '𑢨' => '𑣈' 4350: {0x118A9, 0x118C9}, // '𑢩' => '𑣉' 4355: {0x118AA, 0x118CA}, // '𑢪' => '𑣊' 4359: {0x118AB, 0x118CB}, // '𑢫' => '𑣋' 4364: {0x118AC, 0x118CC}, // '𑢬' => '𑣌' 4369: {0x118AD, 0x118CD}, // '𑢭' => '𑣍' 4373: {0x118AE, 0x118CE}, // '𑢮' => '𑣎' 4378: {0x118AF, 0x118CF}, // '𑢯' => '𑣏' 4383: {0x118B0, 0x118D0}, // '𑢰' => '𑣐' 4386: {0x1F68, 0x1F60}, // 'Ὠ' => 'ὠ' 4387: {0x118B1, 0x118D1}, // '𑢱' => '𑣑' 4391: {0x1F69, 0x1F61}, // 'Ὡ' => 'ὡ' 4392: {0x118B2, 0x118D2}, // '𑢲' => '𑣒' 4395: {0x1F6A, 0x1F62}, // 'Ὢ' => 'ὢ' 4396: {0x118B3, 0x118D3}, // '𑢳' => '𑣓' 4400: {0x1F6B, 0x1F63}, // 'Ὣ' => 'ὣ' 4401: {0x118B4, 0x118D4}, // '𑢴' => '𑣔' 4405: {0x1F6C, 0x1F64}, // 'Ὤ' => 'ὤ' 4406: {0x118B5, 0x118D5}, // '𑢵' => '𑣕' 4409: {0x1F6D, 0x1F65}, // 'Ὥ' => 'ὥ' 4410: {0x118B6, 0x118D6}, // '𑢶' => '𑣖' 4414: {0x1F6E, 0x1F66}, // 'Ὦ' => 'ὦ' 4415: {0x118B7, 0x118D7}, // '𑢷' => '𑣗' 4419: {0x1F6F, 0x1F67}, // 'Ὧ' => 'ὧ' 4420: {0x118B8, 0x118D8}, // '𑢸' => '𑣘' 4424: {0x118B9, 0x118D9}, // '𑢹' => '𑣙' 4429: {0x118BA, 0x118DA}, // '𑢺' => '𑣚' 4433: {0x118BB, 0x118DB}, // '𑢻' => '𑣛' 4438: {0x118BC, 0x118DC}, // '𑢼' => '𑣜' 4443: {0x118BD, 0x118DD}, // '𑢽' => '𑣝' 4445: {0x03C2, 0x03C3}, // 'ς' => 'σ' 4447: {0x118BE, 0x118DE}, // '𑢾' => '𑣞' 4452: {0x118BF, 0x118DF}, // '𑢿' => '𑣟' 4485: {0x10400, 0x10428}, // '𐐀' => '𐐨' 4489: {0x10401, 0x10429}, // '𐐁' => '𐐩' 4494: {0x10402, 0x1042A}, // '𐐂' => '𐐪' 4498: {0x10403, 0x1042B}, // '𐐃' => '𐐫' 4503: {0x10404, 0x1042C}, // '𐐄' => '𐐬' 4505: {0x03CF, 0x03D7}, // 'Ϗ' => 'ϗ' 4508: {0x10405, 0x1042D}, // '𐐅' => '𐐭' 4510: {0x03D0, 0x03B2}, // 'ϐ' => 'β' 4512: {0x10406, 0x1042E}, // '𐐆' => '𐐮' 4514: {0x03D1, 0x03B8}, // 'ϑ' => 'θ' 4517: {0x10407, 0x1042F}, // '𐐇' => '𐐯' 4521: {0x10408, 0x10430}, // '𐐈' => '𐐰' 4526: {0x10409, 0x10431}, // '𐐉' => '𐐱' 4531: {0x1040A, 0x10432}, // '𐐊' => '𐐲' 4533: {0x03D5, 0x03C6}, // 'ϕ' => 'φ' 4534: {0x1F88, 0x1F80}, // 'ᾈ' => 'ᾀ' 4535: {0x1040B, 0x10433}, // '𐐋' => '𐐳' 4538: {0x03D6, 0x03C0}, // 'ϖ' => 'π' 4539: {0x1F89, 0x1F81}, // 'ᾉ' => 'ᾁ' 4540: {0x1040C, 0x10434}, // '𐐌' => '𐐴' 4543: {0x1F8A, 0x1F82}, // 'ᾊ' => 'ᾂ' 4545: {0x1040D, 0x10435}, // '𐐍' => '𐐵' 4547: {0x03D8, 0x03D9}, // 'Ϙ' => 'ϙ' 4548: {0x1F8B, 0x1F83}, // 'ᾋ' => 'ᾃ' 4549: {0x1040E, 0x10436}, // '𐐎' => '𐐶' 4553: {0x1F8C, 0x1F84}, // 'ᾌ' => 'ᾄ' 4554: {0x1040F, 0x10437}, // '𐐏' => '𐐷' 4556: {0x03DA, 0x03DB}, // 'Ϛ' => 'ϛ' 4557: {0x1F8D, 0x1F85}, // 'ᾍ' => 'ᾅ' 4558: {0x10410, 0x10438}, // '𐐐' => '𐐸' 4562: {0x1F8E, 0x1F86}, // 'ᾎ' => 'ᾆ' 4563: {0x10411, 0x10439}, // '𐐑' => '𐐹' 4565: {0x03DC, 0x03DD}, // 'Ϝ' => 'ϝ' 4566: {0x1F8F, 0x1F87}, // 'ᾏ' => 'ᾇ' 4568: {0x10412, 0x1043A}, // '𐐒' => '𐐺' 4572: {0x10413, 0x1043B}, // '𐐓' => '𐐻' 4575: {0x03DE, 0x03DF}, // 'Ϟ' => 'ϟ' 4577: {0x10414, 0x1043C}, // '𐐔' => '𐐼' 4582: {0x10415, 0x1043D}, // '𐐕' => '𐐽' 4584: {0x03E0, 0x03E1}, // 'Ϡ' => 'ϡ' 4586: {0x10416, 0x1043E}, // '𐐖' => '𐐾' 4591: {0x10417, 0x1043F}, // '𐐗' => '𐐿' 4593: {0x03E2, 0x03E3}, // 'Ϣ' => 'ϣ' 4595: {0x10418, 0x10440}, // '𐐘' => '𐑀' 4600: {0x10419, 0x10441}, // '𐐙' => '𐑁' 4602: {0x03E4, 0x03E5}, // 'Ϥ' => 'ϥ' 4605: {0x1041A, 0x10442}, // '𐐚' => '𐑂' 4608: {0x1F98, 0x1F90}, // 'ᾘ' => 'ᾐ' 4609: {0x1041B, 0x10443}, // '𐐛' => '𐑃' 4611: {0x03E6, 0x03E7}, // 'Ϧ' => 'ϧ' 4613: {0x1F99, 0x1F91}, // 'ᾙ' => 'ᾑ' 4614: {0x1041C, 0x10444}, // '𐐜' => '𐑄' 4617: {0x1F9A, 0x1F92}, // 'ᾚ' => 'ᾒ' 4619: {0x1041D, 0x10445}, // '𐐝' => '𐑅' 4621: {0x03E8, 0x03E9}, // 'Ϩ' => 'ϩ' 4622: {0x1F9B, 0x1F93}, // 'ᾛ' => 'ᾓ' 4623: {0x1041E, 0x10446}, // '𐐞' => '𐑆' 4626: {0x1F9C, 0x1F94}, // 'ᾜ' => 'ᾔ' 4628: {0x1041F, 0x10447}, // '𐐟' => '𐑇' 4630: {0x03EA, 0x03EB}, // 'Ϫ' => 'ϫ' 4631: {0x1F9D, 0x1F95}, // 'ᾝ' => 'ᾕ' 4632: {0x10420, 0x10448}, // '𐐠' => '𐑈' 4636: {0x1F9E, 0x1F96}, // 'ᾞ' => 'ᾖ' 4637: {0x10421, 0x10449}, // '𐐡' => '𐑉' 4639: {0x03EC, 0x03ED}, // 'Ϭ' => 'ϭ' 4640: {0x1F9F, 0x1F97}, // 'ᾟ' => 'ᾗ' 4642: {0x10422, 0x1044A}, // '𐐢' => '𐑊' 4646: {0x10423, 0x1044B}, // '𐐣' => '𐑋' 4648: {0x03EE, 0x03EF}, // 'Ϯ' => 'ϯ' 4651: {0x10424, 0x1044C}, // '𐐤' => '𐑌' 4655: {0x10425, 0x1044D}, // '𐐥' => '𐑍' 4658: {0x03F0, 0x03BA}, // 'ϰ' => 'κ' 4660: {0x10426, 0x1044E}, // '𐐦' => '𐑎' 4662: {0x03F1, 0x03C1}, // 'ϱ' => 'ρ' 4665: {0x10427, 0x1044F}, // '𐐧' => '𐑏' 4676: {0x03F4, 0x03B8}, // 'ϴ' => 'θ' 4681: {0x03F5, 0x03B5}, // 'ϵ' => 'ε' 4682: {0x1FA8, 0x1FA0}, // 'ᾨ' => 'ᾠ' 4687: {0x1FA9, 0x1FA1}, // 'ᾩ' => 'ᾡ' 4690: {0x03F7, 0x03F8}, // 'Ϸ' => 'ϸ' 4691: {0x1FAA, 0x1FA2}, // 'ᾪ' => 'ᾢ' 4696: {0x1FAB, 0x1FA3}, // 'ᾫ' => 'ᾣ' 4699: {0x03F9, 0x03F2}, // 'Ϲ' => 'ϲ' 4700: {0x1FAC, 0x1FA4}, // 'ᾬ' => 'ᾤ' 4704: {0x03FA, 0x03FB}, // 'Ϻ' => 'ϻ' 4705: {0x1FAD, 0x1FA5}, // 'ᾭ' => 'ᾥ' 4710: {0x1FAE, 0x1FA6}, // 'ᾮ' => 'ᾦ' 4714: {0x1FAF, 0x1FA7}, // 'ᾯ' => 'ᾧ' 4718: {0x03FD, 0x037B}, // 'Ͻ' => 'ͻ' 4722: {0x03FE, 0x037C}, // 'Ͼ' => 'ͼ' 4727: {0x03FF, 0x037D}, // 'Ͽ' => 'ͽ' 4732: {0x0400, 0x0450}, // 'Ѐ' => 'ѐ' 4736: {0x0401, 0x0451}, // 'Ё' => 'ё' 4741: {0x0402, 0x0452}, // 'Ђ' => 'ђ' 4746: {0x0403, 0x0453}, // 'Ѓ' => 'ѓ' 4750: {0x0404, 0x0454}, // 'Є' => 'є' 4755: {0x0405, 0x0455}, // 'Ѕ' => 'ѕ' 4756: {0x1FB8, 0x1FB0}, // 'Ᾰ' => 'ᾰ' 4759: {0x0406, 0x0456}, // 'І' => 'і' 4761: {0x1FB9, 0x1FB1}, // 'Ᾱ' => 'ᾱ' 4764: {0x0407, 0x0457}, // 'Ї' => 'ї' 4765: {0x1FBA, 0x1F70}, // 'Ὰ' => 'ὰ' 4769: {0x0408, 0x0458}, // 'Ј' => 'ј' 4770: {0x1FBB, 0x1F71}, // 'Ά' => 'ά' 4773: {0x0409, 0x0459}, // 'Љ' => 'љ' 4774: {0x1FBC, 0x1FB3}, // 'ᾼ' => 'ᾳ' 4778: {0x040A, 0x045A}, // 'Њ' => 'њ' 4782: {0x040B, 0x045B}, // 'Ћ' => 'ћ' 4784: {0x1FBE, 0x03B9}, // 'ι' => 'ι' 4787: {0x040C, 0x045C}, // 'Ќ' => 'ќ' 4792: {0x040D, 0x045D}, // 'Ѝ' => 'ѝ' 4796: {0x040E, 0x045E}, // 'Ў' => 'ў' 4801: {0x040F, 0x045F}, // 'Џ' => 'џ' 4806: {0x0410, 0x0430}, // 'А' => 'а' 4810: {0x0411, 0x0431}, // 'Б' => 'б' 4815: {0x0412, 0x0432}, // 'В' => 'в' 4819: {0x0413, 0x0433}, // 'Г' => 'г' 4824: {0x0414, 0x0434}, // 'Д' => 'д' 4829: {0x0415, 0x0435}, // 'Е' => 'е' 4830: {0x1FC8, 0x1F72}, // 'Ὲ' => 'ὲ' 4833: {0x0416, 0x0436}, // 'Ж' => 'ж' 4834: {0x1FC9, 0x1F73}, // 'Έ' => 'έ' 4838: {0x0417, 0x0437}, // 'З' => 'з' 4839: {0x1FCA, 0x1F74}, // 'Ὴ' => 'ὴ' 4843: {0x0418, 0x0438}, // 'И' => 'и' 4844: {0x1FCB, 0x1F75}, // 'Ή' => 'ή' 4847: {0x0419, 0x0439}, // 'Й' => 'й' 4848: {0x1FCC, 0x1FC3}, // 'ῌ' => 'ῃ' 4852: {0x041A, 0x043A}, // 'К' => 'к' 4856: {0x041B, 0x043B}, // 'Л' => 'л' 4861: {0x041C, 0x043C}, // 'М' => 'м' 4866: {0x041D, 0x043D}, // 'Н' => 'н' 4870: {0x041E, 0x043E}, // 'О' => 'о' 4875: {0x041F, 0x043F}, // 'П' => 'п' 4880: {0x0420, 0x0440}, // 'Р' => 'р' 4884: {0x0421, 0x0441}, // 'С' => 'с' 4889: {0x0422, 0x0442}, // 'Т' => 'т' 4893: {0x0423, 0x0443}, // 'У' => 'у' 4898: {0x0424, 0x0444}, // 'Ф' => 'ф' 4903: {0x0425, 0x0445}, // 'Х' => 'х' 4904: {0x1FD8, 0x1FD0}, // 'Ῐ' => 'ῐ' 4907: {0x0426, 0x0446}, // 'Ц' => 'ц' 4908: {0x1FD9, 0x1FD1}, // 'Ῑ' => 'ῑ' 4912: {0x0427, 0x0447}, // 'Ч' => 'ч' 4913: {0x1FDA, 0x1F76}, // 'Ὶ' => 'ὶ' 4916: {0x0428, 0x0448}, // 'Ш' => 'ш' 4918: {0x1FDB, 0x1F77}, // 'Ί' => 'ί' 4921: {0x0429, 0x0449}, // 'Щ' => 'щ' 4926: {0x042A, 0x044A}, // 'Ъ' => 'ъ' 4930: {0x042B, 0x044B}, // 'Ы' => 'ы' 4935: {0x042C, 0x044C}, // 'Ь' => 'ь' 4940: {0x042D, 0x044D}, // 'Э' => 'э' 4944: {0x042E, 0x044E}, // 'Ю' => 'ю' 4949: {0x042F, 0x044F}, // 'Я' => 'я' 4978: {0x1FE8, 0x1FE0}, // 'Ῠ' => 'ῠ' 4982: {0x1FE9, 0x1FE1}, // 'Ῡ' => 'ῡ' 4987: {0x1FEA, 0x1F7A}, // 'Ὺ' => 'ὺ' 4992: {0x1FEB, 0x1F7B}, // 'Ύ' => 'ύ' 4996: {0x1FEC, 0x1FE5}, // 'Ῥ' => 'ῥ' 5052: {0x1FF8, 0x1F78}, // 'Ὸ' => 'ὸ' 5056: {0x1FF9, 0x1F79}, // 'Ό' => 'ό' 5061: {0x1FFA, 0x1F7C}, // 'Ὼ' => 'ὼ' 5063: {0x1E900, 0x1E922}, // '𞤀' => '𞤢' 5066: {0x1FFB, 0x1F7D}, // 'Ώ' => 'ώ' 5068: {0x1E901, 0x1E923}, // '𞤁' => '𞤣' 5070: {0x1FFC, 0x1FF3}, // 'ῼ' => 'ῳ' 5073: {0x1E902, 0x1E924}, // '𞤂' => '𞤤' 5077: {0x1E903, 0x1E925}, // '𞤃' => '𞤥' 5082: {0x1E904, 0x1E926}, // '𞤄' => '𞤦' 5087: {0x1E905, 0x1E927}, // '𞤅' => '𞤧' 5091: {0x1E906, 0x1E928}, // '𞤆' => '𞤨' 5096: {0x1E907, 0x1E929}, // '𞤇' => '𞤩' 5100: {0x1E908, 0x1E92A}, // '𞤈' => '𞤪' 5105: {0x1E909, 0x1E92B}, // '𞤉' => '𞤫' 5110: {0x1E90A, 0x1E92C}, // '𞤊' => '𞤬' 5114: {0x1E90B, 0x1E92D}, // '𞤋' => '𞤭' 5119: {0x1E90C, 0x1E92E}, // '𞤌' => '𞤮' 5124: {0x1E90D, 0x1E92F}, // '𞤍' => '𞤯' 5128: {0x1E90E, 0x1E930}, // '𞤎' => '𞤰' 5133: {0x1E90F, 0x1E931}, // '𞤏' => '𞤱' 5137: {0x1E910, 0x1E932}, // '𞤐' => '𞤲' 5142: {0x1E911, 0x1E933}, // '𞤑' => '𞤳' 5147: {0x1E912, 0x1E934}, // '𞤒' => '𞤴' 5151: {0x1E913, 0x1E935}, // '𞤓' => '𞤵' 5156: {0x1E914, 0x1E936}, // '𞤔' => '𞤶' 5160: {0x1E915, 0x1E937}, // '𞤕' => '𞤷' 5165: {0x1E916, 0x1E938}, // '𞤖' => '𞤸' 5170: {0x1E917, 0x1E939}, // '𞤗' => '𞤹' 5174: {0x1E918, 0x1E93A}, // '𞤘' => '𞤺' 5175: {0x0460, 0x0461}, // 'Ѡ' => 'ѡ' 5179: {0x1E919, 0x1E93B}, // '𞤙' => '𞤻' 5184: {0x1E91A, 0x1E93C}, // '𞤚' => '𞤼' 5185: {0x0462, 0x0463}, // 'Ѣ' => 'ѣ' 5188: {0x1E91B, 0x1E93D}, // '𞤛' => '𞤽' 5193: {0x1E91C, 0x1E93E}, // '𞤜' => '𞤾' 5194: {0x0464, 0x0465}, // 'Ѥ' => 'ѥ' 5197: {0x1E91D, 0x1E93F}, // '𞤝' => '𞤿' 5202: {0x1E91E, 0x1E940}, // '𞤞' => '𞥀' 5203: {0x0466, 0x0467}, // 'Ѧ' => 'ѧ' 5207: {0x1E91F, 0x1E941}, // '𞤟' => '𞥁' 5211: {0x1E920, 0x1E942}, // '𞤠' => '𞥂' 5212: {0x0468, 0x0469}, // 'Ѩ' => 'ѩ' 5216: {0x1E921, 0x1E943}, // '𞤡' => '𞥃' 5221: {0x046A, 0x046B}, // 'Ѫ' => 'ѫ' 5231: {0x046C, 0x046D}, // 'Ѭ' => 'ѭ' 5240: {0x046E, 0x046F}, // 'Ѯ' => 'ѯ' 5249: {0x0470, 0x0471}, // 'Ѱ' => 'ѱ' 5258: {0x0472, 0x0473}, // 'Ѳ' => 'ѳ' 5268: {0x0474, 0x0475}, // 'Ѵ' => 'ѵ' 5277: {0x0476, 0x0477}, // 'Ѷ' => 'ѷ' 5286: {0x0478, 0x0479}, // 'Ѹ' => 'ѹ' 5295: {0x047A, 0x047B}, // 'Ѻ' => 'ѻ' 5298: {0x104B0, 0x104D8}, // '𐒰' => '𐓘' 5302: {0x104B1, 0x104D9}, // '𐒱' => '𐓙' 5305: {0x047C, 0x047D}, // 'Ѽ' => 'ѽ' 5307: {0x104B2, 0x104DA}, // '𐒲' => '𐓚' 5312: {0x104B3, 0x104DB}, // '𐒳' => '𐓛' 5314: {0x047E, 0x047F}, // 'Ѿ' => 'ѿ' 5316: {0x104B4, 0x104DC}, // '𐒴' => '𐓜' 5321: {0x104B5, 0x104DD}, // '𐒵' => '𐓝' 5323: {0x0480, 0x0481}, // 'Ҁ' => 'ҁ' 5326: {0x104B6, 0x104DE}, // '𐒶' => '𐓞' 5330: {0x104B7, 0x104DF}, // '𐒷' => '𐓟' 5335: {0x104B8, 0x104E0}, // '𐒸' => '𐓠' 5339: {0x104B9, 0x104E1}, // '𐒹' => '𐓡' 5344: {0x104BA, 0x104E2}, // '𐒺' => '𐓢' 5349: {0x104BB, 0x104E3}, // '𐒻' => '𐓣' 5353: {0x104BC, 0x104E4}, // '𐒼' => '𐓤' 5358: {0x104BD, 0x104E5}, // '𐒽' => '𐓥' 5363: {0x104BE, 0x104E6}, // '𐒾' => '𐓦' 5367: {0x104BF, 0x104E7}, // '𐒿' => '𐓧' 5369: {0x048A, 0x048B}, // 'Ҋ' => 'ҋ' 5372: {0x104C0, 0x104E8}, // '𐓀' => '𐓨' 5376: {0x104C1, 0x104E9}, // '𐓁' => '𐓩' 5379: {0x048C, 0x048D}, // 'Ҍ' => 'ҍ' 5381: {0x104C2, 0x104EA}, // '𐓂' => '𐓪' 5386: {0x104C3, 0x104EB}, // '𐓃' => '𐓫' 5388: {0x048E, 0x048F}, // 'Ҏ' => 'ҏ' 5390: {0x104C4, 0x104EC}, // '𐓄' => '𐓬' 5395: {0x104C5, 0x104ED}, // '𐓅' => '𐓭' 5397: {0x0490, 0x0491}, // 'Ґ' => 'ґ' 5400: {0x104C6, 0x104EE}, // '𐓆' => '𐓮' 5404: {0x104C7, 0x104EF}, // '𐓇' => '𐓯' 5406: {0x0492, 0x0493}, // 'Ғ' => 'ғ' 5409: {0x104C8, 0x104F0}, // '𐓈' => '𐓰' 5413: {0x104C9, 0x104F1}, // '𐓉' => '𐓱' 5416: {0x0494, 0x0495}, // 'Ҕ' => 'ҕ' 5418: {0x104CA, 0x104F2}, // '𐓊' => '𐓲' 5423: {0x104CB, 0x104F3}, // '𐓋' => '𐓳' 5425: {0x0496, 0x0497}, // 'Җ' => 'җ' 5427: {0x104CC, 0x104F4}, // '𐓌' => '𐓴' 5432: {0x104CD, 0x104F5}, // '𐓍' => '𐓵' 5434: {0x0498, 0x0499}, // 'Ҙ' => 'ҙ' 5436: {0x104CE, 0x104F6}, // '𐓎' => '𐓶' 5441: {0x104CF, 0x104F7}, // '𐓏' => '𐓷' 5443: {0x049A, 0x049B}, // 'Қ' => 'қ' 5446: {0x104D0, 0x104F8}, // '𐓐' => '𐓸' 5450: {0x104D1, 0x104F9}, // '𐓑' => '𐓹' 5453: {0x049C, 0x049D}, // 'Ҝ' => 'ҝ' 5455: {0x104D2, 0x104FA}, // '𐓒' => '𐓺' 5460: {0x104D3, 0x104FB}, // '𐓓' => '𐓻' 5462: {0x049E, 0x049F}, // 'Ҟ' => 'ҟ' 5471: {0x04A0, 0x04A1}, // 'Ҡ' => 'ҡ' 5480: {0x04A2, 0x04A3}, // 'Ң' => 'ң' 5490: {0x04A4, 0x04A5}, // 'Ҥ' => 'ҥ' 5499: {0x04A6, 0x04A7}, // 'Ҧ' => 'ҧ' 5508: {0x04A8, 0x04A9}, // 'Ҩ' => 'ҩ' 5517: {0x04AA, 0x04AB}, // 'Ҫ' => 'ҫ' 5526: {0x04AC, 0x04AD}, // 'Ҭ' => 'ҭ' 5536: {0x04AE, 0x04AF}, // 'Ү' => 'ү' 5545: {0x04B0, 0x04B1}, // 'Ұ' => 'ұ' 5554: {0x04B2, 0x04B3}, // 'Ҳ' => 'ҳ' 5563: {0x04B4, 0x04B5}, // 'Ҵ' => 'ҵ' 5573: {0x04B6, 0x04B7}, // 'Ҷ' => 'ҷ' 5582: {0x04B8, 0x04B9}, // 'Ҹ' => 'ҹ' 5591: {0x04BA, 0x04BB}, // 'Һ' => 'һ' 5600: {0x04BC, 0x04BD}, // 'Ҽ' => 'ҽ' 5610: {0x04BE, 0x04BF}, // 'Ҿ' => 'ҿ' 5619: {0x04C0, 0x04CF}, // 'Ӏ' => 'ӏ' 5624: {0x04C1, 0x04C2}, // 'Ӂ' => 'ӂ' 5633: {0x04C3, 0x04C4}, // 'Ӄ' => 'ӄ' 5642: {0x04C5, 0x04C6}, // 'Ӆ' => 'ӆ' 5651: {0x04C7, 0x04C8}, // 'Ӈ' => 'ӈ' 5661: {0x04C9, 0x04CA}, // 'Ӊ' => 'ӊ' 5670: {0x04CB, 0x04CC}, // 'Ӌ' => 'ӌ' 5679: {0x04CD, 0x04CE}, // 'Ӎ' => 'ӎ' 5693: {0x04D0, 0x04D1}, // 'Ӑ' => 'ӑ' 5702: {0x04D2, 0x04D3}, // 'Ӓ' => 'ӓ' 5711: {0x04D4, 0x04D5}, // 'Ӕ' => 'ӕ' 5721: {0x04D6, 0x04D7}, // 'Ӗ' => 'ӗ' 5730: {0x04D8, 0x04D9}, // 'Ә' => 'ә' 5739: {0x04DA, 0x04DB}, // 'Ӛ' => 'ӛ' 5748: {0x04DC, 0x04DD}, // 'Ӝ' => 'ӝ' 5758: {0x04DE, 0x04DF}, // 'Ӟ' => 'ӟ' 5767: {0x04E0, 0x04E1}, // 'Ӡ' => 'ӡ' 5776: {0x04E2, 0x04E3}, // 'Ӣ' => 'ӣ' 5785: {0x04E4, 0x04E5}, // 'Ӥ' => 'ӥ' 5795: {0x04E6, 0x04E7}, // 'Ӧ' => 'ӧ' 5804: {0x04E8, 0x04E9}, // 'Ө' => 'ө' 5813: {0x04EA, 0x04EB}, // 'Ӫ' => 'ӫ' 5822: {0x04EC, 0x04ED}, // 'Ӭ' => 'ӭ' 5831: {0x04EE, 0x04EF}, // 'Ӯ' => 'ӯ' 5841: {0x04F0, 0x04F1}, // 'Ӱ' => 'ӱ' 5850: {0x04F2, 0x04F3}, // 'Ӳ' => 'ӳ' 5859: {0x04F4, 0x04F5}, // 'Ӵ' => 'ӵ' 5868: {0x04F6, 0x04F7}, // 'Ӷ' => 'ӷ' 5878: {0x04F8, 0x04F9}, // 'Ӹ' => 'ӹ' 5887: {0x04FA, 0x04FB}, // 'Ӻ' => 'ӻ' 5896: {0x04FC, 0x04FD}, // 'Ӽ' => 'ӽ' 5905: {0x04FE, 0x04FF}, // 'Ӿ' => 'ӿ' 5915: {0x0500, 0x0501}, // 'Ԁ' => 'ԁ' 5924: {0x0502, 0x0503}, // 'Ԃ' => 'ԃ' 5933: {0x0504, 0x0505}, // 'Ԅ' => 'ԅ' 5942: {0x0506, 0x0507}, // 'Ԇ' => 'ԇ' 5952: {0x0508, 0x0509}, // 'Ԉ' => 'ԉ' 5961: {0x050A, 0x050B}, // 'Ԋ' => 'ԋ' 5970: {0x050C, 0x050D}, // 'Ԍ' => 'ԍ' 5979: {0x050E, 0x050F}, // 'Ԏ' => 'ԏ' 5989: {0x0510, 0x0511}, // 'Ԑ' => 'ԑ' 5998: {0x0512, 0x0513}, // 'Ԓ' => 'ԓ' 6007: {0x0514, 0x0515}, // 'Ԕ' => 'ԕ' 6016: {0x0516, 0x0517}, // 'Ԗ' => 'ԗ' 6026: {0x0518, 0x0519}, // 'Ԙ' => 'ԙ' 6035: {0x051A, 0x051B}, // 'Ԛ' => 'ԛ' 6044: {0x051C, 0x051D}, // 'Ԝ' => 'ԝ' 6053: {0x051E, 0x051F}, // 'Ԟ' => 'ԟ' 6063: {0x0520, 0x0521}, // 'Ԡ' => 'ԡ' 6072: {0x0522, 0x0523}, // 'Ԣ' => 'ԣ' 6081: {0x0524, 0x0525}, // 'Ԥ' => 'ԥ' 6090: {0x0526, 0x0527}, // 'Ԧ' => 'ԧ' 6100: {0x0528, 0x0529}, // 'Ԩ' => 'ԩ' 6109: {0x052A, 0x052B}, // 'Ԫ' => 'ԫ' 6118: {0x052C, 0x052D}, // 'Ԭ' => 'ԭ' 6127: {0x052E, 0x052F}, // 'Ԯ' => 'ԯ' 6141: {0x0531, 0x0561}, // 'Ա' => 'ա' 6146: {0x0532, 0x0562}, // 'Բ' => 'բ' 6150: {0x0533, 0x0563}, // 'Գ' => 'գ' 6155: {0x0534, 0x0564}, // 'Դ' => 'դ' 6160: {0x0535, 0x0565}, // 'Ե' => 'ե' 6164: {0x0536, 0x0566}, // 'Զ' => 'զ' 6169: {0x0537, 0x0567}, // 'Է' => 'է' 6173: {0x0538, 0x0568}, // 'Ը' => 'ը' 6178: {0x0539, 0x0569}, // 'Թ' => 'թ' 6183: {0x053A, 0x056A}, // 'Ժ' => 'ժ' 6187: {0x053B, 0x056B}, // 'Ի' => 'ի' 6192: {0x053C, 0x056C}, // 'Լ' => 'լ' 6197: {0x053D, 0x056D}, // 'Խ' => 'խ' 6201: {0x053E, 0x056E}, // 'Ծ' => 'ծ' 6206: {0x053F, 0x056F}, // 'Կ' => 'կ' 6208: {0xAB70, 0x13A0}, // 'ꭰ' => 'Ꭰ' 6210: {0x0540, 0x0570}, // 'Հ' => 'հ' 6213: {0xAB71, 0x13A1}, // 'ꭱ' => 'Ꭱ' 6215: {0x0541, 0x0571}, // 'Ձ' => 'ձ' 6217: {0xAB72, 0x13A2}, // 'ꭲ' => 'Ꭲ' 6220: {0x0542, 0x0572}, // 'Ղ' => 'ղ' 6222: {0xAB73, 0x13A3}, // 'ꭳ' => 'Ꭳ' 6224: {0x0543, 0x0573}, // 'Ճ' => 'ճ' 6226: {0xAB74, 0x13A4}, // 'ꭴ' => 'Ꭴ' 6229: {0x0544, 0x0574}, // 'Մ' => 'մ' 6231: {0xAB75, 0x13A5}, // 'ꭵ' => 'Ꭵ' 6234: {0x0545, 0x0575}, // 'Յ' => 'յ' 6236: {0xAB76, 0x13A6}, // 'ꭶ' => 'Ꭶ' 6238: {0x0546, 0x0576}, // 'Ն' => 'ն' 6240: {0xAB77, 0x13A7}, // 'ꭷ' => 'Ꭷ' 6243: {0x0547, 0x0577}, // 'Շ' => 'շ' 6245: {0xAB78, 0x13A8}, // 'ꭸ' => 'Ꭸ' 6247: {0x0548, 0x0578}, // 'Ո' => 'ո' 6250: {0xAB79, 0x13A9}, // 'ꭹ' => 'Ꭹ' 6252: {0x0549, 0x0579}, // 'Չ' => 'չ' 6254: {0xAB7A, 0x13AA}, // 'ꭺ' => 'Ꭺ' 6257: {0x054A, 0x057A}, // 'Պ' => 'պ' 6259: {0xAB7B, 0x13AB}, // 'ꭻ' => 'Ꭻ' 6261: {0x054B, 0x057B}, // 'Ջ' => 'ջ' 6263: {0xAB7C, 0x13AC}, // 'ꭼ' => 'Ꭼ' 6266: {0x054C, 0x057C}, // 'Ռ' => 'ռ' 6268: {0xAB7D, 0x13AD}, // 'ꭽ' => 'Ꭽ' 6271: {0x054D, 0x057D}, // 'Ս' => 'ս' 6273: {0xAB7E, 0x13AE}, // 'ꭾ' => 'Ꭾ' 6275: {0x054E, 0x057E}, // 'Վ' => 'վ' 6277: {0xAB7F, 0x13AF}, // 'ꭿ' => 'Ꭿ' 6280: {0x054F, 0x057F}, // 'Տ' => 'տ' 6282: {0xAB80, 0x13B0}, // 'ꮀ' => 'Ꮀ' 6284: {0x0550, 0x0580}, // 'Ր' => 'ր' 6287: {0xAB81, 0x13B1}, // 'ꮁ' => 'Ꮁ' 6289: {0x0551, 0x0581}, // 'Ց' => 'ց' 6291: {0xAB82, 0x13B2}, // 'ꮂ' => 'Ꮂ' 6294: {0x0552, 0x0582}, // 'Ւ' => 'ւ' 6296: {0xAB83, 0x13B3}, // 'ꮃ' => 'Ꮃ' 6298: {0x0553, 0x0583}, // 'Փ' => 'փ' 6300: {0xAB84, 0x13B4}, // 'ꮄ' => 'Ꮄ' 6303: {0x0554, 0x0584}, // 'Ք' => 'ք' 6305: {0xAB85, 0x13B5}, // 'ꮅ' => 'Ꮅ' 6307: {0x0555, 0x0585}, // 'Օ' => 'օ' 6310: {0xAB86, 0x13B6}, // 'ꮆ' => 'Ꮆ' 6312: {0x0556, 0x0586}, // 'Ֆ' => 'ֆ' 6314: {0xAB87, 0x13B7}, // 'ꮇ' => 'Ꮇ' 6319: {0xAB88, 0x13B8}, // 'ꮈ' => 'Ꮈ' 6324: {0xAB89, 0x13B9}, // 'ꮉ' => 'Ꮉ' 6328: {0xAB8A, 0x13BA}, // 'ꮊ' => 'Ꮊ' 6333: {0xAB8B, 0x13BB}, // 'ꮋ' => 'Ꮋ' 6337: {0xAB8C, 0x13BC}, // 'ꮌ' => 'Ꮌ' 6342: {0xAB8D, 0x13BD}, // 'ꮍ' => 'Ꮍ' 6347: {0xAB8E, 0x13BE}, // 'ꮎ' => 'Ꮎ' 6348: {0x10C80, 0x10CC0}, // '𐲀' => '𐳀' 6351: {0xAB8F, 0x13BF}, // 'ꮏ' => 'Ꮏ' 6353: {0x10C81, 0x10CC1}, // '𐲁' => '𐳁' 6356: {0xAB90, 0x13C0}, // 'ꮐ' => 'Ꮐ' 6358: {0x10C82, 0x10CC2}, // '𐲂' => '𐳂' 6361: {0xAB91, 0x13C1}, // 'ꮑ' => 'Ꮑ' 6362: {0x10C83, 0x10CC3}, // '𐲃' => '𐳃' 6365: {0xAB92, 0x13C2}, // 'ꮒ' => 'Ꮒ' 6367: {0x10C84, 0x10CC4}, // '𐲄' => '𐳄' 6370: {0xAB93, 0x13C3}, // 'ꮓ' => 'Ꮓ' 6371: {0x10C85, 0x10CC5}, // '𐲅' => '𐳅' 6374: {0xAB94, 0x13C4}, // 'ꮔ' => 'Ꮔ' 6376: {0x10C86, 0x10CC6}, // '𐲆' => '𐳆' 6379: {0xAB95, 0x13C5}, // 'ꮕ' => 'Ꮕ' 6381: {0x10C87, 0x10CC7}, // '𐲇' => '𐳇' 6384: {0xAB96, 0x13C6}, // 'ꮖ' => 'Ꮖ' 6385: {0x10C88, 0x10CC8}, // '𐲈' => '𐳈' 6388: {0xAB97, 0x13C7}, // 'ꮗ' => 'Ꮗ' 6390: {0x10C89, 0x10CC9}, // '𐲉' => '𐳉' 6393: {0xAB98, 0x13C8}, // 'ꮘ' => 'Ꮘ' 6395: {0x10C8A, 0x10CCA}, // '𐲊' => '𐳊' 6397: {0xAB99, 0x13C9}, // 'ꮙ' => 'Ꮙ' 6399: {0x10C8B, 0x10CCB}, // '𐲋' => '𐳋' 6402: {0xAB9A, 0x13CA}, // 'ꮚ' => 'Ꮚ' 6404: {0x10C8C, 0x10CCC}, // '𐲌' => '𐳌' 6407: {0xAB9B, 0x13CB}, // 'ꮛ' => 'Ꮛ' 6408: {0x10C8D, 0x10CCD}, // '𐲍' => '𐳍' 6411: {0xAB9C, 0x13CC}, // 'ꮜ' => 'Ꮜ' 6413: {0x10C8E, 0x10CCE}, // '𐲎' => '𐳎' 6416: {0xAB9D, 0x13CD}, // 'ꮝ' => 'Ꮝ' 6418: {0x10C8F, 0x10CCF}, // '𐲏' => '𐳏' 6421: {0xAB9E, 0x13CE}, // 'ꮞ' => 'Ꮞ' 6422: {0x10C90, 0x10CD0}, // '𐲐' => '𐳐' 6425: {0xAB9F, 0x13CF}, // 'ꮟ' => 'Ꮟ' 6427: {0x10C91, 0x10CD1}, // '𐲑' => '𐳑' 6430: {0xABA0, 0x13D0}, // 'ꮠ' => 'Ꮠ' 6431: {0x10C92, 0x10CD2}, // '𐲒' => '𐳒' 6434: {0xABA1, 0x13D1}, // 'ꮡ' => 'Ꮡ' 6436: {0x10C93, 0x10CD3}, // '𐲓' => '𐳓' 6439: {0xABA2, 0x13D2}, // 'ꮢ' => 'Ꮢ' 6441: {0x10C94, 0x10CD4}, // '𐲔' => '𐳔' 6444: {0xABA3, 0x13D3}, // 'ꮣ' => 'Ꮣ' 6445: {0x10C95, 0x10CD5}, // '𐲕' => '𐳕' 6447: {0x2126, 0x03C9}, // 'Ω' => 'ω' 6448: {0xABA4, 0x13D4}, // 'ꮤ' => 'Ꮤ' 6450: {0x10C96, 0x10CD6}, // '𐲖' => '𐳖' 6453: {0xABA5, 0x13D5}, // 'ꮥ' => 'Ꮥ' 6455: {0x10C97, 0x10CD7}, // '𐲗' => '𐳗' 6458: {0xABA6, 0x13D6}, // 'ꮦ' => 'Ꮦ' 6459: {0x10C98, 0x10CD8}, // '𐲘' => '𐳘' 6462: {0xABA7, 0x13D7}, // 'ꮧ' => 'Ꮧ' 6464: {0x10C99, 0x10CD9}, // '𐲙' => '𐳙' 6466: {0x212A, 0x006B}, // 'K' => 'k' 6467: {0xABA8, 0x13D8}, // 'ꮨ' => 'Ꮨ' 6468: {0x10C9A, 0x10CDA}, // '𐲚' => '𐳚' 6470: {0x212B, 0x00E5}, // 'Å' => 'å' 6471: {0xABA9, 0x13D9}, // 'ꮩ' => 'Ꮩ' 6473: {0x10C9B, 0x10CDB}, // '𐲛' => '𐳛' 6476: {0xABAA, 0x13DA}, // 'ꮪ' => 'Ꮪ' 6478: {0x10C9C, 0x10CDC}, // '𐲜' => '𐳜' 6481: {0xABAB, 0x13DB}, // 'ꮫ' => 'Ꮫ' 6482: {0x10C9D, 0x10CDD}, // '𐲝' => '𐳝' 6485: {0xABAC, 0x13DC}, // 'ꮬ' => 'Ꮬ' 6487: {0x10C9E, 0x10CDE}, // '𐲞' => '𐳞' 6490: {0xABAD, 0x13DD}, // 'ꮭ' => 'Ꮭ' 6492: {0x10C9F, 0x10CDF}, // '𐲟' => '𐳟' 6495: {0xABAE, 0x13DE}, // 'ꮮ' => 'Ꮮ' 6496: {0x10CA0, 0x10CE0}, // '𐲠' => '𐳠' 6499: {0xABAF, 0x13DF}, // 'ꮯ' => 'Ꮯ' 6501: {0x10CA1, 0x10CE1}, // '𐲡' => '𐳡' 6503: {0x2132, 0x214E}, // 'Ⅎ' => 'ⅎ' 6504: {0xABB0, 0x13E0}, // 'ꮰ' => 'Ꮰ' 6505: {0x10CA2, 0x10CE2}, // '𐲢' => '𐳢' 6508: {0xABB1, 0x13E1}, // 'ꮱ' => 'Ꮱ' 6510: {0x10CA3, 0x10CE3}, // '𐲣' => '𐳣' 6513: {0xABB2, 0x13E2}, // 'ꮲ' => 'Ꮲ' 6515: {0x10CA4, 0x10CE4}, // '𐲤' => '𐳤' 6518: {0xABB3, 0x13E3}, // 'ꮳ' => 'Ꮳ' 6519: {0x10CA5, 0x10CE5}, // '𐲥' => '𐳥' 6522: {0xABB4, 0x13E4}, // 'ꮴ' => 'Ꮴ' 6524: {0x10CA6, 0x10CE6}, // '𐲦' => '𐳦' 6527: {0xABB5, 0x13E5}, // 'ꮵ' => 'Ꮵ' 6529: {0x10CA7, 0x10CE7}, // '𐲧' => '𐳧' 6531: {0xABB6, 0x13E6}, // 'ꮶ' => 'Ꮶ' 6533: {0x10CA8, 0x10CE8}, // '𐲨' => '𐳨' 6536: {0xABB7, 0x13E7}, // 'ꮷ' => 'Ꮷ' 6538: {0x10CA9, 0x10CE9}, // '𐲩' => '𐳩' 6541: {0xABB8, 0x13E8}, // 'ꮸ' => 'Ꮸ' 6542: {0x10CAA, 0x10CEA}, // '𐲪' => '𐳪' 6545: {0xABB9, 0x13E9}, // 'ꮹ' => 'Ꮹ' 6547: {0x10CAB, 0x10CEB}, // '𐲫' => '𐳫' 6550: {0xABBA, 0x13EA}, // 'ꮺ' => 'Ꮺ' 6552: {0x10CAC, 0x10CEC}, // '𐲬' => '𐳬' 6555: {0xABBB, 0x13EB}, // 'ꮻ' => 'Ꮻ' 6556: {0x10CAD, 0x10CED}, // '𐲭' => '𐳭' 6559: {0xABBC, 0x13EC}, // 'ꮼ' => 'Ꮼ' 6561: {0x10CAE, 0x10CEE}, // '𐲮' => '𐳮' 6564: {0xABBD, 0x13ED}, // 'ꮽ' => 'Ꮽ' 6566: {0x10CAF, 0x10CEF}, // '𐲯' => '𐳯' 6568: {0xABBE, 0x13EE}, // 'ꮾ' => 'Ꮾ' 6570: {0x10CB0, 0x10CF0}, // '𐲰' => '𐳰' 6573: {0xABBF, 0x13EF}, // 'ꮿ' => 'Ꮿ' 6575: {0x10CB1, 0x10CF1}, // '𐲱' => '𐳱' 6579: {0x10CB2, 0x10CF2}, // '𐲲' => '𐳲' 6715: {0x2160, 0x2170}, // 'Ⅰ' => 'ⅰ' 6720: {0x2161, 0x2171}, // 'Ⅱ' => 'ⅱ' 6725: {0x2162, 0x2172}, // 'Ⅲ' => 'ⅲ' 6729: {0x2163, 0x2173}, // 'Ⅳ' => 'ⅳ' 6734: {0x2164, 0x2174}, // 'Ⅴ' => 'ⅴ' 6738: {0x2165, 0x2175}, // 'Ⅵ' => 'ⅵ' 6743: {0x2166, 0x2176}, // 'Ⅶ' => 'ⅶ' 6748: {0x2167, 0x2177}, // 'Ⅷ' => 'ⅷ' 6752: {0x2168, 0x2178}, // 'Ⅸ' => 'ⅸ' 6757: {0x2169, 0x2179}, // 'Ⅹ' => 'ⅹ' 6761: {0x216A, 0x217A}, // 'Ⅺ' => 'ⅺ' 6766: {0x216B, 0x217B}, // 'Ⅻ' => 'ⅻ' 6771: {0x216C, 0x217C}, // 'Ⅼ' => 'ⅼ' 6775: {0x216D, 0x217D}, // 'Ⅽ' => 'ⅽ' 6780: {0x216E, 0x217E}, // 'Ⅾ' => 'ⅾ' 6785: {0x216F, 0x217F}, // 'Ⅿ' => 'ⅿ' 6877: {0x2183, 0x2184}, // 'Ↄ' => 'ↄ' 6914: {0xFF21, 0xFF41}, // 'A' => 'a' 6918: {0xFF22, 0xFF42}, // 'B' => 'b' 6923: {0xFF23, 0xFF43}, // 'C' => 'c' 6928: {0xFF24, 0xFF44}, // 'D' => 'd' 6932: {0xFF25, 0xFF45}, // 'E' => 'e' 6937: {0xFF26, 0xFF46}, // 'F' => 'f' 6942: {0xFF27, 0xFF47}, // 'G' => 'g' 6946: {0xFF28, 0xFF48}, // 'H' => 'h' 6951: {0xFF29, 0xFF49}, // 'I' => 'i' 6955: {0xFF2A, 0xFF4A}, // 'J' => 'j' 6960: {0xFF2B, 0xFF4B}, // 'K' => 'k' 6965: {0xFF2C, 0xFF4C}, // 'L' => 'l' 6969: {0xFF2D, 0xFF4D}, // 'M' => 'm' 6974: {0xFF2E, 0xFF4E}, // 'N' => 'n' 6979: {0xFF2F, 0xFF4F}, // 'O' => 'o' 6983: {0xFF30, 0xFF50}, // 'P' => 'p' 6988: {0xFF31, 0xFF51}, // 'Q' => 'q' 6992: {0xFF32, 0xFF52}, // 'R' => 'r' 6997: {0xFF33, 0xFF53}, // 'S' => 's' 7002: {0xFF34, 0xFF54}, // 'T' => 't' 7006: {0xFF35, 0xFF55}, // 'U' => 'u' 7011: {0xFF36, 0xFF56}, // 'V' => 'v' 7016: {0xFF37, 0xFF57}, // 'W' => 'w' 7020: {0xFF38, 0xFF58}, // 'X' => 'x' 7025: {0xFF39, 0xFF59}, // 'Y' => 'y' 7029: {0xFF3A, 0xFF5A}, // 'Z' => 'z' 7239: {0x13F8, 0x13F0}, // 'ᏸ' => 'Ᏸ' 7244: {0x13F9, 0x13F1}, // 'ᏹ' => 'Ᏹ' 7248: {0x13FA, 0x13F2}, // 'ᏺ' => 'Ᏺ' 7253: {0x13FB, 0x13F3}, // 'ᏻ' => 'Ᏻ' 7258: {0x13FC, 0x13F4}, // 'ᏼ' => 'Ᏼ' 7262: {0x13FD, 0x13F5}, // 'ᏽ' => 'Ᏽ' 7302: {0x16E40, 0x16E60}, // '𖹀' => '𖹠' 7307: {0x16E41, 0x16E61}, // '𖹁' => '𖹡' 7311: {0x16E42, 0x16E62}, // '𖹂' => '𖹢' 7316: {0x16E43, 0x16E63}, // '𖹃' => '𖹣' 7320: {0x16E44, 0x16E64}, // '𖹄' => '𖹤' 7325: {0x16E45, 0x16E65}, // '𖹅' => '𖹥' 7330: {0x16E46, 0x16E66}, // '𖹆' => '𖹦' 7334: {0x16E47, 0x16E67}, // '𖹇' => '𖹧' 7339: {0x16E48, 0x16E68}, // '𖹈' => '𖹨' 7344: {0x16E49, 0x16E69}, // '𖹉' => '𖹩' 7348: {0x16E4A, 0x16E6A}, // '𖹊' => '𖹪' 7353: {0x16E4B, 0x16E6B}, // '𖹋' => '𖹫' 7357: {0x16E4C, 0x16E6C}, // '𖹌' => '𖹬' 7362: {0x16E4D, 0x16E6D}, // '𖹍' => '𖹭' 7367: {0x16E4E, 0x16E6E}, // '𖹎' => '𖹮' 7371: {0x16E4F, 0x16E6F}, // '𖹏' => '𖹯' 7376: {0x16E50, 0x16E70}, // '𖹐' => '𖹰' 7381: {0x16E51, 0x16E71}, // '𖹑' => '𖹱' 7385: {0x16E52, 0x16E72}, // '𖹒' => '𖹲' 7390: {0x16E53, 0x16E73}, // '𖹓' => '𖹳' 7394: {0x16E54, 0x16E74}, // '𖹔' => '𖹴' 7399: {0x16E55, 0x16E75}, // '𖹕' => '𖹵' 7404: {0x16E56, 0x16E76}, // '𖹖' => '𖹶' 7408: {0x16E57, 0x16E77}, // '𖹗' => '𖹷' 7413: {0x16E58, 0x16E78}, // '𖹘' => '𖹸' 7417: {0x16E59, 0x16E79}, // '𖹙' => '𖹹' 7422: {0x16E5A, 0x16E7A}, // '𖹚' => '𖹺' 7427: {0x16E5B, 0x16E7B}, // '𖹛' => '𖹻' 7431: {0x16E5C, 0x16E7C}, // '𖹜' => '𖹼' 7436: {0x16E5D, 0x16E7D}, // '𖹝' => '𖹽' 7441: {0x16E5E, 0x16E7E}, // '𖹞' => '𖹾' 7445: {0x16E5F, 0x16E7F}, // '𖹟' => '𖹿' } const _UpperLowerSeed = 0x6AE7FD95 const _UpperLowerShift = 19 // _UpperLower stores upper/lower case pairs of Unicode code points. // This takes up more space than the stdlib's "unicode" package, but // is roughly ~4x faster. var _UpperLower = [8192][2]uint32{ 7648: {0x039C, 0x00B5}, // 'Μ' => 'µ' 7615: {0x00C0, 0x00E0}, // 'À' => 'à' 7612: {0x00C1, 0x00E1}, // 'Á' => 'á' 7609: {0x00C2, 0x00E2}, // 'Â' => 'â' 7606: {0x00C3, 0x00E3}, // 'Ã' => 'ã' 7603: {0x00C4, 0x00E4}, // 'Ä' => 'ä' 7600: {0x00C5, 0x00E5}, // 'Å' => 'å' 7597: {0x00C6, 0x00E6}, // 'Æ' => 'æ' 7594: {0x00C7, 0x00E7}, // 'Ç' => 'ç' 7591: {0x00C8, 0x00E8}, // 'È' => 'è' 7588: {0x00C9, 0x00E9}, // 'É' => 'é' 7585: {0x00CA, 0x00EA}, // 'Ê' => 'ê' 7582: {0x00CB, 0x00EB}, // 'Ë' => 'ë' 7579: {0x00CC, 0x00EC}, // 'Ì' => 'ì' 7576: {0x00CD, 0x00ED}, // 'Í' => 'í' 7573: {0x00CE, 0x00EE}, // 'Î' => 'î' 7570: {0x00CF, 0x00EF}, // 'Ï' => 'ï' 7567: {0x00D0, 0x00F0}, // 'Ð' => 'ð' 7564: {0x00D1, 0x00F1}, // 'Ñ' => 'ñ' 7561: {0x00D2, 0x00F2}, // 'Ò' => 'ò' 7558: {0x00D3, 0x00F3}, // 'Ó' => 'ó' 7555: {0x00D4, 0x00F4}, // 'Ô' => 'ô' 7552: {0x00D5, 0x00F5}, // 'Õ' => 'õ' 7549: {0x00D6, 0x00F6}, // 'Ö' => 'ö' 7543: {0x00D8, 0x00F8}, // 'Ø' => 'ø' 7540: {0x00D9, 0x00F9}, // 'Ù' => 'ù' 7537: {0x00DA, 0x00FA}, // 'Ú' => 'ú' 7534: {0x00DB, 0x00FB}, // 'Û' => 'û' 7531: {0x00DC, 0x00FC}, // 'Ü' => 'ü' 7528: {0x00DD, 0x00FD}, // 'Ý' => 'ý' 7525: {0x00DE, 0x00FE}, // 'Þ' => 'þ' 7519: {0x00C0, 0x00E0}, // 'À' => 'à' 7516: {0x00C1, 0x00E1}, // 'Á' => 'á' 7513: {0x00C2, 0x00E2}, // 'Â' => 'â' 7510: {0x00C3, 0x00E3}, // 'Ã' => 'ã' 7507: {0x00C4, 0x00E4}, // 'Ä' => 'ä' 7504: {0x00C5, 0x00E5}, // 'Å' => 'å' 7501: {0x00C6, 0x00E6}, // 'Æ' => 'æ' 7498: {0x00C7, 0x00E7}, // 'Ç' => 'ç' 7495: {0x00C8, 0x00E8}, // 'È' => 'è' 7492: {0x00C9, 0x00E9}, // 'É' => 'é' 7489: {0x00CA, 0x00EA}, // 'Ê' => 'ê' 7486: {0x00CB, 0x00EB}, // 'Ë' => 'ë' 7483: {0x00CC, 0x00EC}, // 'Ì' => 'ì' 7480: {0x00CD, 0x00ED}, // 'Í' => 'í' 7477: {0x00CE, 0x00EE}, // 'Î' => 'î' 7474: {0x00CF, 0x00EF}, // 'Ï' => 'ï' 7471: {0x00D0, 0x00F0}, // 'Ð' => 'ð' 7468: {0x00D1, 0x00F1}, // 'Ñ' => 'ñ' 7465: {0x00D2, 0x00F2}, // 'Ò' => 'ò' 7462: {0x00D3, 0x00F3}, // 'Ó' => 'ó' 7459: {0x00D4, 0x00F4}, // 'Ô' => 'ô' 7456: {0x00D5, 0x00F5}, // 'Õ' => 'õ' 7453: {0x00D6, 0x00F6}, // 'Ö' => 'ö' 7447: {0x00D8, 0x00F8}, // 'Ø' => 'ø' 7444: {0x00D9, 0x00F9}, // 'Ù' => 'ù' 7441: {0x00DA, 0x00FA}, // 'Ú' => 'ú' 7438: {0x00DB, 0x00FB}, // 'Û' => 'û' 7435: {0x00DC, 0x00FC}, // 'Ü' => 'ü' 7432: {0x00DD, 0x00FD}, // 'Ý' => 'ý' 7429: {0x00DE, 0x00FE}, // 'Þ' => 'þ' 7426: {0x0178, 0x00FF}, // 'Ÿ' => 'ÿ' 7423: {0x0100, 0x0101}, // 'Ā' => 'ā' 7420: {0x0100, 0x0101}, // 'Ā' => 'ā' 7417: {0x0102, 0x0103}, // 'Ă' => 'ă' 7414: {0x0102, 0x0103}, // 'Ă' => 'ă' 7411: {0x0104, 0x0105}, // 'Ą' => 'ą' 7408: {0x0104, 0x0105}, // 'Ą' => 'ą' 7405: {0x0106, 0x0107}, // 'Ć' => 'ć' 7402: {0x0106, 0x0107}, // 'Ć' => 'ć' 7399: {0x0108, 0x0109}, // 'Ĉ' => 'ĉ' 7396: {0x0108, 0x0109}, // 'Ĉ' => 'ĉ' 7393: {0x010A, 0x010B}, // 'Ċ' => 'ċ' 7390: {0x010A, 0x010B}, // 'Ċ' => 'ċ' 7387: {0x010C, 0x010D}, // 'Č' => 'č' 7384: {0x010C, 0x010D}, // 'Č' => 'č' 7381: {0x010E, 0x010F}, // 'Ď' => 'ď' 7378: {0x010E, 0x010F}, // 'Ď' => 'ď' 7375: {0x0110, 0x0111}, // 'Đ' => 'đ' 7372: {0x0110, 0x0111}, // 'Đ' => 'đ' 7369: {0x0112, 0x0113}, // 'Ē' => 'ē' 7366: {0x0112, 0x0113}, // 'Ē' => 'ē' 7363: {0x0114, 0x0115}, // 'Ĕ' => 'ĕ' 7360: {0x0114, 0x0115}, // 'Ĕ' => 'ĕ' 7357: {0x0116, 0x0117}, // 'Ė' => 'ė' 7354: {0x0116, 0x0117}, // 'Ė' => 'ė' 7351: {0x0118, 0x0119}, // 'Ę' => 'ę' 7348: {0x0118, 0x0119}, // 'Ę' => 'ę' 7345: {0x011A, 0x011B}, // 'Ě' => 'ě' 7342: {0x011A, 0x011B}, // 'Ě' => 'ě' 7339: {0x011C, 0x011D}, // 'Ĝ' => 'ĝ' 7336: {0x011C, 0x011D}, // 'Ĝ' => 'ĝ' 7333: {0x011E, 0x011F}, // 'Ğ' => 'ğ' 7330: {0x011E, 0x011F}, // 'Ğ' => 'ğ' 7327: {0x0120, 0x0121}, // 'Ġ' => 'ġ' 7324: {0x0120, 0x0121}, // 'Ġ' => 'ġ' 7321: {0x0122, 0x0123}, // 'Ģ' => 'ģ' 7318: {0x0122, 0x0123}, // 'Ģ' => 'ģ' 7315: {0x0124, 0x0125}, // 'Ĥ' => 'ĥ' 7312: {0x0124, 0x0125}, // 'Ĥ' => 'ĥ' 7309: {0x0126, 0x0127}, // 'Ħ' => 'ħ' 7306: {0x0126, 0x0127}, // 'Ħ' => 'ħ' 7303: {0x0128, 0x0129}, // 'Ĩ' => 'ĩ' 7300: {0x0128, 0x0129}, // 'Ĩ' => 'ĩ' 7297: {0x012A, 0x012B}, // 'Ī' => 'ī' 7294: {0x012A, 0x012B}, // 'Ī' => 'ī' 7291: {0x012C, 0x012D}, // 'Ĭ' => 'ĭ' 7288: {0x012C, 0x012D}, // 'Ĭ' => 'ĭ' 7285: {0x012E, 0x012F}, // 'Į' => 'į' 7282: {0x012E, 0x012F}, // 'Į' => 'į' 7279: {0x0130, 0x0069}, // 'İ' => 'i' 7276: {0x0049, 0x0131}, // 'I' => 'ı' 7273: {0x0132, 0x0133}, // 'IJ' => 'ij' 7270: {0x0132, 0x0133}, // 'IJ' => 'ij' 7267: {0x0134, 0x0135}, // 'Ĵ' => 'ĵ' 7264: {0x0134, 0x0135}, // 'Ĵ' => 'ĵ' 7261: {0x0136, 0x0137}, // 'Ķ' => 'ķ' 7258: {0x0136, 0x0137}, // 'Ķ' => 'ķ' 7252: {0x0139, 0x013A}, // 'Ĺ' => 'ĺ' 7249: {0x0139, 0x013A}, // 'Ĺ' => 'ĺ' 7246: {0x013B, 0x013C}, // 'Ļ' => 'ļ' 7243: {0x013B, 0x013C}, // 'Ļ' => 'ļ' 7240: {0x013D, 0x013E}, // 'Ľ' => 'ľ' 7237: {0x013D, 0x013E}, // 'Ľ' => 'ľ' 7234: {0x013F, 0x0140}, // 'Ŀ' => 'ŀ' 7231: {0x013F, 0x0140}, // 'Ŀ' => 'ŀ' 7228: {0x0141, 0x0142}, // 'Ł' => 'ł' 7225: {0x0141, 0x0142}, // 'Ł' => 'ł' 7222: {0x0143, 0x0144}, // 'Ń' => 'ń' 7219: {0x0143, 0x0144}, // 'Ń' => 'ń' 7216: {0x0145, 0x0146}, // 'Ņ' => 'ņ' 7213: {0x0145, 0x0146}, // 'Ņ' => 'ņ' 7210: {0x0147, 0x0148}, // 'Ň' => 'ň' 7207: {0x0147, 0x0148}, // 'Ň' => 'ň' 7201: {0x014A, 0x014B}, // 'Ŋ' => 'ŋ' 7198: {0x014A, 0x014B}, // 'Ŋ' => 'ŋ' 7195: {0x014C, 0x014D}, // 'Ō' => 'ō' 7192: {0x014C, 0x014D}, // 'Ō' => 'ō' 7189: {0x014E, 0x014F}, // 'Ŏ' => 'ŏ' 7186: {0x014E, 0x014F}, // 'Ŏ' => 'ŏ' 7183: {0x0150, 0x0151}, // 'Ő' => 'ő' 7180: {0x0150, 0x0151}, // 'Ő' => 'ő' 7177: {0x0152, 0x0153}, // 'Œ' => 'œ' 7174: {0x0152, 0x0153}, // 'Œ' => 'œ' 7171: {0x0154, 0x0155}, // 'Ŕ' => 'ŕ' 7168: {0x0154, 0x0155}, // 'Ŕ' => 'ŕ' 7165: {0x0156, 0x0157}, // 'Ŗ' => 'ŗ' 7162: {0x0156, 0x0157}, // 'Ŗ' => 'ŗ' 7159: {0x0158, 0x0159}, // 'Ř' => 'ř' 7156: {0x0158, 0x0159}, // 'Ř' => 'ř' 7153: {0x015A, 0x015B}, // 'Ś' => 'ś' 7150: {0x015A, 0x015B}, // 'Ś' => 'ś' 7147: {0x015C, 0x015D}, // 'Ŝ' => 'ŝ' 7144: {0x015C, 0x015D}, // 'Ŝ' => 'ŝ' 7141: {0x015E, 0x015F}, // 'Ş' => 'ş' 7138: {0x015E, 0x015F}, // 'Ş' => 'ş' 7135: {0x0160, 0x0161}, // 'Š' => 'š' 7132: {0x0160, 0x0161}, // 'Š' => 'š' 7129: {0x0162, 0x0163}, // 'Ţ' => 'ţ' 7126: {0x0162, 0x0163}, // 'Ţ' => 'ţ' 7123: {0x0164, 0x0165}, // 'Ť' => 'ť' 7120: {0x0164, 0x0165}, // 'Ť' => 'ť' 7117: {0x0166, 0x0167}, // 'Ŧ' => 'ŧ' 7114: {0x0166, 0x0167}, // 'Ŧ' => 'ŧ' 7111: {0x0168, 0x0169}, // 'Ũ' => 'ũ' 7108: {0x0168, 0x0169}, // 'Ũ' => 'ũ' 7105: {0x016A, 0x016B}, // 'Ū' => 'ū' 7102: {0x016A, 0x016B}, // 'Ū' => 'ū' 7099: {0x016C, 0x016D}, // 'Ŭ' => 'ŭ' 7096: {0x016C, 0x016D}, // 'Ŭ' => 'ŭ' 7093: {0x016E, 0x016F}, // 'Ů' => 'ů' 7090: {0x016E, 0x016F}, // 'Ů' => 'ů' 7087: {0x0170, 0x0171}, // 'Ű' => 'ű' 7084: {0x0170, 0x0171}, // 'Ű' => 'ű' 7081: {0x0172, 0x0173}, // 'Ų' => 'ų' 7078: {0x0172, 0x0173}, // 'Ų' => 'ų' 7075: {0x0174, 0x0175}, // 'Ŵ' => 'ŵ' 7072: {0x0174, 0x0175}, // 'Ŵ' => 'ŵ' 7069: {0x0176, 0x0177}, // 'Ŷ' => 'ŷ' 7066: {0x0176, 0x0177}, // 'Ŷ' => 'ŷ' 7063: {0x0178, 0x00FF}, // 'Ÿ' => 'ÿ' 7060: {0x0179, 0x017A}, // 'Ź' => 'ź' 7057: {0x0179, 0x017A}, // 'Ź' => 'ź' 7054: {0x017B, 0x017C}, // 'Ż' => 'ż' 7051: {0x017B, 0x017C}, // 'Ż' => 'ż' 7048: {0x017D, 0x017E}, // 'Ž' => 'ž' 7045: {0x017D, 0x017E}, // 'Ž' => 'ž' 7042: {0x0053, 0x017F}, // 'S' => 'ſ' 7039: {0x0243, 0x0180}, // 'Ƀ' => 'ƀ' 7036: {0x0181, 0x0253}, // 'Ɓ' => 'ɓ' 7033: {0x0182, 0x0183}, // 'Ƃ' => 'ƃ' 7030: {0x0182, 0x0183}, // 'Ƃ' => 'ƃ' 7027: {0x0184, 0x0185}, // 'Ƅ' => 'ƅ' 7024: {0x0184, 0x0185}, // 'Ƅ' => 'ƅ' 7021: {0x0186, 0x0254}, // 'Ɔ' => 'ɔ' 7018: {0x0187, 0x0188}, // 'Ƈ' => 'ƈ' 7015: {0x0187, 0x0188}, // 'Ƈ' => 'ƈ' 7012: {0x0189, 0x0256}, // 'Ɖ' => 'ɖ' 7009: {0x018A, 0x0257}, // 'Ɗ' => 'ɗ' 7006: {0x018B, 0x018C}, // 'Ƌ' => 'ƌ' 7003: {0x018B, 0x018C}, // 'Ƌ' => 'ƌ' 6997: {0x018E, 0x01DD}, // 'Ǝ' => 'ǝ' 6994: {0x018F, 0x0259}, // 'Ə' => 'ə' 6991: {0x0190, 0x025B}, // 'Ɛ' => 'ɛ' 6988: {0x0191, 0x0192}, // 'Ƒ' => 'ƒ' 6985: {0x0191, 0x0192}, // 'Ƒ' => 'ƒ' 6982: {0x0193, 0x0260}, // 'Ɠ' => 'ɠ' 6979: {0x0194, 0x0263}, // 'Ɣ' => 'ɣ' 6976: {0x01F6, 0x0195}, // 'Ƕ' => 'ƕ' 6973: {0x0196, 0x0269}, // 'Ɩ' => 'ɩ' 6970: {0x0197, 0x0268}, // 'Ɨ' => 'ɨ' 6967: {0x0198, 0x0199}, // 'Ƙ' => 'ƙ' 6964: {0x0198, 0x0199}, // 'Ƙ' => 'ƙ' 6961: {0x023D, 0x019A}, // 'Ƚ' => 'ƚ' 6955: {0x019C, 0x026F}, // 'Ɯ' => 'ɯ' 6952: {0x019D, 0x0272}, // 'Ɲ' => 'ɲ' 6949: {0x0220, 0x019E}, // 'Ƞ' => 'ƞ' 6946: {0x019F, 0x0275}, // 'Ɵ' => 'ɵ' 6943: {0x01A0, 0x01A1}, // 'Ơ' => 'ơ' 6940: {0x01A0, 0x01A1}, // 'Ơ' => 'ơ' 6937: {0x01A2, 0x01A3}, // 'Ƣ' => 'ƣ' 6934: {0x01A2, 0x01A3}, // 'Ƣ' => 'ƣ' 6931: {0x01A4, 0x01A5}, // 'Ƥ' => 'ƥ' 6928: {0x01A4, 0x01A5}, // 'Ƥ' => 'ƥ' 6925: {0x01A6, 0x0280}, // 'Ʀ' => 'ʀ' 6922: {0x01A7, 0x01A8}, // 'Ƨ' => 'ƨ' 6919: {0x01A7, 0x01A8}, // 'Ƨ' => 'ƨ' 6916: {0x01A9, 0x0283}, // 'Ʃ' => 'ʃ' 6907: {0x01AC, 0x01AD}, // 'Ƭ' => 'ƭ' 6904: {0x01AC, 0x01AD}, // 'Ƭ' => 'ƭ' 6901: {0x01AE, 0x0288}, // 'Ʈ' => 'ʈ' 6898: {0x01AF, 0x01B0}, // 'Ư' => 'ư' 6895: {0x01AF, 0x01B0}, // 'Ư' => 'ư' 6892: {0x01B1, 0x028A}, // 'Ʊ' => 'ʊ' 6889: {0x01B2, 0x028B}, // 'Ʋ' => 'ʋ' 6886: {0x01B3, 0x01B4}, // 'Ƴ' => 'ƴ' 6883: {0x01B3, 0x01B4}, // 'Ƴ' => 'ƴ' 6880: {0x01B5, 0x01B6}, // 'Ƶ' => 'ƶ' 6877: {0x01B5, 0x01B6}, // 'Ƶ' => 'ƶ' 6874: {0x01B7, 0x0292}, // 'Ʒ' => 'ʒ' 6871: {0x01B8, 0x01B9}, // 'Ƹ' => 'ƹ' 6868: {0x01B8, 0x01B9}, // 'Ƹ' => 'ƹ' 6859: {0x01BC, 0x01BD}, // 'Ƽ' => 'ƽ' 6856: {0x01BC, 0x01BD}, // 'Ƽ' => 'ƽ' 6850: {0x01F7, 0x01BF}, // 'Ƿ' => 'ƿ' 6835: {0x01C4, 0x01C6}, // 'DŽ' => 'dž' 6829: {0x01C4, 0x01C6}, // 'DŽ' => 'dž' 6826: {0x01C7, 0x01C9}, // 'LJ' => 'lj' 6820: {0x01C7, 0x01C9}, // 'LJ' => 'lj' 6817: {0x01CA, 0x01CC}, // 'NJ' => 'nj' 6811: {0x01CA, 0x01CC}, // 'NJ' => 'nj' 6808: {0x01CD, 0x01CE}, // 'Ǎ' => 'ǎ' 6805: {0x01CD, 0x01CE}, // 'Ǎ' => 'ǎ' 6802: {0x01CF, 0x01D0}, // 'Ǐ' => 'ǐ' 6799: {0x01CF, 0x01D0}, // 'Ǐ' => 'ǐ' 6796: {0x01D1, 0x01D2}, // 'Ǒ' => 'ǒ' 6793: {0x01D1, 0x01D2}, // 'Ǒ' => 'ǒ' 6790: {0x01D3, 0x01D4}, // 'Ǔ' => 'ǔ' 6787: {0x01D3, 0x01D4}, // 'Ǔ' => 'ǔ' 6784: {0x01D5, 0x01D6}, // 'Ǖ' => 'ǖ' 6781: {0x01D5, 0x01D6}, // 'Ǖ' => 'ǖ' 6778: {0x01D7, 0x01D8}, // 'Ǘ' => 'ǘ' 6775: {0x01D7, 0x01D8}, // 'Ǘ' => 'ǘ' 6772: {0x01D9, 0x01DA}, // 'Ǚ' => 'ǚ' 6769: {0x01D9, 0x01DA}, // 'Ǚ' => 'ǚ' 6766: {0x01DB, 0x01DC}, // 'Ǜ' => 'ǜ' 6763: {0x01DB, 0x01DC}, // 'Ǜ' => 'ǜ' 6760: {0x018E, 0x01DD}, // 'Ǝ' => 'ǝ' 6757: {0x01DE, 0x01DF}, // 'Ǟ' => 'ǟ' 6754: {0x01DE, 0x01DF}, // 'Ǟ' => 'ǟ' 6751: {0x01E0, 0x01E1}, // 'Ǡ' => 'ǡ' 6748: {0x01E0, 0x01E1}, // 'Ǡ' => 'ǡ' 6745: {0x01E2, 0x01E3}, // 'Ǣ' => 'ǣ' 6742: {0x01E2, 0x01E3}, // 'Ǣ' => 'ǣ' 6739: {0x01E4, 0x01E5}, // 'Ǥ' => 'ǥ' 6736: {0x01E4, 0x01E5}, // 'Ǥ' => 'ǥ' 6733: {0x01E6, 0x01E7}, // 'Ǧ' => 'ǧ' 6730: {0x01E6, 0x01E7}, // 'Ǧ' => 'ǧ' 6727: {0x01E8, 0x01E9}, // 'Ǩ' => 'ǩ' 6724: {0x01E8, 0x01E9}, // 'Ǩ' => 'ǩ' 6721: {0x01EA, 0x01EB}, // 'Ǫ' => 'ǫ' 6718: {0x01EA, 0x01EB}, // 'Ǫ' => 'ǫ' 6715: {0x01EC, 0x01ED}, // 'Ǭ' => 'ǭ' 6712: {0x01EC, 0x01ED}, // 'Ǭ' => 'ǭ' 6709: {0x01EE, 0x01EF}, // 'Ǯ' => 'ǯ' 6706: {0x01EE, 0x01EF}, // 'Ǯ' => 'ǯ' 6700: {0x01F1, 0x01F3}, // 'DZ' => 'dz' 6694: {0x01F1, 0x01F3}, // 'DZ' => 'dz' 6691: {0x01F4, 0x01F5}, // 'Ǵ' => 'ǵ' 6688: {0x01F4, 0x01F5}, // 'Ǵ' => 'ǵ' 6685: {0x01F6, 0x0195}, // 'Ƕ' => 'ƕ' 6682: {0x01F7, 0x01BF}, // 'Ƿ' => 'ƿ' 6679: {0x01F8, 0x01F9}, // 'Ǹ' => 'ǹ' 6676: {0x01F8, 0x01F9}, // 'Ǹ' => 'ǹ' 6673: {0x01FA, 0x01FB}, // 'Ǻ' => 'ǻ' 6670: {0x01FA, 0x01FB}, // 'Ǻ' => 'ǻ' 6667: {0x01FC, 0x01FD}, // 'Ǽ' => 'ǽ' 6664: {0x01FC, 0x01FD}, // 'Ǽ' => 'ǽ' 6661: {0x01FE, 0x01FF}, // 'Ǿ' => 'ǿ' 6658: {0x01FE, 0x01FF}, // 'Ǿ' => 'ǿ' 6655: {0x0200, 0x0201}, // 'Ȁ' => 'ȁ' 6652: {0x0200, 0x0201}, // 'Ȁ' => 'ȁ' 6649: {0x0202, 0x0203}, // 'Ȃ' => 'ȃ' 6646: {0x0202, 0x0203}, // 'Ȃ' => 'ȃ' 6643: {0x0204, 0x0205}, // 'Ȅ' => 'ȅ' 6640: {0x0204, 0x0205}, // 'Ȅ' => 'ȅ' 6637: {0x0206, 0x0207}, // 'Ȇ' => 'ȇ' 6634: {0x0206, 0x0207}, // 'Ȇ' => 'ȇ' 6631: {0x0208, 0x0209}, // 'Ȉ' => 'ȉ' 6628: {0x0208, 0x0209}, // 'Ȉ' => 'ȉ' 6625: {0x020A, 0x020B}, // 'Ȋ' => 'ȋ' 6622: {0x020A, 0x020B}, // 'Ȋ' => 'ȋ' 6619: {0x020C, 0x020D}, // 'Ȍ' => 'ȍ' 6616: {0x020C, 0x020D}, // 'Ȍ' => 'ȍ' 6613: {0x020E, 0x020F}, // 'Ȏ' => 'ȏ' 6610: {0x020E, 0x020F}, // 'Ȏ' => 'ȏ' 6607: {0x0210, 0x0211}, // 'Ȑ' => 'ȑ' 6604: {0x0210, 0x0211}, // 'Ȑ' => 'ȑ' 6601: {0x0212, 0x0213}, // 'Ȓ' => 'ȓ' 6598: {0x0212, 0x0213}, // 'Ȓ' => 'ȓ' 6595: {0x0214, 0x0215}, // 'Ȕ' => 'ȕ' 6592: {0x0214, 0x0215}, // 'Ȕ' => 'ȕ' 6589: {0x0216, 0x0217}, // 'Ȗ' => 'ȗ' 6586: {0x0216, 0x0217}, // 'Ȗ' => 'ȗ' 6583: {0x0218, 0x0219}, // 'Ș' => 'ș' 6580: {0x0218, 0x0219}, // 'Ș' => 'ș' 6577: {0x021A, 0x021B}, // 'Ț' => 'ț' 6574: {0x021A, 0x021B}, // 'Ț' => 'ț' 6571: {0x021C, 0x021D}, // 'Ȝ' => 'ȝ' 6568: {0x021C, 0x021D}, // 'Ȝ' => 'ȝ' 6565: {0x021E, 0x021F}, // 'Ȟ' => 'ȟ' 6562: {0x021E, 0x021F}, // 'Ȟ' => 'ȟ' 6559: {0x0220, 0x019E}, // 'Ƞ' => 'ƞ' 6553: {0x0222, 0x0223}, // 'Ȣ' => 'ȣ' 6550: {0x0222, 0x0223}, // 'Ȣ' => 'ȣ' 6547: {0x0224, 0x0225}, // 'Ȥ' => 'ȥ' 6544: {0x0224, 0x0225}, // 'Ȥ' => 'ȥ' 6541: {0x0226, 0x0227}, // 'Ȧ' => 'ȧ' 6538: {0x0226, 0x0227}, // 'Ȧ' => 'ȧ' 6535: {0x0228, 0x0229}, // 'Ȩ' => 'ȩ' 6532: {0x0228, 0x0229}, // 'Ȩ' => 'ȩ' 6529: {0x022A, 0x022B}, // 'Ȫ' => 'ȫ' 6526: {0x022A, 0x022B}, // 'Ȫ' => 'ȫ' 6523: {0x022C, 0x022D}, // 'Ȭ' => 'ȭ' 6520: {0x022C, 0x022D}, // 'Ȭ' => 'ȭ' 6517: {0x022E, 0x022F}, // 'Ȯ' => 'ȯ' 6514: {0x022E, 0x022F}, // 'Ȯ' => 'ȯ' 6511: {0x0230, 0x0231}, // 'Ȱ' => 'ȱ' 6508: {0x0230, 0x0231}, // 'Ȱ' => 'ȱ' 6505: {0x0232, 0x0233}, // 'Ȳ' => 'ȳ' 6502: {0x0232, 0x0233}, // 'Ȳ' => 'ȳ' 6481: {0x023A, 0x2C65}, // 'Ⱥ' => 'ⱥ' 6478: {0x023B, 0x023C}, // 'Ȼ' => 'ȼ' 6475: {0x023B, 0x023C}, // 'Ȼ' => 'ȼ' 6472: {0x023D, 0x019A}, // 'Ƚ' => 'ƚ' 6469: {0x023E, 0x2C66}, // 'Ⱦ' => 'ⱦ' 6466: {0x2C7E, 0x023F}, // 'Ȿ' => 'ȿ' 6463: {0x2C7F, 0x0240}, // 'Ɀ' => 'ɀ' 6460: {0x0241, 0x0242}, // 'Ɂ' => 'ɂ' 6457: {0x0241, 0x0242}, // 'Ɂ' => 'ɂ' 6454: {0x0243, 0x0180}, // 'Ƀ' => 'ƀ' 6451: {0x0244, 0x0289}, // 'Ʉ' => 'ʉ' 6448: {0x0245, 0x028C}, // 'Ʌ' => 'ʌ' 6445: {0x0246, 0x0247}, // 'Ɇ' => 'ɇ' 6442: {0x0246, 0x0247}, // 'Ɇ' => 'ɇ' 6439: {0x0248, 0x0249}, // 'Ɉ' => 'ɉ' 6436: {0x0248, 0x0249}, // 'Ɉ' => 'ɉ' 6433: {0x024A, 0x024B}, // 'Ɋ' => 'ɋ' 6430: {0x024A, 0x024B}, // 'Ɋ' => 'ɋ' 6427: {0x024C, 0x024D}, // 'Ɍ' => 'ɍ' 6424: {0x024C, 0x024D}, // 'Ɍ' => 'ɍ' 6421: {0x024E, 0x024F}, // 'Ɏ' => 'ɏ' 6418: {0x024E, 0x024F}, // 'Ɏ' => 'ɏ' 6415: {0x2C6F, 0x0250}, // 'Ɐ' => 'ɐ' 6412: {0x2C6D, 0x0251}, // 'Ɑ' => 'ɑ' 6409: {0x2C70, 0x0252}, // 'Ɒ' => 'ɒ' 6406: {0x0181, 0x0253}, // 'Ɓ' => 'ɓ' 6403: {0x0186, 0x0254}, // 'Ɔ' => 'ɔ' 6397: {0x0189, 0x0256}, // 'Ɖ' => 'ɖ' 6394: {0x018A, 0x0257}, // 'Ɗ' => 'ɗ' 6388: {0x018F, 0x0259}, // 'Ə' => 'ə' 6382: {0x0190, 0x025B}, // 'Ɛ' => 'ɛ' 6379: {0xA7AB, 0x025C}, // 'Ɜ' => 'ɜ' 6367: {0x0193, 0x0260}, // 'Ɠ' => 'ɠ' 6364: {0xA7AC, 0x0261}, // 'Ɡ' => 'ɡ' 6358: {0x0194, 0x0263}, // 'Ɣ' => 'ɣ' 6352: {0xA78D, 0x0265}, // 'Ɥ' => 'ɥ' 6349: {0xA7AA, 0x0266}, // 'Ɦ' => 'ɦ' 6343: {0x0197, 0x0268}, // 'Ɨ' => 'ɨ' 6340: {0x0196, 0x0269}, // 'Ɩ' => 'ɩ' 6337: {0xA7AE, 0x026A}, // 'Ɪ' => 'ɪ' 6334: {0x2C62, 0x026B}, // 'Ɫ' => 'ɫ' 6331: {0xA7AD, 0x026C}, // 'Ɬ' => 'ɬ' 6322: {0x019C, 0x026F}, // 'Ɯ' => 'ɯ' 6316: {0x2C6E, 0x0271}, // 'Ɱ' => 'ɱ' 6313: {0x019D, 0x0272}, // 'Ɲ' => 'ɲ' 6304: {0x019F, 0x0275}, // 'Ɵ' => 'ɵ' 6280: {0x2C64, 0x027D}, // 'Ɽ' => 'ɽ' 6271: {0x01A6, 0x0280}, // 'Ʀ' => 'ʀ' 6265: {0xA7C5, 0x0282}, // 'Ʂ' => 'ʂ' 6262: {0x01A9, 0x0283}, // 'Ʃ' => 'ʃ' 6250: {0xA7B1, 0x0287}, // 'Ʇ' => 'ʇ' 6247: {0x01AE, 0x0288}, // 'Ʈ' => 'ʈ' 6244: {0x0244, 0x0289}, // 'Ʉ' => 'ʉ' 6241: {0x01B1, 0x028A}, // 'Ʊ' => 'ʊ' 6238: {0x01B2, 0x028B}, // 'Ʋ' => 'ʋ' 6235: {0x0245, 0x028C}, // 'Ʌ' => 'ʌ' 6217: {0x01B7, 0x0292}, // 'Ʒ' => 'ʒ' 6184: {0xA7B2, 0x029D}, // 'Ʝ' => 'ʝ' 6181: {0xA7B0, 0x029E}, // 'Ʞ' => 'ʞ' 5680: {0x0399, 0x0345}, // 'Ι' => 'ͅ' 5550: {0x0370, 0x0371}, // 'Ͱ' => 'ͱ' 5547: {0x0370, 0x0371}, // 'Ͱ' => 'ͱ' 5544: {0x0372, 0x0373}, // 'Ͳ' => 'ͳ' 5541: {0x0372, 0x0373}, // 'Ͳ' => 'ͳ' 5532: {0x0376, 0x0377}, // 'Ͷ' => 'ͷ' 5529: {0x0376, 0x0377}, // 'Ͷ' => 'ͷ' 5517: {0x03FD, 0x037B}, // 'Ͻ' => 'ͻ' 5514: {0x03FE, 0x037C}, // 'Ͼ' => 'ͼ' 5511: {0x03FF, 0x037D}, // 'Ͽ' => 'ͽ' 5505: {0x037F, 0x03F3}, // 'Ϳ' => 'ϳ' 5484: {0x0386, 0x03AC}, // 'Ά' => 'ά' 5478: {0x0388, 0x03AD}, // 'Έ' => 'έ' 5475: {0x0389, 0x03AE}, // 'Ή' => 'ή' 5472: {0x038A, 0x03AF}, // 'Ί' => 'ί' 5466: {0x038C, 0x03CC}, // 'Ό' => 'ό' 5460: {0x038E, 0x03CD}, // 'Ύ' => 'ύ' 5457: {0x038F, 0x03CE}, // 'Ώ' => 'ώ' 5451: {0x0391, 0x03B1}, // 'Α' => 'α' 5448: {0x0392, 0x03B2}, // 'Β' => 'β' 5445: {0x0393, 0x03B3}, // 'Γ' => 'γ' 5442: {0x0394, 0x03B4}, // 'Δ' => 'δ' 5439: {0x0395, 0x03B5}, // 'Ε' => 'ε' 5436: {0x0396, 0x03B6}, // 'Ζ' => 'ζ' 5433: {0x0397, 0x03B7}, // 'Η' => 'η' 5430: {0x0398, 0x03B8}, // 'Θ' => 'θ' 5427: {0x0399, 0x03B9}, // 'Ι' => 'ι' 5424: {0x039A, 0x03BA}, // 'Κ' => 'κ' 5421: {0x039B, 0x03BB}, // 'Λ' => 'λ' 5418: {0x039C, 0x03BC}, // 'Μ' => 'μ' 5415: {0x039D, 0x03BD}, // 'Ν' => 'ν' 5412: {0x039E, 0x03BE}, // 'Ξ' => 'ξ' 5409: {0x039F, 0x03BF}, // 'Ο' => 'ο' 5406: {0x03A0, 0x03C0}, // 'Π' => 'π' 5403: {0x03A1, 0x03C1}, // 'Ρ' => 'ρ' 5397: {0x03A3, 0x03C3}, // 'Σ' => 'σ' 5394: {0x03A4, 0x03C4}, // 'Τ' => 'τ' 5391: {0x03A5, 0x03C5}, // 'Υ' => 'υ' 5388: {0x03A6, 0x03C6}, // 'Φ' => 'φ' 5385: {0x03A7, 0x03C7}, // 'Χ' => 'χ' 5382: {0x03A8, 0x03C8}, // 'Ψ' => 'ψ' 5379: {0x03A9, 0x03C9}, // 'Ω' => 'ω' 5376: {0x03AA, 0x03CA}, // 'Ϊ' => 'ϊ' 5373: {0x03AB, 0x03CB}, // 'Ϋ' => 'ϋ' 5370: {0x0386, 0x03AC}, // 'Ά' => 'ά' 5367: {0x0388, 0x03AD}, // 'Έ' => 'έ' 5364: {0x0389, 0x03AE}, // 'Ή' => 'ή' 5361: {0x038A, 0x03AF}, // 'Ί' => 'ί' 5355: {0x0391, 0x03B1}, // 'Α' => 'α' 5352: {0x0392, 0x03B2}, // 'Β' => 'β' 5349: {0x0393, 0x03B3}, // 'Γ' => 'γ' 5346: {0x0394, 0x03B4}, // 'Δ' => 'δ' 5343: {0x0395, 0x03B5}, // 'Ε' => 'ε' 5340: {0x0396, 0x03B6}, // 'Ζ' => 'ζ' 5337: {0x0397, 0x03B7}, // 'Η' => 'η' 5334: {0x0398, 0x03B8}, // 'Θ' => 'θ' 5331: {0x0399, 0x03B9}, // 'Ι' => 'ι' 5328: {0x039A, 0x03BA}, // 'Κ' => 'κ' 5325: {0x039B, 0x03BB}, // 'Λ' => 'λ' 5322: {0x039C, 0x03BC}, // 'Μ' => 'μ' 5319: {0x039D, 0x03BD}, // 'Ν' => 'ν' 5316: {0x039E, 0x03BE}, // 'Ξ' => 'ξ' 5313: {0x039F, 0x03BF}, // 'Ο' => 'ο' 5310: {0x03A0, 0x03C0}, // 'Π' => 'π' 5307: {0x03A1, 0x03C1}, // 'Ρ' => 'ρ' 5304: {0x03A3, 0x03C2}, // 'Σ' => 'ς' 5301: {0x03A3, 0x03C3}, // 'Σ' => 'σ' 5298: {0x03A4, 0x03C4}, // 'Τ' => 'τ' 5295: {0x03A5, 0x03C5}, // 'Υ' => 'υ' 5292: {0x03A6, 0x03C6}, // 'Φ' => 'φ' 5289: {0x03A7, 0x03C7}, // 'Χ' => 'χ' 5286: {0x03A8, 0x03C8}, // 'Ψ' => 'ψ' 5283: {0x03A9, 0x03C9}, // 'Ω' => 'ω' 5280: {0x03AA, 0x03CA}, // 'Ϊ' => 'ϊ' 5277: {0x03AB, 0x03CB}, // 'Ϋ' => 'ϋ' 5274: {0x038C, 0x03CC}, // 'Ό' => 'ό' 5271: {0x038E, 0x03CD}, // 'Ύ' => 'ύ' 5268: {0x038F, 0x03CE}, // 'Ώ' => 'ώ' 5265: {0x03CF, 0x03D7}, // 'Ϗ' => 'ϗ' 5262: {0x0392, 0x03D0}, // 'Β' => 'ϐ' 5259: {0x0398, 0x03D1}, // 'Θ' => 'ϑ' 5247: {0x03A6, 0x03D5}, // 'Φ' => 'ϕ' 5244: {0x03A0, 0x03D6}, // 'Π' => 'ϖ' 5241: {0x03CF, 0x03D7}, // 'Ϗ' => 'ϗ' 5238: {0x03D8, 0x03D9}, // 'Ϙ' => 'ϙ' 5235: {0x03D8, 0x03D9}, // 'Ϙ' => 'ϙ' 5232: {0x03DA, 0x03DB}, // 'Ϛ' => 'ϛ' 5229: {0x03DA, 0x03DB}, // 'Ϛ' => 'ϛ' 5226: {0x03DC, 0x03DD}, // 'Ϝ' => 'ϝ' 5223: {0x03DC, 0x03DD}, // 'Ϝ' => 'ϝ' 5220: {0x03DE, 0x03DF}, // 'Ϟ' => 'ϟ' 5217: {0x03DE, 0x03DF}, // 'Ϟ' => 'ϟ' 5214: {0x03E0, 0x03E1}, // 'Ϡ' => 'ϡ' 5211: {0x03E0, 0x03E1}, // 'Ϡ' => 'ϡ' 5208: {0x03E2, 0x03E3}, // 'Ϣ' => 'ϣ' 5205: {0x03E2, 0x03E3}, // 'Ϣ' => 'ϣ' 5202: {0x03E4, 0x03E5}, // 'Ϥ' => 'ϥ' 5199: {0x03E4, 0x03E5}, // 'Ϥ' => 'ϥ' 5196: {0x03E6, 0x03E7}, // 'Ϧ' => 'ϧ' 5193: {0x03E6, 0x03E7}, // 'Ϧ' => 'ϧ' 5190: {0x03E8, 0x03E9}, // 'Ϩ' => 'ϩ' 5187: {0x03E8, 0x03E9}, // 'Ϩ' => 'ϩ' 5184: {0x03EA, 0x03EB}, // 'Ϫ' => 'ϫ' 5181: {0x03EA, 0x03EB}, // 'Ϫ' => 'ϫ' 5178: {0x03EC, 0x03ED}, // 'Ϭ' => 'ϭ' 5175: {0x03EC, 0x03ED}, // 'Ϭ' => 'ϭ' 5172: {0x03EE, 0x03EF}, // 'Ϯ' => 'ϯ' 5169: {0x03EE, 0x03EF}, // 'Ϯ' => 'ϯ' 5166: {0x039A, 0x03F0}, // 'Κ' => 'ϰ' 5163: {0x03A1, 0x03F1}, // 'Ρ' => 'ϱ' 5160: {0x03F9, 0x03F2}, // 'Ϲ' => 'ϲ' 5157: {0x037F, 0x03F3}, // 'Ϳ' => 'ϳ' 5154: {0x03F4, 0x03B8}, // 'ϴ' => 'θ' 5151: {0x0395, 0x03F5}, // 'Ε' => 'ϵ' 5145: {0x03F7, 0x03F8}, // 'Ϸ' => 'ϸ' 5142: {0x03F7, 0x03F8}, // 'Ϸ' => 'ϸ' 5139: {0x03F9, 0x03F2}, // 'Ϲ' => 'ϲ' 5136: {0x03FA, 0x03FB}, // 'Ϻ' => 'ϻ' 5133: {0x03FA, 0x03FB}, // 'Ϻ' => 'ϻ' 5127: {0x03FD, 0x037B}, // 'Ͻ' => 'ͻ' 5124: {0x03FE, 0x037C}, // 'Ͼ' => 'ͼ' 5121: {0x03FF, 0x037D}, // 'Ͽ' => 'ͽ' 5118: {0x0400, 0x0450}, // 'Ѐ' => 'ѐ' 5115: {0x0401, 0x0451}, // 'Ё' => 'ё' 5112: {0x0402, 0x0452}, // 'Ђ' => 'ђ' 5109: {0x0403, 0x0453}, // 'Ѓ' => 'ѓ' 5106: {0x0404, 0x0454}, // 'Є' => 'є' 5103: {0x0405, 0x0455}, // 'Ѕ' => 'ѕ' 5100: {0x0406, 0x0456}, // 'І' => 'і' 5097: {0x0407, 0x0457}, // 'Ї' => 'ї' 5094: {0x0408, 0x0458}, // 'Ј' => 'ј' 5091: {0x0409, 0x0459}, // 'Љ' => 'љ' 5088: {0x040A, 0x045A}, // 'Њ' => 'њ' 5085: {0x040B, 0x045B}, // 'Ћ' => 'ћ' 5082: {0x040C, 0x045C}, // 'Ќ' => 'ќ' 5079: {0x040D, 0x045D}, // 'Ѝ' => 'ѝ' 5076: {0x040E, 0x045E}, // 'Ў' => 'ў' 5073: {0x040F, 0x045F}, // 'Џ' => 'џ' 5070: {0x0410, 0x0430}, // 'А' => 'а' 5067: {0x0411, 0x0431}, // 'Б' => 'б' 5064: {0x0412, 0x0432}, // 'В' => 'в' 5061: {0x0413, 0x0433}, // 'Г' => 'г' 5058: {0x0414, 0x0434}, // 'Д' => 'д' 5055: {0x0415, 0x0435}, // 'Е' => 'е' 5052: {0x0416, 0x0436}, // 'Ж' => 'ж' 5049: {0x0417, 0x0437}, // 'З' => 'з' 5046: {0x0418, 0x0438}, // 'И' => 'и' 5043: {0x0419, 0x0439}, // 'Й' => 'й' 5040: {0x041A, 0x043A}, // 'К' => 'к' 5037: {0x041B, 0x043B}, // 'Л' => 'л' 5034: {0x041C, 0x043C}, // 'М' => 'м' 5031: {0x041D, 0x043D}, // 'Н' => 'н' 5028: {0x041E, 0x043E}, // 'О' => 'о' 5025: {0x041F, 0x043F}, // 'П' => 'п' 5022: {0x0420, 0x0440}, // 'Р' => 'р' 5019: {0x0421, 0x0441}, // 'С' => 'с' 5016: {0x0422, 0x0442}, // 'Т' => 'т' 5013: {0x0423, 0x0443}, // 'У' => 'у' 5010: {0x0424, 0x0444}, // 'Ф' => 'ф' 5007: {0x0425, 0x0445}, // 'Х' => 'х' 5004: {0x0426, 0x0446}, // 'Ц' => 'ц' 5001: {0x0427, 0x0447}, // 'Ч' => 'ч' 4998: {0x0428, 0x0448}, // 'Ш' => 'ш' 4995: {0x0429, 0x0449}, // 'Щ' => 'щ' 4992: {0x042A, 0x044A}, // 'Ъ' => 'ъ' 4989: {0x042B, 0x044B}, // 'Ы' => 'ы' 4986: {0x042C, 0x044C}, // 'Ь' => 'ь' 4983: {0x042D, 0x044D}, // 'Э' => 'э' 4980: {0x042E, 0x044E}, // 'Ю' => 'ю' 4977: {0x042F, 0x044F}, // 'Я' => 'я' 4974: {0x0410, 0x0430}, // 'А' => 'а' 4971: {0x0411, 0x0431}, // 'Б' => 'б' 4968: {0x0412, 0x0432}, // 'В' => 'в' 4965: {0x0413, 0x0433}, // 'Г' => 'г' 4962: {0x0414, 0x0434}, // 'Д' => 'д' 4959: {0x0415, 0x0435}, // 'Е' => 'е' 4956: {0x0416, 0x0436}, // 'Ж' => 'ж' 4953: {0x0417, 0x0437}, // 'З' => 'з' 4950: {0x0418, 0x0438}, // 'И' => 'и' 4947: {0x0419, 0x0439}, // 'Й' => 'й' 4944: {0x041A, 0x043A}, // 'К' => 'к' 4941: {0x041B, 0x043B}, // 'Л' => 'л' 4938: {0x041C, 0x043C}, // 'М' => 'м' 4935: {0x041D, 0x043D}, // 'Н' => 'н' 4932: {0x041E, 0x043E}, // 'О' => 'о' 4929: {0x041F, 0x043F}, // 'П' => 'п' 4926: {0x0420, 0x0440}, // 'Р' => 'р' 4923: {0x0421, 0x0441}, // 'С' => 'с' 4920: {0x0422, 0x0442}, // 'Т' => 'т' 4917: {0x0423, 0x0443}, // 'У' => 'у' 4914: {0x0424, 0x0444}, // 'Ф' => 'ф' 4911: {0x0425, 0x0445}, // 'Х' => 'х' 4908: {0x0426, 0x0446}, // 'Ц' => 'ц' 4905: {0x0427, 0x0447}, // 'Ч' => 'ч' 4902: {0x0428, 0x0448}, // 'Ш' => 'ш' 4899: {0x0429, 0x0449}, // 'Щ' => 'щ' 4896: {0x042A, 0x044A}, // 'Ъ' => 'ъ' 4893: {0x042B, 0x044B}, // 'Ы' => 'ы' 4890: {0x042C, 0x044C}, // 'Ь' => 'ь' 4887: {0x042D, 0x044D}, // 'Э' => 'э' 4884: {0x042E, 0x044E}, // 'Ю' => 'ю' 4881: {0x042F, 0x044F}, // 'Я' => 'я' 4878: {0x0400, 0x0450}, // 'Ѐ' => 'ѐ' 4875: {0x0401, 0x0451}, // 'Ё' => 'ё' 4872: {0x0402, 0x0452}, // 'Ђ' => 'ђ' 4869: {0x0403, 0x0453}, // 'Ѓ' => 'ѓ' 4866: {0x0404, 0x0454}, // 'Є' => 'є' 4863: {0x0405, 0x0455}, // 'Ѕ' => 'ѕ' 4860: {0x0406, 0x0456}, // 'І' => 'і' 4857: {0x0407, 0x0457}, // 'Ї' => 'ї' 4854: {0x0408, 0x0458}, // 'Ј' => 'ј' 4851: {0x0409, 0x0459}, // 'Љ' => 'љ' 4848: {0x040A, 0x045A}, // 'Њ' => 'њ' 4845: {0x040B, 0x045B}, // 'Ћ' => 'ћ' 4842: {0x040C, 0x045C}, // 'Ќ' => 'ќ' 4839: {0x040D, 0x045D}, // 'Ѝ' => 'ѝ' 4836: {0x040E, 0x045E}, // 'Ў' => 'ў' 4833: {0x040F, 0x045F}, // 'Џ' => 'џ' 4830: {0x0460, 0x0461}, // 'Ѡ' => 'ѡ' 4827: {0x0460, 0x0461}, // 'Ѡ' => 'ѡ' 4824: {0x0462, 0x0463}, // 'Ѣ' => 'ѣ' 4821: {0x0462, 0x0463}, // 'Ѣ' => 'ѣ' 4818: {0x0464, 0x0465}, // 'Ѥ' => 'ѥ' 4815: {0x0464, 0x0465}, // 'Ѥ' => 'ѥ' 4812: {0x0466, 0x0467}, // 'Ѧ' => 'ѧ' 4809: {0x0466, 0x0467}, // 'Ѧ' => 'ѧ' 4806: {0x0468, 0x0469}, // 'Ѩ' => 'ѩ' 4803: {0x0468, 0x0469}, // 'Ѩ' => 'ѩ' 4800: {0x046A, 0x046B}, // 'Ѫ' => 'ѫ' 4797: {0x046A, 0x046B}, // 'Ѫ' => 'ѫ' 4794: {0x046C, 0x046D}, // 'Ѭ' => 'ѭ' 4791: {0x046C, 0x046D}, // 'Ѭ' => 'ѭ' 4788: {0x046E, 0x046F}, // 'Ѯ' => 'ѯ' 4785: {0x046E, 0x046F}, // 'Ѯ' => 'ѯ' 4782: {0x0470, 0x0471}, // 'Ѱ' => 'ѱ' 4779: {0x0470, 0x0471}, // 'Ѱ' => 'ѱ' 4776: {0x0472, 0x0473}, // 'Ѳ' => 'ѳ' 4773: {0x0472, 0x0473}, // 'Ѳ' => 'ѳ' 4770: {0x0474, 0x0475}, // 'Ѵ' => 'ѵ' 4767: {0x0474, 0x0475}, // 'Ѵ' => 'ѵ' 4764: {0x0476, 0x0477}, // 'Ѷ' => 'ѷ' 4761: {0x0476, 0x0477}, // 'Ѷ' => 'ѷ' 4758: {0x0478, 0x0479}, // 'Ѹ' => 'ѹ' 4755: {0x0478, 0x0479}, // 'Ѹ' => 'ѹ' 4752: {0x047A, 0x047B}, // 'Ѻ' => 'ѻ' 4749: {0x047A, 0x047B}, // 'Ѻ' => 'ѻ' 4746: {0x047C, 0x047D}, // 'Ѽ' => 'ѽ' 4743: {0x047C, 0x047D}, // 'Ѽ' => 'ѽ' 4740: {0x047E, 0x047F}, // 'Ѿ' => 'ѿ' 4737: {0x047E, 0x047F}, // 'Ѿ' => 'ѿ' 4734: {0x0480, 0x0481}, // 'Ҁ' => 'ҁ' 4731: {0x0480, 0x0481}, // 'Ҁ' => 'ҁ' 4704: {0x048A, 0x048B}, // 'Ҋ' => 'ҋ' 4701: {0x048A, 0x048B}, // 'Ҋ' => 'ҋ' 4698: {0x048C, 0x048D}, // 'Ҍ' => 'ҍ' 4695: {0x048C, 0x048D}, // 'Ҍ' => 'ҍ' 4692: {0x048E, 0x048F}, // 'Ҏ' => 'ҏ' 4689: {0x048E, 0x048F}, // 'Ҏ' => 'ҏ' 4686: {0x0490, 0x0491}, // 'Ґ' => 'ґ' 4683: {0x0490, 0x0491}, // 'Ґ' => 'ґ' 4680: {0x0492, 0x0493}, // 'Ғ' => 'ғ' 4677: {0x0492, 0x0493}, // 'Ғ' => 'ғ' 4674: {0x0494, 0x0495}, // 'Ҕ' => 'ҕ' 4671: {0x0494, 0x0495}, // 'Ҕ' => 'ҕ' 4668: {0x0496, 0x0497}, // 'Җ' => 'җ' 4665: {0x0496, 0x0497}, // 'Җ' => 'җ' 4662: {0x0498, 0x0499}, // 'Ҙ' => 'ҙ' 4659: {0x0498, 0x0499}, // 'Ҙ' => 'ҙ' 4656: {0x049A, 0x049B}, // 'Қ' => 'қ' 4653: {0x049A, 0x049B}, // 'Қ' => 'қ' 4650: {0x049C, 0x049D}, // 'Ҝ' => 'ҝ' 4647: {0x049C, 0x049D}, // 'Ҝ' => 'ҝ' 4644: {0x049E, 0x049F}, // 'Ҟ' => 'ҟ' 4641: {0x049E, 0x049F}, // 'Ҟ' => 'ҟ' 4638: {0x04A0, 0x04A1}, // 'Ҡ' => 'ҡ' 4635: {0x04A0, 0x04A1}, // 'Ҡ' => 'ҡ' 4632: {0x04A2, 0x04A3}, // 'Ң' => 'ң' 4629: {0x04A2, 0x04A3}, // 'Ң' => 'ң' 4626: {0x04A4, 0x04A5}, // 'Ҥ' => 'ҥ' 4623: {0x04A4, 0x04A5}, // 'Ҥ' => 'ҥ' 4620: {0x04A6, 0x04A7}, // 'Ҧ' => 'ҧ' 4617: {0x04A6, 0x04A7}, // 'Ҧ' => 'ҧ' 4614: {0x04A8, 0x04A9}, // 'Ҩ' => 'ҩ' 4611: {0x04A8, 0x04A9}, // 'Ҩ' => 'ҩ' 4608: {0x04AA, 0x04AB}, // 'Ҫ' => 'ҫ' 4605: {0x04AA, 0x04AB}, // 'Ҫ' => 'ҫ' 4602: {0x04AC, 0x04AD}, // 'Ҭ' => 'ҭ' 4599: {0x04AC, 0x04AD}, // 'Ҭ' => 'ҭ' 4596: {0x04AE, 0x04AF}, // 'Ү' => 'ү' 4593: {0x04AE, 0x04AF}, // 'Ү' => 'ү' 4590: {0x04B0, 0x04B1}, // 'Ұ' => 'ұ' 4587: {0x04B0, 0x04B1}, // 'Ұ' => 'ұ' 4584: {0x04B2, 0x04B3}, // 'Ҳ' => 'ҳ' 4581: {0x04B2, 0x04B3}, // 'Ҳ' => 'ҳ' 4578: {0x04B4, 0x04B5}, // 'Ҵ' => 'ҵ' 4575: {0x04B4, 0x04B5}, // 'Ҵ' => 'ҵ' 4572: {0x04B6, 0x04B7}, // 'Ҷ' => 'ҷ' 4569: {0x04B6, 0x04B7}, // 'Ҷ' => 'ҷ' 4566: {0x04B8, 0x04B9}, // 'Ҹ' => 'ҹ' 4563: {0x04B8, 0x04B9}, // 'Ҹ' => 'ҹ' 4560: {0x04BA, 0x04BB}, // 'Һ' => 'һ' 4557: {0x04BA, 0x04BB}, // 'Һ' => 'һ' 4554: {0x04BC, 0x04BD}, // 'Ҽ' => 'ҽ' 4551: {0x04BC, 0x04BD}, // 'Ҽ' => 'ҽ' 4548: {0x04BE, 0x04BF}, // 'Ҿ' => 'ҿ' 4545: {0x04BE, 0x04BF}, // 'Ҿ' => 'ҿ' 4542: {0x04C0, 0x04CF}, // 'Ӏ' => 'ӏ' 4539: {0x04C1, 0x04C2}, // 'Ӂ' => 'ӂ' 4536: {0x04C1, 0x04C2}, // 'Ӂ' => 'ӂ' 4533: {0x04C3, 0x04C4}, // 'Ӄ' => 'ӄ' 4530: {0x04C3, 0x04C4}, // 'Ӄ' => 'ӄ' 4527: {0x04C5, 0x04C6}, // 'Ӆ' => 'ӆ' 4524: {0x04C5, 0x04C6}, // 'Ӆ' => 'ӆ' 4521: {0x04C7, 0x04C8}, // 'Ӈ' => 'ӈ' 4518: {0x04C7, 0x04C8}, // 'Ӈ' => 'ӈ' 4515: {0x04C9, 0x04CA}, // 'Ӊ' => 'ӊ' 4512: {0x04C9, 0x04CA}, // 'Ӊ' => 'ӊ' 4509: {0x04CB, 0x04CC}, // 'Ӌ' => 'ӌ' 4506: {0x04CB, 0x04CC}, // 'Ӌ' => 'ӌ' 4503: {0x04CD, 0x04CE}, // 'Ӎ' => 'ӎ' 4500: {0x04CD, 0x04CE}, // 'Ӎ' => 'ӎ' 4497: {0x04C0, 0x04CF}, // 'Ӏ' => 'ӏ' 4494: {0x04D0, 0x04D1}, // 'Ӑ' => 'ӑ' 4491: {0x04D0, 0x04D1}, // 'Ӑ' => 'ӑ' 4488: {0x04D2, 0x04D3}, // 'Ӓ' => 'ӓ' 4485: {0x04D2, 0x04D3}, // 'Ӓ' => 'ӓ' 4482: {0x04D4, 0x04D5}, // 'Ӕ' => 'ӕ' 4479: {0x04D4, 0x04D5}, // 'Ӕ' => 'ӕ' 4476: {0x04D6, 0x04D7}, // 'Ӗ' => 'ӗ' 4473: {0x04D6, 0x04D7}, // 'Ӗ' => 'ӗ' 4470: {0x04D8, 0x04D9}, // 'Ә' => 'ә' 4467: {0x04D8, 0x04D9}, // 'Ә' => 'ә' 4464: {0x04DA, 0x04DB}, // 'Ӛ' => 'ӛ' 4461: {0x04DA, 0x04DB}, // 'Ӛ' => 'ӛ' 4458: {0x04DC, 0x04DD}, // 'Ӝ' => 'ӝ' 4455: {0x04DC, 0x04DD}, // 'Ӝ' => 'ӝ' 4452: {0x04DE, 0x04DF}, // 'Ӟ' => 'ӟ' 4449: {0x04DE, 0x04DF}, // 'Ӟ' => 'ӟ' 4446: {0x04E0, 0x04E1}, // 'Ӡ' => 'ӡ' 4443: {0x04E0, 0x04E1}, // 'Ӡ' => 'ӡ' 4440: {0x04E2, 0x04E3}, // 'Ӣ' => 'ӣ' 4437: {0x04E2, 0x04E3}, // 'Ӣ' => 'ӣ' 4434: {0x04E4, 0x04E5}, // 'Ӥ' => 'ӥ' 4431: {0x04E4, 0x04E5}, // 'Ӥ' => 'ӥ' 4428: {0x04E6, 0x04E7}, // 'Ӧ' => 'ӧ' 4425: {0x04E6, 0x04E7}, // 'Ӧ' => 'ӧ' 4422: {0x04E8, 0x04E9}, // 'Ө' => 'ө' 4419: {0x04E8, 0x04E9}, // 'Ө' => 'ө' 4416: {0x04EA, 0x04EB}, // 'Ӫ' => 'ӫ' 4413: {0x04EA, 0x04EB}, // 'Ӫ' => 'ӫ' 4410: {0x04EC, 0x04ED}, // 'Ӭ' => 'ӭ' 4407: {0x04EC, 0x04ED}, // 'Ӭ' => 'ӭ' 4404: {0x04EE, 0x04EF}, // 'Ӯ' => 'ӯ' 4401: {0x04EE, 0x04EF}, // 'Ӯ' => 'ӯ' 4398: {0x04F0, 0x04F1}, // 'Ӱ' => 'ӱ' 4395: {0x04F0, 0x04F1}, // 'Ӱ' => 'ӱ' 4392: {0x04F2, 0x04F3}, // 'Ӳ' => 'ӳ' 4389: {0x04F2, 0x04F3}, // 'Ӳ' => 'ӳ' 4386: {0x04F4, 0x04F5}, // 'Ӵ' => 'ӵ' 4383: {0x04F4, 0x04F5}, // 'Ӵ' => 'ӵ' 4380: {0x04F6, 0x04F7}, // 'Ӷ' => 'ӷ' 4377: {0x04F6, 0x04F7}, // 'Ӷ' => 'ӷ' 4374: {0x04F8, 0x04F9}, // 'Ӹ' => 'ӹ' 4371: {0x04F8, 0x04F9}, // 'Ӹ' => 'ӹ' 4368: {0x04FA, 0x04FB}, // 'Ӻ' => 'ӻ' 4365: {0x04FA, 0x04FB}, // 'Ӻ' => 'ӻ' 4362: {0x04FC, 0x04FD}, // 'Ӽ' => 'ӽ' 4359: {0x04FC, 0x04FD}, // 'Ӽ' => 'ӽ' 4356: {0x04FE, 0x04FF}, // 'Ӿ' => 'ӿ' 4353: {0x04FE, 0x04FF}, // 'Ӿ' => 'ӿ' 4350: {0x0500, 0x0501}, // 'Ԁ' => 'ԁ' 4347: {0x0500, 0x0501}, // 'Ԁ' => 'ԁ' 4344: {0x0502, 0x0503}, // 'Ԃ' => 'ԃ' 4341: {0x0502, 0x0503}, // 'Ԃ' => 'ԃ' 4338: {0x0504, 0x0505}, // 'Ԅ' => 'ԅ' 4335: {0x0504, 0x0505}, // 'Ԅ' => 'ԅ' 4332: {0x0506, 0x0507}, // 'Ԇ' => 'ԇ' 4329: {0x0506, 0x0507}, // 'Ԇ' => 'ԇ' 4326: {0x0508, 0x0509}, // 'Ԉ' => 'ԉ' 4323: {0x0508, 0x0509}, // 'Ԉ' => 'ԉ' 4320: {0x050A, 0x050B}, // 'Ԋ' => 'ԋ' 4317: {0x050A, 0x050B}, // 'Ԋ' => 'ԋ' 4314: {0x050C, 0x050D}, // 'Ԍ' => 'ԍ' 4311: {0x050C, 0x050D}, // 'Ԍ' => 'ԍ' 4308: {0x050E, 0x050F}, // 'Ԏ' => 'ԏ' 4305: {0x050E, 0x050F}, // 'Ԏ' => 'ԏ' 4302: {0x0510, 0x0511}, // 'Ԑ' => 'ԑ' 4299: {0x0510, 0x0511}, // 'Ԑ' => 'ԑ' 4296: {0x0512, 0x0513}, // 'Ԓ' => 'ԓ' 4293: {0x0512, 0x0513}, // 'Ԓ' => 'ԓ' 4290: {0x0514, 0x0515}, // 'Ԕ' => 'ԕ' 4287: {0x0514, 0x0515}, // 'Ԕ' => 'ԕ' 4284: {0x0516, 0x0517}, // 'Ԗ' => 'ԗ' 4281: {0x0516, 0x0517}, // 'Ԗ' => 'ԗ' 4278: {0x0518, 0x0519}, // 'Ԙ' => 'ԙ' 4275: {0x0518, 0x0519}, // 'Ԙ' => 'ԙ' 4272: {0x051A, 0x051B}, // 'Ԛ' => 'ԛ' 4269: {0x051A, 0x051B}, // 'Ԛ' => 'ԛ' 4266: {0x051C, 0x051D}, // 'Ԝ' => 'ԝ' 4263: {0x051C, 0x051D}, // 'Ԝ' => 'ԝ' 4260: {0x051E, 0x051F}, // 'Ԟ' => 'ԟ' 4257: {0x051E, 0x051F}, // 'Ԟ' => 'ԟ' 4254: {0x0520, 0x0521}, // 'Ԡ' => 'ԡ' 4251: {0x0520, 0x0521}, // 'Ԡ' => 'ԡ' 4248: {0x0522, 0x0523}, // 'Ԣ' => 'ԣ' 4245: {0x0522, 0x0523}, // 'Ԣ' => 'ԣ' 4242: {0x0524, 0x0525}, // 'Ԥ' => 'ԥ' 4239: {0x0524, 0x0525}, // 'Ԥ' => 'ԥ' 4236: {0x0526, 0x0527}, // 'Ԧ' => 'ԧ' 4233: {0x0526, 0x0527}, // 'Ԧ' => 'ԧ' 4230: {0x0528, 0x0529}, // 'Ԩ' => 'ԩ' 4227: {0x0528, 0x0529}, // 'Ԩ' => 'ԩ' 4224: {0x052A, 0x052B}, // 'Ԫ' => 'ԫ' 4221: {0x052A, 0x052B}, // 'Ԫ' => 'ԫ' 4218: {0x052C, 0x052D}, // 'Ԭ' => 'ԭ' 4215: {0x052C, 0x052D}, // 'Ԭ' => 'ԭ' 4212: {0x052E, 0x052F}, // 'Ԯ' => 'ԯ' 4209: {0x052E, 0x052F}, // 'Ԯ' => 'ԯ' 4203: {0x0531, 0x0561}, // 'Ա' => 'ա' 4200: {0x0532, 0x0562}, // 'Բ' => 'բ' 4197: {0x0533, 0x0563}, // 'Գ' => 'գ' 4194: {0x0534, 0x0564}, // 'Դ' => 'դ' 4191: {0x0535, 0x0565}, // 'Ե' => 'ե' 4188: {0x0536, 0x0566}, // 'Զ' => 'զ' 4185: {0x0537, 0x0567}, // 'Է' => 'է' 4182: {0x0538, 0x0568}, // 'Ը' => 'ը' 4179: {0x0539, 0x0569}, // 'Թ' => 'թ' 4176: {0x053A, 0x056A}, // 'Ժ' => 'ժ' 4173: {0x053B, 0x056B}, // 'Ի' => 'ի' 4170: {0x053C, 0x056C}, // 'Լ' => 'լ' 4167: {0x053D, 0x056D}, // 'Խ' => 'խ' 4164: {0x053E, 0x056E}, // 'Ծ' => 'ծ' 4161: {0x053F, 0x056F}, // 'Կ' => 'կ' 4158: {0x0540, 0x0570}, // 'Հ' => 'հ' 4155: {0x0541, 0x0571}, // 'Ձ' => 'ձ' 4152: {0x0542, 0x0572}, // 'Ղ' => 'ղ' 4149: {0x0543, 0x0573}, // 'Ճ' => 'ճ' 4146: {0x0544, 0x0574}, // 'Մ' => 'մ' 4143: {0x0545, 0x0575}, // 'Յ' => 'յ' 4140: {0x0546, 0x0576}, // 'Ն' => 'ն' 4137: {0x0547, 0x0577}, // 'Շ' => 'շ' 4134: {0x0548, 0x0578}, // 'Ո' => 'ո' 4131: {0x0549, 0x0579}, // 'Չ' => 'չ' 4128: {0x054A, 0x057A}, // 'Պ' => 'պ' 4125: {0x054B, 0x057B}, // 'Ջ' => 'ջ' 4122: {0x054C, 0x057C}, // 'Ռ' => 'ռ' 4119: {0x054D, 0x057D}, // 'Ս' => 'ս' 4116: {0x054E, 0x057E}, // 'Վ' => 'վ' 4113: {0x054F, 0x057F}, // 'Տ' => 'տ' 4110: {0x0550, 0x0580}, // 'Ր' => 'ր' 4107: {0x0551, 0x0581}, // 'Ց' => 'ց' 4104: {0x0552, 0x0582}, // 'Ւ' => 'ւ' 4101: {0x0553, 0x0583}, // 'Փ' => 'փ' 4098: {0x0554, 0x0584}, // 'Ք' => 'ք' 4095: {0x0555, 0x0585}, // 'Օ' => 'օ' 4092: {0x0556, 0x0586}, // 'Ֆ' => 'ֆ' 4059: {0x0531, 0x0561}, // 'Ա' => 'ա' 4056: {0x0532, 0x0562}, // 'Բ' => 'բ' 4053: {0x0533, 0x0563}, // 'Գ' => 'գ' 4050: {0x0534, 0x0564}, // 'Դ' => 'դ' 4047: {0x0535, 0x0565}, // 'Ե' => 'ե' 4044: {0x0536, 0x0566}, // 'Զ' => 'զ' 4041: {0x0537, 0x0567}, // 'Է' => 'է' 4038: {0x0538, 0x0568}, // 'Ը' => 'ը' 4035: {0x0539, 0x0569}, // 'Թ' => 'թ' 4032: {0x053A, 0x056A}, // 'Ժ' => 'ժ' 4029: {0x053B, 0x056B}, // 'Ի' => 'ի' 4026: {0x053C, 0x056C}, // 'Լ' => 'լ' 4023: {0x053D, 0x056D}, // 'Խ' => 'խ' 4020: {0x053E, 0x056E}, // 'Ծ' => 'ծ' 4017: {0x053F, 0x056F}, // 'Կ' => 'կ' 4014: {0x0540, 0x0570}, // 'Հ' => 'հ' 4011: {0x0541, 0x0571}, // 'Ձ' => 'ձ' 4008: {0x0542, 0x0572}, // 'Ղ' => 'ղ' 4005: {0x0543, 0x0573}, // 'Ճ' => 'ճ' 4002: {0x0544, 0x0574}, // 'Մ' => 'մ' 3999: {0x0545, 0x0575}, // 'Յ' => 'յ' 3996: {0x0546, 0x0576}, // 'Ն' => 'ն' 3993: {0x0547, 0x0577}, // 'Շ' => 'շ' 3990: {0x0548, 0x0578}, // 'Ո' => 'ո' 3987: {0x0549, 0x0579}, // 'Չ' => 'չ' 3984: {0x054A, 0x057A}, // 'Պ' => 'պ' 3981: {0x054B, 0x057B}, // 'Ջ' => 'ջ' 3978: {0x054C, 0x057C}, // 'Ռ' => 'ռ' 3975: {0x054D, 0x057D}, // 'Ս' => 'ս' 3972: {0x054E, 0x057E}, // 'Վ' => 'վ' 3969: {0x054F, 0x057F}, // 'Տ' => 'տ' 3966: {0x0550, 0x0580}, // 'Ր' => 'ր' 3963: {0x0551, 0x0581}, // 'Ց' => 'ց' 3960: {0x0552, 0x0582}, // 'Ւ' => 'ւ' 3957: {0x0553, 0x0583}, // 'Փ' => 'փ' 3954: {0x0554, 0x0584}, // 'Ք' => 'ք' 3951: {0x0555, 0x0585}, // 'Օ' => 'օ' 3948: {0x0556, 0x0586}, // 'Ֆ' => 'ֆ' 3610: {0x10A0, 0x2D00}, // 'Ⴀ' => 'ⴀ' 3607: {0x10A1, 0x2D01}, // 'Ⴁ' => 'ⴁ' 3604: {0x10A2, 0x2D02}, // 'Ⴂ' => 'ⴂ' 3601: {0x10A3, 0x2D03}, // 'Ⴃ' => 'ⴃ' 3598: {0x10A4, 0x2D04}, // 'Ⴄ' => 'ⴄ' 3595: {0x10A5, 0x2D05}, // 'Ⴅ' => 'ⴅ' 3592: {0x10A6, 0x2D06}, // 'Ⴆ' => 'ⴆ' 3589: {0x10A7, 0x2D07}, // 'Ⴇ' => 'ⴇ' 3586: {0x10A8, 0x2D08}, // 'Ⴈ' => 'ⴈ' 3583: {0x10A9, 0x2D09}, // 'Ⴉ' => 'ⴉ' 3580: {0x10AA, 0x2D0A}, // 'Ⴊ' => 'ⴊ' 3577: {0x10AB, 0x2D0B}, // 'Ⴋ' => 'ⴋ' 3574: {0x10AC, 0x2D0C}, // 'Ⴌ' => 'ⴌ' 3571: {0x10AD, 0x2D0D}, // 'Ⴍ' => 'ⴍ' 3568: {0x10AE, 0x2D0E}, // 'Ⴎ' => 'ⴎ' 3565: {0x10AF, 0x2D0F}, // 'Ⴏ' => 'ⴏ' 3562: {0x10B0, 0x2D10}, // 'Ⴐ' => 'ⴐ' 3559: {0x10B1, 0x2D11}, // 'Ⴑ' => 'ⴑ' 3556: {0x10B2, 0x2D12}, // 'Ⴒ' => 'ⴒ' 3553: {0x10B3, 0x2D13}, // 'Ⴓ' => 'ⴓ' 3550: {0x10B4, 0x2D14}, // 'Ⴔ' => 'ⴔ' 3547: {0x10B5, 0x2D15}, // 'Ⴕ' => 'ⴕ' 3544: {0x10B6, 0x2D16}, // 'Ⴖ' => 'ⴖ' 3541: {0x10B7, 0x2D17}, // 'Ⴗ' => 'ⴗ' 3538: {0x10B8, 0x2D18}, // 'Ⴘ' => 'ⴘ' 3535: {0x10B9, 0x2D19}, // 'Ⴙ' => 'ⴙ' 3532: {0x10BA, 0x2D1A}, // 'Ⴚ' => 'ⴚ' 3529: {0x10BB, 0x2D1B}, // 'Ⴛ' => 'ⴛ' 3526: {0x10BC, 0x2D1C}, // 'Ⴜ' => 'ⴜ' 3523: {0x10BD, 0x2D1D}, // 'Ⴝ' => 'ⴝ' 3520: {0x10BE, 0x2D1E}, // 'Ⴞ' => 'ⴞ' 3517: {0x10BF, 0x2D1F}, // 'Ⴟ' => 'ⴟ' 3514: {0x10C0, 0x2D20}, // 'Ⴠ' => 'ⴠ' 3511: {0x10C1, 0x2D21}, // 'Ⴡ' => 'ⴡ' 3508: {0x10C2, 0x2D22}, // 'Ⴢ' => 'ⴢ' 3505: {0x10C3, 0x2D23}, // 'Ⴣ' => 'ⴣ' 3502: {0x10C4, 0x2D24}, // 'Ⴤ' => 'ⴤ' 3499: {0x10C5, 0x2D25}, // 'Ⴥ' => 'ⴥ' 3493: {0x10C7, 0x2D27}, // 'Ⴧ' => 'ⴧ' 3475: {0x10CD, 0x2D2D}, // 'Ⴭ' => 'ⴭ' 3466: {0x1C90, 0x10D0}, // 'Ა' => 'ა' 3463: {0x1C91, 0x10D1}, // 'Ბ' => 'ბ' 3460: {0x1C92, 0x10D2}, // 'Გ' => 'გ' 3457: {0x1C93, 0x10D3}, // 'Დ' => 'დ' 3454: {0x1C94, 0x10D4}, // 'Ე' => 'ე' 3451: {0x1C95, 0x10D5}, // 'Ვ' => 'ვ' 3448: {0x1C96, 0x10D6}, // 'Ზ' => 'ზ' 3445: {0x1C97, 0x10D7}, // 'Თ' => 'თ' 3442: {0x1C98, 0x10D8}, // 'Ი' => 'ი' 3439: {0x1C99, 0x10D9}, // 'Კ' => 'კ' 3436: {0x1C9A, 0x10DA}, // 'Ლ' => 'ლ' 3433: {0x1C9B, 0x10DB}, // 'Მ' => 'მ' 3430: {0x1C9C, 0x10DC}, // 'Ნ' => 'ნ' 3427: {0x1C9D, 0x10DD}, // 'Ო' => 'ო' 3424: {0x1C9E, 0x10DE}, // 'Პ' => 'პ' 3421: {0x1C9F, 0x10DF}, // 'Ჟ' => 'ჟ' 3418: {0x1CA0, 0x10E0}, // 'Რ' => 'რ' 3415: {0x1CA1, 0x10E1}, // 'Ს' => 'ს' 3412: {0x1CA2, 0x10E2}, // 'Ტ' => 'ტ' 3409: {0x1CA3, 0x10E3}, // 'Უ' => 'უ' 3406: {0x1CA4, 0x10E4}, // 'Ფ' => 'ფ' 3403: {0x1CA5, 0x10E5}, // 'Ქ' => 'ქ' 3400: {0x1CA6, 0x10E6}, // 'Ღ' => 'ღ' 3397: {0x1CA7, 0x10E7}, // 'Ყ' => 'ყ' 3394: {0x1CA8, 0x10E8}, // 'Შ' => 'შ' 3391: {0x1CA9, 0x10E9}, // 'Ჩ' => 'ჩ' 3388: {0x1CAA, 0x10EA}, // 'Ც' => 'ც' 3385: {0x1CAB, 0x10EB}, // 'Ძ' => 'ძ' 3382: {0x1CAC, 0x10EC}, // 'Წ' => 'წ' 3379: {0x1CAD, 0x10ED}, // 'Ჭ' => 'ჭ' 3376: {0x1CAE, 0x10EE}, // 'Ხ' => 'ხ' 3373: {0x1CAF, 0x10EF}, // 'Ჯ' => 'ჯ' 3370: {0x1CB0, 0x10F0}, // 'Ჰ' => 'ჰ' 3367: {0x1CB1, 0x10F1}, // 'Ჱ' => 'ჱ' 3364: {0x1CB2, 0x10F2}, // 'Ჲ' => 'ჲ' 3361: {0x1CB3, 0x10F3}, // 'Ჳ' => 'ჳ' 3358: {0x1CB4, 0x10F4}, // 'Ჴ' => 'ჴ' 3355: {0x1CB5, 0x10F5}, // 'Ჵ' => 'ჵ' 3352: {0x1CB6, 0x10F6}, // 'Ჶ' => 'ჶ' 3349: {0x1CB7, 0x10F7}, // 'Ჷ' => 'ჷ' 3346: {0x1CB8, 0x10F8}, // 'Ჸ' => 'ჸ' 3343: {0x1CB9, 0x10F9}, // 'Ჹ' => 'ჹ' 3340: {0x1CBA, 0x10FA}, // 'Ჺ' => 'ჺ' 3331: {0x1CBD, 0x10FD}, // 'Ჽ' => 'ჽ' 3328: {0x1CBE, 0x10FE}, // 'Ჾ' => 'ჾ' 3325: {0x1CBF, 0x10FF}, // 'Ჿ' => 'ჿ' 1306: {0x13A0, 0xAB70}, // 'Ꭰ' => 'ꭰ' 1303: {0x13A1, 0xAB71}, // 'Ꭱ' => 'ꭱ' 1300: {0x13A2, 0xAB72}, // 'Ꭲ' => 'ꭲ' 1297: {0x13A3, 0xAB73}, // 'Ꭳ' => 'ꭳ' 1294: {0x13A4, 0xAB74}, // 'Ꭴ' => 'ꭴ' 1291: {0x13A5, 0xAB75}, // 'Ꭵ' => 'ꭵ' 1288: {0x13A6, 0xAB76}, // 'Ꭶ' => 'ꭶ' 1285: {0x13A7, 0xAB77}, // 'Ꭷ' => 'ꭷ' 1282: {0x13A8, 0xAB78}, // 'Ꭸ' => 'ꭸ' 1279: {0x13A9, 0xAB79}, // 'Ꭹ' => 'ꭹ' 1276: {0x13AA, 0xAB7A}, // 'Ꭺ' => 'ꭺ' 1273: {0x13AB, 0xAB7B}, // 'Ꭻ' => 'ꭻ' 1270: {0x13AC, 0xAB7C}, // 'Ꭼ' => 'ꭼ' 1267: {0x13AD, 0xAB7D}, // 'Ꭽ' => 'ꭽ' 1264: {0x13AE, 0xAB7E}, // 'Ꭾ' => 'ꭾ' 1261: {0x13AF, 0xAB7F}, // 'Ꭿ' => 'ꭿ' 1258: {0x13B0, 0xAB80}, // 'Ꮀ' => 'ꮀ' 1255: {0x13B1, 0xAB81}, // 'Ꮁ' => 'ꮁ' 1252: {0x13B2, 0xAB82}, // 'Ꮂ' => 'ꮂ' 1249: {0x13B3, 0xAB83}, // 'Ꮃ' => 'ꮃ' 1246: {0x13B4, 0xAB84}, // 'Ꮄ' => 'ꮄ' 1243: {0x13B5, 0xAB85}, // 'Ꮅ' => 'ꮅ' 1240: {0x13B6, 0xAB86}, // 'Ꮆ' => 'ꮆ' 1237: {0x13B7, 0xAB87}, // 'Ꮇ' => 'ꮇ' 1234: {0x13B8, 0xAB88}, // 'Ꮈ' => 'ꮈ' 1231: {0x13B9, 0xAB89}, // 'Ꮉ' => 'ꮉ' 1228: {0x13BA, 0xAB8A}, // 'Ꮊ' => 'ꮊ' 1225: {0x13BB, 0xAB8B}, // 'Ꮋ' => 'ꮋ' 1222: {0x13BC, 0xAB8C}, // 'Ꮌ' => 'ꮌ' 1219: {0x13BD, 0xAB8D}, // 'Ꮍ' => 'ꮍ' 1216: {0x13BE, 0xAB8E}, // 'Ꮎ' => 'ꮎ' 1213: {0x13BF, 0xAB8F}, // 'Ꮏ' => 'ꮏ' 1210: {0x13C0, 0xAB90}, // 'Ꮐ' => 'ꮐ' 1207: {0x13C1, 0xAB91}, // 'Ꮑ' => 'ꮑ' 1204: {0x13C2, 0xAB92}, // 'Ꮒ' => 'ꮒ' 1201: {0x13C3, 0xAB93}, // 'Ꮓ' => 'ꮓ' 1198: {0x13C4, 0xAB94}, // 'Ꮔ' => 'ꮔ' 1195: {0x13C5, 0xAB95}, // 'Ꮕ' => 'ꮕ' 1192: {0x13C6, 0xAB96}, // 'Ꮖ' => 'ꮖ' 1189: {0x13C7, 0xAB97}, // 'Ꮗ' => 'ꮗ' 1186: {0x13C8, 0xAB98}, // 'Ꮘ' => 'ꮘ' 1183: {0x13C9, 0xAB99}, // 'Ꮙ' => 'ꮙ' 1180: {0x13CA, 0xAB9A}, // 'Ꮚ' => 'ꮚ' 1177: {0x13CB, 0xAB9B}, // 'Ꮛ' => 'ꮛ' 1174: {0x13CC, 0xAB9C}, // 'Ꮜ' => 'ꮜ' 1171: {0x13CD, 0xAB9D}, // 'Ꮝ' => 'ꮝ' 1168: {0x13CE, 0xAB9E}, // 'Ꮞ' => 'ꮞ' 1165: {0x13CF, 0xAB9F}, // 'Ꮟ' => 'ꮟ' 1162: {0x13D0, 0xABA0}, // 'Ꮠ' => 'ꮠ' 1159: {0x13D1, 0xABA1}, // 'Ꮡ' => 'ꮡ' 1156: {0x13D2, 0xABA2}, // 'Ꮢ' => 'ꮢ' 1153: {0x13D3, 0xABA3}, // 'Ꮣ' => 'ꮣ' 1150: {0x13D4, 0xABA4}, // 'Ꮤ' => 'ꮤ' 1147: {0x13D5, 0xABA5}, // 'Ꮥ' => 'ꮥ' 1144: {0x13D6, 0xABA6}, // 'Ꮦ' => 'ꮦ' 1141: {0x13D7, 0xABA7}, // 'Ꮧ' => 'ꮧ' 1138: {0x13D8, 0xABA8}, // 'Ꮨ' => 'ꮨ' 1135: {0x13D9, 0xABA9}, // 'Ꮩ' => 'ꮩ' 1131: {0x13DA, 0xABAA}, // 'Ꮪ' => 'ꮪ' 1128: {0x13DB, 0xABAB}, // 'Ꮫ' => 'ꮫ' 1125: {0x13DC, 0xABAC}, // 'Ꮬ' => 'ꮬ' 1122: {0x13DD, 0xABAD}, // 'Ꮭ' => 'ꮭ' 1119: {0x13DE, 0xABAE}, // 'Ꮮ' => 'ꮮ' 1116: {0x13DF, 0xABAF}, // 'Ꮯ' => 'ꮯ' 1113: {0x13E0, 0xABB0}, // 'Ꮰ' => 'ꮰ' 1110: {0x13E1, 0xABB1}, // 'Ꮱ' => 'ꮱ' 1107: {0x13E2, 0xABB2}, // 'Ꮲ' => 'ꮲ' 1104: {0x13E3, 0xABB3}, // 'Ꮳ' => 'ꮳ' 1101: {0x13E4, 0xABB4}, // 'Ꮴ' => 'ꮴ' 1098: {0x13E5, 0xABB5}, // 'Ꮵ' => 'ꮵ' 1095: {0x13E6, 0xABB6}, // 'Ꮶ' => 'ꮶ' 1092: {0x13E7, 0xABB7}, // 'Ꮷ' => 'ꮷ' 1089: {0x13E8, 0xABB8}, // 'Ꮸ' => 'ꮸ' 1086: {0x13E9, 0xABB9}, // 'Ꮹ' => 'ꮹ' 1083: {0x13EA, 0xABBA}, // 'Ꮺ' => 'ꮺ' 1080: {0x13EB, 0xABBB}, // 'Ꮻ' => 'ꮻ' 1077: {0x13EC, 0xABBC}, // 'Ꮼ' => 'ꮼ' 1074: {0x13ED, 0xABBD}, // 'Ꮽ' => 'ꮽ' 1071: {0x13EE, 0xABBE}, // 'Ꮾ' => 'ꮾ' 1068: {0x13EF, 0xABBF}, // 'Ꮿ' => 'ꮿ' 1065: {0x13F0, 0x13F8}, // 'Ᏸ' => 'ᏸ' 1062: {0x13F1, 0x13F9}, // 'Ᏹ' => 'ᏹ' 1059: {0x13F2, 0x13FA}, // 'Ᏺ' => 'ᏺ' 1056: {0x13F3, 0x13FB}, // 'Ᏻ' => 'ᏻ' 1053: {0x13F4, 0x13FC}, // 'Ᏼ' => 'ᏼ' 1050: {0x13F5, 0x13FD}, // 'Ᏽ' => 'ᏽ' 1041: {0x13F0, 0x13F8}, // 'Ᏸ' => 'ᏸ' 1038: {0x13F1, 0x13F9}, // 'Ᏹ' => 'ᏹ' 1035: {0x13F2, 0x13FA}, // 'Ᏺ' => 'ᏺ' 1032: {0x13F3, 0x13FB}, // 'Ᏻ' => 'ᏻ' 1029: {0x13F4, 0x13FC}, // 'Ᏼ' => 'ᏼ' 1026: {0x13F5, 0x13FD}, // 'Ᏽ' => 'ᏽ' 2679: {0x0412, 0x1C80}, // 'В' => 'ᲀ' 2676: {0x0414, 0x1C81}, // 'Д' => 'ᲁ' 2673: {0x041E, 0x1C82}, // 'О' => 'ᲂ' 2670: {0x0421, 0x1C83}, // 'С' => 'ᲃ' 2667: {0x0422, 0x1C84}, // 'Т' => 'ᲄ' 2664: {0x0422, 0x1C85}, // 'Т' => 'ᲅ' 2661: {0x042A, 0x1C86}, // 'Ъ' => 'ᲆ' 2658: {0x0462, 0x1C87}, // 'Ѣ' => 'ᲇ' 2655: {0xA64A, 0x1C88}, // 'Ꙋ' => 'ᲈ' 2631: {0x1C90, 0x10D0}, // 'Ა' => 'ა' 2628: {0x1C91, 0x10D1}, // 'Ბ' => 'ბ' 2625: {0x1C92, 0x10D2}, // 'Გ' => 'გ' 2622: {0x1C93, 0x10D3}, // 'Დ' => 'დ' 2619: {0x1C94, 0x10D4}, // 'Ე' => 'ე' 2616: {0x1C95, 0x10D5}, // 'Ვ' => 'ვ' 2613: {0x1C96, 0x10D6}, // 'Ზ' => 'ზ' 2610: {0x1C97, 0x10D7}, // 'Თ' => 'თ' 2607: {0x1C98, 0x10D8}, // 'Ი' => 'ი' 2604: {0x1C99, 0x10D9}, // 'Კ' => 'კ' 2601: {0x1C9A, 0x10DA}, // 'Ლ' => 'ლ' 2598: {0x1C9B, 0x10DB}, // 'Მ' => 'მ' 2595: {0x1C9C, 0x10DC}, // 'Ნ' => 'ნ' 2592: {0x1C9D, 0x10DD}, // 'Ო' => 'ო' 2589: {0x1C9E, 0x10DE}, // 'Პ' => 'პ' 2586: {0x1C9F, 0x10DF}, // 'Ჟ' => 'ჟ' 2583: {0x1CA0, 0x10E0}, // 'Რ' => 'რ' 2580: {0x1CA1, 0x10E1}, // 'Ს' => 'ს' 2577: {0x1CA2, 0x10E2}, // 'Ტ' => 'ტ' 2574: {0x1CA3, 0x10E3}, // 'Უ' => 'უ' 2571: {0x1CA4, 0x10E4}, // 'Ფ' => 'ფ' 2568: {0x1CA5, 0x10E5}, // 'Ქ' => 'ქ' 2565: {0x1CA6, 0x10E6}, // 'Ღ' => 'ღ' 2562: {0x1CA7, 0x10E7}, // 'Ყ' => 'ყ' 2559: {0x1CA8, 0x10E8}, // 'Შ' => 'შ' 2556: {0x1CA9, 0x10E9}, // 'Ჩ' => 'ჩ' 2553: {0x1CAA, 0x10EA}, // 'Ც' => 'ც' 2550: {0x1CAB, 0x10EB}, // 'Ძ' => 'ძ' 2547: {0x1CAC, 0x10EC}, // 'Წ' => 'წ' 2544: {0x1CAD, 0x10ED}, // 'Ჭ' => 'ჭ' 2541: {0x1CAE, 0x10EE}, // 'Ხ' => 'ხ' 2538: {0x1CAF, 0x10EF}, // 'Ჯ' => 'ჯ' 2535: {0x1CB0, 0x10F0}, // 'Ჰ' => 'ჰ' 2532: {0x1CB1, 0x10F1}, // 'Ჱ' => 'ჱ' 2529: {0x1CB2, 0x10F2}, // 'Ჲ' => 'ჲ' 2526: {0x1CB3, 0x10F3}, // 'Ჳ' => 'ჳ' 2523: {0x1CB4, 0x10F4}, // 'Ჴ' => 'ჴ' 2520: {0x1CB5, 0x10F5}, // 'Ჵ' => 'ჵ' 2517: {0x1CB6, 0x10F6}, // 'Ჶ' => 'ჶ' 2514: {0x1CB7, 0x10F7}, // 'Ჷ' => 'ჷ' 2511: {0x1CB8, 0x10F8}, // 'Ჸ' => 'ჸ' 2508: {0x1CB9, 0x10F9}, // 'Ჹ' => 'ჹ' 2505: {0x1CBA, 0x10FA}, // 'Ჺ' => 'ჺ' 2496: {0x1CBD, 0x10FD}, // 'Ჽ' => 'ჽ' 2493: {0x1CBE, 0x10FE}, // 'Ჾ' => 'ჾ' 2490: {0x1CBF, 0x10FF}, // 'Ჿ' => 'ჿ' 1932: {0xA77D, 0x1D79}, // 'Ᵹ' => 'ᵹ' 1920: {0x2C63, 0x1D7D}, // 'Ᵽ' => 'ᵽ' 1869: {0xA7C6, 0x1D8E}, // 'Ᶎ' => 'ᶎ' 1526: {0x1E00, 0x1E01}, // 'Ḁ' => 'ḁ' 1523: {0x1E00, 0x1E01}, // 'Ḁ' => 'ḁ' 1520: {0x1E02, 0x1E03}, // 'Ḃ' => 'ḃ' 1517: {0x1E02, 0x1E03}, // 'Ḃ' => 'ḃ' 1514: {0x1E04, 0x1E05}, // 'Ḅ' => 'ḅ' 1511: {0x1E04, 0x1E05}, // 'Ḅ' => 'ḅ' 1508: {0x1E06, 0x1E07}, // 'Ḇ' => 'ḇ' 1505: {0x1E06, 0x1E07}, // 'Ḇ' => 'ḇ' 1502: {0x1E08, 0x1E09}, // 'Ḉ' => 'ḉ' 1499: {0x1E08, 0x1E09}, // 'Ḉ' => 'ḉ' 1496: {0x1E0A, 0x1E0B}, // 'Ḋ' => 'ḋ' 1493: {0x1E0A, 0x1E0B}, // 'Ḋ' => 'ḋ' 1490: {0x1E0C, 0x1E0D}, // 'Ḍ' => 'ḍ' 1487: {0x1E0C, 0x1E0D}, // 'Ḍ' => 'ḍ' 1484: {0x1E0E, 0x1E0F}, // 'Ḏ' => 'ḏ' 1481: {0x1E0E, 0x1E0F}, // 'Ḏ' => 'ḏ' 1478: {0x1E10, 0x1E11}, // 'Ḑ' => 'ḑ' 1475: {0x1E10, 0x1E11}, // 'Ḑ' => 'ḑ' 1472: {0x1E12, 0x1E13}, // 'Ḓ' => 'ḓ' 1469: {0x1E12, 0x1E13}, // 'Ḓ' => 'ḓ' 1466: {0x1E14, 0x1E15}, // 'Ḕ' => 'ḕ' 1463: {0x1E14, 0x1E15}, // 'Ḕ' => 'ḕ' 1460: {0x1E16, 0x1E17}, // 'Ḗ' => 'ḗ' 1457: {0x1E16, 0x1E17}, // 'Ḗ' => 'ḗ' 1454: {0x1E18, 0x1E19}, // 'Ḙ' => 'ḙ' 1451: {0x1E18, 0x1E19}, // 'Ḙ' => 'ḙ' 1448: {0x1E1A, 0x1E1B}, // 'Ḛ' => 'ḛ' 1445: {0x1E1A, 0x1E1B}, // 'Ḛ' => 'ḛ' 1442: {0x1E1C, 0x1E1D}, // 'Ḝ' => 'ḝ' 1439: {0x1E1C, 0x1E1D}, // 'Ḝ' => 'ḝ' 1436: {0x1E1E, 0x1E1F}, // 'Ḟ' => 'ḟ' 1433: {0x1E1E, 0x1E1F}, // 'Ḟ' => 'ḟ' 1430: {0x1E20, 0x1E21}, // 'Ḡ' => 'ḡ' 1427: {0x1E20, 0x1E21}, // 'Ḡ' => 'ḡ' 1424: {0x1E22, 0x1E23}, // 'Ḣ' => 'ḣ' 1421: {0x1E22, 0x1E23}, // 'Ḣ' => 'ḣ' 1418: {0x1E24, 0x1E25}, // 'Ḥ' => 'ḥ' 1415: {0x1E24, 0x1E25}, // 'Ḥ' => 'ḥ' 1412: {0x1E26, 0x1E27}, // 'Ḧ' => 'ḧ' 1409: {0x1E26, 0x1E27}, // 'Ḧ' => 'ḧ' 1406: {0x1E28, 0x1E29}, // 'Ḩ' => 'ḩ' 1403: {0x1E28, 0x1E29}, // 'Ḩ' => 'ḩ' 1400: {0x1E2A, 0x1E2B}, // 'Ḫ' => 'ḫ' 1397: {0x1E2A, 0x1E2B}, // 'Ḫ' => 'ḫ' 1394: {0x1E2C, 0x1E2D}, // 'Ḭ' => 'ḭ' 1391: {0x1E2C, 0x1E2D}, // 'Ḭ' => 'ḭ' 1388: {0x1E2E, 0x1E2F}, // 'Ḯ' => 'ḯ' 1385: {0x1E2E, 0x1E2F}, // 'Ḯ' => 'ḯ' 1382: {0x1E30, 0x1E31}, // 'Ḱ' => 'ḱ' 1379: {0x1E30, 0x1E31}, // 'Ḱ' => 'ḱ' 1376: {0x1E32, 0x1E33}, // 'Ḳ' => 'ḳ' 1373: {0x1E32, 0x1E33}, // 'Ḳ' => 'ḳ' 1370: {0x1E34, 0x1E35}, // 'Ḵ' => 'ḵ' 1367: {0x1E34, 0x1E35}, // 'Ḵ' => 'ḵ' 1364: {0x1E36, 0x1E37}, // 'Ḷ' => 'ḷ' 1361: {0x1E36, 0x1E37}, // 'Ḷ' => 'ḷ' 1358: {0x1E38, 0x1E39}, // 'Ḹ' => 'ḹ' 1355: {0x1E38, 0x1E39}, // 'Ḹ' => 'ḹ' 1352: {0x1E3A, 0x1E3B}, // 'Ḻ' => 'ḻ' 1349: {0x1E3A, 0x1E3B}, // 'Ḻ' => 'ḻ' 1346: {0x1E3C, 0x1E3D}, // 'Ḽ' => 'ḽ' 1343: {0x1E3C, 0x1E3D}, // 'Ḽ' => 'ḽ' 1340: {0x1E3E, 0x1E3F}, // 'Ḿ' => 'ḿ' 1337: {0x1E3E, 0x1E3F}, // 'Ḿ' => 'ḿ' 1334: {0x1E40, 0x1E41}, // 'Ṁ' => 'ṁ' 1331: {0x1E40, 0x1E41}, // 'Ṁ' => 'ṁ' 1328: {0x1E42, 0x1E43}, // 'Ṃ' => 'ṃ' 1325: {0x1E42, 0x1E43}, // 'Ṃ' => 'ṃ' 1322: {0x1E44, 0x1E45}, // 'Ṅ' => 'ṅ' 1319: {0x1E44, 0x1E45}, // 'Ṅ' => 'ṅ' 1316: {0x1E46, 0x1E47}, // 'Ṇ' => 'ṇ' 1313: {0x1E46, 0x1E47}, // 'Ṇ' => 'ṇ' 1310: {0x1E48, 0x1E49}, // 'Ṉ' => 'ṉ' 1307: {0x1E48, 0x1E49}, // 'Ṉ' => 'ṉ' 1304: {0x1E4A, 0x1E4B}, // 'Ṋ' => 'ṋ' 1301: {0x1E4A, 0x1E4B}, // 'Ṋ' => 'ṋ' 1298: {0x1E4C, 0x1E4D}, // 'Ṍ' => 'ṍ' 1295: {0x1E4C, 0x1E4D}, // 'Ṍ' => 'ṍ' 1292: {0x1E4E, 0x1E4F}, // 'Ṏ' => 'ṏ' 1289: {0x1E4E, 0x1E4F}, // 'Ṏ' => 'ṏ' 1286: {0x1E50, 0x1E51}, // 'Ṑ' => 'ṑ' 1283: {0x1E50, 0x1E51}, // 'Ṑ' => 'ṑ' 1280: {0x1E52, 0x1E53}, // 'Ṓ' => 'ṓ' 1277: {0x1E52, 0x1E53}, // 'Ṓ' => 'ṓ' 1274: {0x1E54, 0x1E55}, // 'Ṕ' => 'ṕ' 1271: {0x1E54, 0x1E55}, // 'Ṕ' => 'ṕ' 1268: {0x1E56, 0x1E57}, // 'Ṗ' => 'ṗ' 1265: {0x1E56, 0x1E57}, // 'Ṗ' => 'ṗ' 1262: {0x1E58, 0x1E59}, // 'Ṙ' => 'ṙ' 1259: {0x1E58, 0x1E59}, // 'Ṙ' => 'ṙ' 1256: {0x1E5A, 0x1E5B}, // 'Ṛ' => 'ṛ' 1253: {0x1E5A, 0x1E5B}, // 'Ṛ' => 'ṛ' 1250: {0x1E5C, 0x1E5D}, // 'Ṝ' => 'ṝ' 1247: {0x1E5C, 0x1E5D}, // 'Ṝ' => 'ṝ' 1244: {0x1E5E, 0x1E5F}, // 'Ṟ' => 'ṟ' 1241: {0x1E5E, 0x1E5F}, // 'Ṟ' => 'ṟ' 1238: {0x1E60, 0x1E61}, // 'Ṡ' => 'ṡ' 1235: {0x1E60, 0x1E61}, // 'Ṡ' => 'ṡ' 1232: {0x1E62, 0x1E63}, // 'Ṣ' => 'ṣ' 1229: {0x1E62, 0x1E63}, // 'Ṣ' => 'ṣ' 1226: {0x1E64, 0x1E65}, // 'Ṥ' => 'ṥ' 1223: {0x1E64, 0x1E65}, // 'Ṥ' => 'ṥ' 1220: {0x1E66, 0x1E67}, // 'Ṧ' => 'ṧ' 1217: {0x1E66, 0x1E67}, // 'Ṧ' => 'ṧ' 1214: {0x1E68, 0x1E69}, // 'Ṩ' => 'ṩ' 1211: {0x1E68, 0x1E69}, // 'Ṩ' => 'ṩ' 1208: {0x1E6A, 0x1E6B}, // 'Ṫ' => 'ṫ' 1205: {0x1E6A, 0x1E6B}, // 'Ṫ' => 'ṫ' 1202: {0x1E6C, 0x1E6D}, // 'Ṭ' => 'ṭ' 1199: {0x1E6C, 0x1E6D}, // 'Ṭ' => 'ṭ' 1196: {0x1E6E, 0x1E6F}, // 'Ṯ' => 'ṯ' 1193: {0x1E6E, 0x1E6F}, // 'Ṯ' => 'ṯ' 1190: {0x1E70, 0x1E71}, // 'Ṱ' => 'ṱ' 1187: {0x1E70, 0x1E71}, // 'Ṱ' => 'ṱ' 1184: {0x1E72, 0x1E73}, // 'Ṳ' => 'ṳ' 1181: {0x1E72, 0x1E73}, // 'Ṳ' => 'ṳ' 1178: {0x1E74, 0x1E75}, // 'Ṵ' => 'ṵ' 1175: {0x1E74, 0x1E75}, // 'Ṵ' => 'ṵ' 1172: {0x1E76, 0x1E77}, // 'Ṷ' => 'ṷ' 1169: {0x1E76, 0x1E77}, // 'Ṷ' => 'ṷ' 1166: {0x1E78, 0x1E79}, // 'Ṹ' => 'ṹ' 1163: {0x1E78, 0x1E79}, // 'Ṹ' => 'ṹ' 1160: {0x1E7A, 0x1E7B}, // 'Ṻ' => 'ṻ' 1157: {0x1E7A, 0x1E7B}, // 'Ṻ' => 'ṻ' 1154: {0x1E7C, 0x1E7D}, // 'Ṽ' => 'ṽ' 1151: {0x1E7C, 0x1E7D}, // 'Ṽ' => 'ṽ' 1148: {0x1E7E, 0x1E7F}, // 'Ṿ' => 'ṿ' 1145: {0x1E7E, 0x1E7F}, // 'Ṿ' => 'ṿ' 1142: {0x1E80, 0x1E81}, // 'Ẁ' => 'ẁ' 1139: {0x1E80, 0x1E81}, // 'Ẁ' => 'ẁ' 1136: {0x1E82, 0x1E83}, // 'Ẃ' => 'ẃ' 1133: {0x1E82, 0x1E83}, // 'Ẃ' => 'ẃ' 1130: {0x1E84, 0x1E85}, // 'Ẅ' => 'ẅ' 1127: {0x1E84, 0x1E85}, // 'Ẅ' => 'ẅ' 1124: {0x1E86, 0x1E87}, // 'Ẇ' => 'ẇ' 1121: {0x1E86, 0x1E87}, // 'Ẇ' => 'ẇ' 1118: {0x1E88, 0x1E89}, // 'Ẉ' => 'ẉ' 1115: {0x1E88, 0x1E89}, // 'Ẉ' => 'ẉ' 1112: {0x1E8A, 0x1E8B}, // 'Ẋ' => 'ẋ' 1109: {0x1E8A, 0x1E8B}, // 'Ẋ' => 'ẋ' 1106: {0x1E8C, 0x1E8D}, // 'Ẍ' => 'ẍ' 1103: {0x1E8C, 0x1E8D}, // 'Ẍ' => 'ẍ' 1100: {0x1E8E, 0x1E8F}, // 'Ẏ' => 'ẏ' 1097: {0x1E8E, 0x1E8F}, // 'Ẏ' => 'ẏ' 1094: {0x1E90, 0x1E91}, // 'Ẑ' => 'ẑ' 1091: {0x1E90, 0x1E91}, // 'Ẑ' => 'ẑ' 1088: {0x1E92, 0x1E93}, // 'Ẓ' => 'ẓ' 1085: {0x1E92, 0x1E93}, // 'Ẓ' => 'ẓ' 1082: {0x1E94, 0x1E95}, // 'Ẕ' => 'ẕ' 1079: {0x1E94, 0x1E95}, // 'Ẕ' => 'ẕ' 1061: {0x1E60, 0x1E9B}, // 'Ṡ' => 'ẛ' 1052: {0x1E9E, 0x00DF}, // 'ẞ' => 'ß' 1046: {0x1EA0, 0x1EA1}, // 'Ạ' => 'ạ' 1043: {0x1EA0, 0x1EA1}, // 'Ạ' => 'ạ' 1040: {0x1EA2, 0x1EA3}, // 'Ả' => 'ả' 1037: {0x1EA2, 0x1EA3}, // 'Ả' => 'ả' 1034: {0x1EA4, 0x1EA5}, // 'Ấ' => 'ấ' 1031: {0x1EA4, 0x1EA5}, // 'Ấ' => 'ấ' 1028: {0x1EA6, 0x1EA7}, // 'Ầ' => 'ầ' 1025: {0x1EA6, 0x1EA7}, // 'Ầ' => 'ầ' 1022: {0x1EA8, 0x1EA9}, // 'Ẩ' => 'ẩ' 1019: {0x1EA8, 0x1EA9}, // 'Ẩ' => 'ẩ' 1016: {0x1EAA, 0x1EAB}, // 'Ẫ' => 'ẫ' 1013: {0x1EAA, 0x1EAB}, // 'Ẫ' => 'ẫ' 1010: {0x1EAC, 0x1EAD}, // 'Ậ' => 'ậ' 1007: {0x1EAC, 0x1EAD}, // 'Ậ' => 'ậ' 1004: {0x1EAE, 0x1EAF}, // 'Ắ' => 'ắ' 1001: {0x1EAE, 0x1EAF}, // 'Ắ' => 'ắ' 998: {0x1EB0, 0x1EB1}, // 'Ằ' => 'ằ' 995: {0x1EB0, 0x1EB1}, // 'Ằ' => 'ằ' 992: {0x1EB2, 0x1EB3}, // 'Ẳ' => 'ẳ' 989: {0x1EB2, 0x1EB3}, // 'Ẳ' => 'ẳ' 986: {0x1EB4, 0x1EB5}, // 'Ẵ' => 'ẵ' 983: {0x1EB4, 0x1EB5}, // 'Ẵ' => 'ẵ' 980: {0x1EB6, 0x1EB7}, // 'Ặ' => 'ặ' 977: {0x1EB6, 0x1EB7}, // 'Ặ' => 'ặ' 974: {0x1EB8, 0x1EB9}, // 'Ẹ' => 'ẹ' 971: {0x1EB8, 0x1EB9}, // 'Ẹ' => 'ẹ' 968: {0x1EBA, 0x1EBB}, // 'Ẻ' => 'ẻ' 965: {0x1EBA, 0x1EBB}, // 'Ẻ' => 'ẻ' 962: {0x1EBC, 0x1EBD}, // 'Ẽ' => 'ẽ' 959: {0x1EBC, 0x1EBD}, // 'Ẽ' => 'ẽ' 956: {0x1EBE, 0x1EBF}, // 'Ế' => 'ế' 953: {0x1EBE, 0x1EBF}, // 'Ế' => 'ế' 950: {0x1EC0, 0x1EC1}, // 'Ề' => 'ề' 947: {0x1EC0, 0x1EC1}, // 'Ề' => 'ề' 944: {0x1EC2, 0x1EC3}, // 'Ể' => 'ể' 941: {0x1EC2, 0x1EC3}, // 'Ể' => 'ể' 938: {0x1EC4, 0x1EC5}, // 'Ễ' => 'ễ' 935: {0x1EC4, 0x1EC5}, // 'Ễ' => 'ễ' 932: {0x1EC6, 0x1EC7}, // 'Ệ' => 'ệ' 929: {0x1EC6, 0x1EC7}, // 'Ệ' => 'ệ' 926: {0x1EC8, 0x1EC9}, // 'Ỉ' => 'ỉ' 923: {0x1EC8, 0x1EC9}, // 'Ỉ' => 'ỉ' 920: {0x1ECA, 0x1ECB}, // 'Ị' => 'ị' 917: {0x1ECA, 0x1ECB}, // 'Ị' => 'ị' 914: {0x1ECC, 0x1ECD}, // 'Ọ' => 'ọ' 911: {0x1ECC, 0x1ECD}, // 'Ọ' => 'ọ' 908: {0x1ECE, 0x1ECF}, // 'Ỏ' => 'ỏ' 905: {0x1ECE, 0x1ECF}, // 'Ỏ' => 'ỏ' 902: {0x1ED0, 0x1ED1}, // 'Ố' => 'ố' 899: {0x1ED0, 0x1ED1}, // 'Ố' => 'ố' 896: {0x1ED2, 0x1ED3}, // 'Ồ' => 'ồ' 893: {0x1ED2, 0x1ED3}, // 'Ồ' => 'ồ' 890: {0x1ED4, 0x1ED5}, // 'Ổ' => 'ổ' 887: {0x1ED4, 0x1ED5}, // 'Ổ' => 'ổ' 884: {0x1ED6, 0x1ED7}, // 'Ỗ' => 'ỗ' 881: {0x1ED6, 0x1ED7}, // 'Ỗ' => 'ỗ' 878: {0x1ED8, 0x1ED9}, // 'Ộ' => 'ộ' 875: {0x1ED8, 0x1ED9}, // 'Ộ' => 'ộ' 872: {0x1EDA, 0x1EDB}, // 'Ớ' => 'ớ' 869: {0x1EDA, 0x1EDB}, // 'Ớ' => 'ớ' 866: {0x1EDC, 0x1EDD}, // 'Ờ' => 'ờ' 863: {0x1EDC, 0x1EDD}, // 'Ờ' => 'ờ' 860: {0x1EDE, 0x1EDF}, // 'Ở' => 'ở' 857: {0x1EDE, 0x1EDF}, // 'Ở' => 'ở' 854: {0x1EE0, 0x1EE1}, // 'Ỡ' => 'ỡ' 851: {0x1EE0, 0x1EE1}, // 'Ỡ' => 'ỡ' 848: {0x1EE2, 0x1EE3}, // 'Ợ' => 'ợ' 845: {0x1EE2, 0x1EE3}, // 'Ợ' => 'ợ' 842: {0x1EE4, 0x1EE5}, // 'Ụ' => 'ụ' 839: {0x1EE4, 0x1EE5}, // 'Ụ' => 'ụ' 836: {0x1EE6, 0x1EE7}, // 'Ủ' => 'ủ' 833: {0x1EE6, 0x1EE7}, // 'Ủ' => 'ủ' 830: {0x1EE8, 0x1EE9}, // 'Ứ' => 'ứ' 827: {0x1EE8, 0x1EE9}, // 'Ứ' => 'ứ' 824: {0x1EEA, 0x1EEB}, // 'Ừ' => 'ừ' 821: {0x1EEA, 0x1EEB}, // 'Ừ' => 'ừ' 818: {0x1EEC, 0x1EED}, // 'Ử' => 'ử' 815: {0x1EEC, 0x1EED}, // 'Ử' => 'ử' 812: {0x1EEE, 0x1EEF}, // 'Ữ' => 'ữ' 809: {0x1EEE, 0x1EEF}, // 'Ữ' => 'ữ' 806: {0x1EF0, 0x1EF1}, // 'Ự' => 'ự' 803: {0x1EF0, 0x1EF1}, // 'Ự' => 'ự' 800: {0x1EF2, 0x1EF3}, // 'Ỳ' => 'ỳ' 797: {0x1EF2, 0x1EF3}, // 'Ỳ' => 'ỳ' 794: {0x1EF4, 0x1EF5}, // 'Ỵ' => 'ỵ' 791: {0x1EF4, 0x1EF5}, // 'Ỵ' => 'ỵ' 788: {0x1EF6, 0x1EF7}, // 'Ỷ' => 'ỷ' 785: {0x1EF6, 0x1EF7}, // 'Ỷ' => 'ỷ' 782: {0x1EF8, 0x1EF9}, // 'Ỹ' => 'ỹ' 779: {0x1EF8, 0x1EF9}, // 'Ỹ' => 'ỹ' 776: {0x1EFA, 0x1EFB}, // 'Ỻ' => 'ỻ' 773: {0x1EFA, 0x1EFB}, // 'Ỻ' => 'ỻ' 770: {0x1EFC, 0x1EFD}, // 'Ỽ' => 'ỽ' 767: {0x1EFC, 0x1EFD}, // 'Ỽ' => 'ỽ' 764: {0x1EFE, 0x1EFF}, // 'Ỿ' => 'ỿ' 761: {0x1EFE, 0x1EFF}, // 'Ỿ' => 'ỿ' 758: {0x1F08, 0x1F00}, // 'Ἀ' => 'ἀ' 755: {0x1F09, 0x1F01}, // 'Ἁ' => 'ἁ' 752: {0x1F0A, 0x1F02}, // 'Ἂ' => 'ἂ' 749: {0x1F0B, 0x1F03}, // 'Ἃ' => 'ἃ' 746: {0x1F0C, 0x1F04}, // 'Ἄ' => 'ἄ' 743: {0x1F0D, 0x1F05}, // 'Ἅ' => 'ἅ' 740: {0x1F0E, 0x1F06}, // 'Ἆ' => 'ἆ' 737: {0x1F0F, 0x1F07}, // 'Ἇ' => 'ἇ' 734: {0x1F08, 0x1F00}, // 'Ἀ' => 'ἀ' 731: {0x1F09, 0x1F01}, // 'Ἁ' => 'ἁ' 728: {0x1F0A, 0x1F02}, // 'Ἂ' => 'ἂ' 725: {0x1F0B, 0x1F03}, // 'Ἃ' => 'ἃ' 722: {0x1F0C, 0x1F04}, // 'Ἄ' => 'ἄ' 719: {0x1F0D, 0x1F05}, // 'Ἅ' => 'ἅ' 716: {0x1F0E, 0x1F06}, // 'Ἆ' => 'ἆ' 713: {0x1F0F, 0x1F07}, // 'Ἇ' => 'ἇ' 710: {0x1F18, 0x1F10}, // 'Ἐ' => 'ἐ' 707: {0x1F19, 0x1F11}, // 'Ἑ' => 'ἑ' 704: {0x1F1A, 0x1F12}, // 'Ἒ' => 'ἒ' 701: {0x1F1B, 0x1F13}, // 'Ἓ' => 'ἓ' 698: {0x1F1C, 0x1F14}, // 'Ἔ' => 'ἔ' 695: {0x1F1D, 0x1F15}, // 'Ἕ' => 'ἕ' 686: {0x1F18, 0x1F10}, // 'Ἐ' => 'ἐ' 683: {0x1F19, 0x1F11}, // 'Ἑ' => 'ἑ' 680: {0x1F1A, 0x1F12}, // 'Ἒ' => 'ἒ' 677: {0x1F1B, 0x1F13}, // 'Ἓ' => 'ἓ' 674: {0x1F1C, 0x1F14}, // 'Ἔ' => 'ἔ' 671: {0x1F1D, 0x1F15}, // 'Ἕ' => 'ἕ' 662: {0x1F28, 0x1F20}, // 'Ἠ' => 'ἠ' 659: {0x1F29, 0x1F21}, // 'Ἡ' => 'ἡ' 656: {0x1F2A, 0x1F22}, // 'Ἢ' => 'ἢ' 653: {0x1F2B, 0x1F23}, // 'Ἣ' => 'ἣ' 650: {0x1F2C, 0x1F24}, // 'Ἤ' => 'ἤ' 647: {0x1F2D, 0x1F25}, // 'Ἥ' => 'ἥ' 644: {0x1F2E, 0x1F26}, // 'Ἦ' => 'ἦ' 641: {0x1F2F, 0x1F27}, // 'Ἧ' => 'ἧ' 638: {0x1F28, 0x1F20}, // 'Ἠ' => 'ἠ' 635: {0x1F29, 0x1F21}, // 'Ἡ' => 'ἡ' 632: {0x1F2A, 0x1F22}, // 'Ἢ' => 'ἢ' 629: {0x1F2B, 0x1F23}, // 'Ἣ' => 'ἣ' 626: {0x1F2C, 0x1F24}, // 'Ἤ' => 'ἤ' 623: {0x1F2D, 0x1F25}, // 'Ἥ' => 'ἥ' 620: {0x1F2E, 0x1F26}, // 'Ἦ' => 'ἦ' 617: {0x1F2F, 0x1F27}, // 'Ἧ' => 'ἧ' 614: {0x1F38, 0x1F30}, // 'Ἰ' => 'ἰ' 611: {0x1F39, 0x1F31}, // 'Ἱ' => 'ἱ' 608: {0x1F3A, 0x1F32}, // 'Ἲ' => 'ἲ' 605: {0x1F3B, 0x1F33}, // 'Ἳ' => 'ἳ' 602: {0x1F3C, 0x1F34}, // 'Ἴ' => 'ἴ' 599: {0x1F3D, 0x1F35}, // 'Ἵ' => 'ἵ' 596: {0x1F3E, 0x1F36}, // 'Ἶ' => 'ἶ' 593: {0x1F3F, 0x1F37}, // 'Ἷ' => 'ἷ' 590: {0x1F38, 0x1F30}, // 'Ἰ' => 'ἰ' 587: {0x1F39, 0x1F31}, // 'Ἱ' => 'ἱ' 584: {0x1F3A, 0x1F32}, // 'Ἲ' => 'ἲ' 581: {0x1F3B, 0x1F33}, // 'Ἳ' => 'ἳ' 578: {0x1F3C, 0x1F34}, // 'Ἴ' => 'ἴ' 575: {0x1F3D, 0x1F35}, // 'Ἵ' => 'ἵ' 572: {0x1F3E, 0x1F36}, // 'Ἶ' => 'ἶ' 569: {0x1F3F, 0x1F37}, // 'Ἷ' => 'ἷ' 566: {0x1F48, 0x1F40}, // 'Ὀ' => 'ὀ' 563: {0x1F49, 0x1F41}, // 'Ὁ' => 'ὁ' 560: {0x1F4A, 0x1F42}, // 'Ὂ' => 'ὂ' 557: {0x1F4B, 0x1F43}, // 'Ὃ' => 'ὃ' 554: {0x1F4C, 0x1F44}, // 'Ὄ' => 'ὄ' 551: {0x1F4D, 0x1F45}, // 'Ὅ' => 'ὅ' 542: {0x1F48, 0x1F40}, // 'Ὀ' => 'ὀ' 539: {0x1F49, 0x1F41}, // 'Ὁ' => 'ὁ' 536: {0x1F4A, 0x1F42}, // 'Ὂ' => 'ὂ' 533: {0x1F4B, 0x1F43}, // 'Ὃ' => 'ὃ' 530: {0x1F4C, 0x1F44}, // 'Ὄ' => 'ὄ' 527: {0x1F4D, 0x1F45}, // 'Ὅ' => 'ὅ' 515: {0x1F59, 0x1F51}, // 'Ὑ' => 'ὑ' 509: {0x1F5B, 0x1F53}, // 'Ὓ' => 'ὓ' 503: {0x1F5D, 0x1F55}, // 'Ὕ' => 'ὕ' 497: {0x1F5F, 0x1F57}, // 'Ὗ' => 'ὗ' 491: {0x1F59, 0x1F51}, // 'Ὑ' => 'ὑ' 485: {0x1F5B, 0x1F53}, // 'Ὓ' => 'ὓ' 479: {0x1F5D, 0x1F55}, // 'Ὕ' => 'ὕ' 473: {0x1F5F, 0x1F57}, // 'Ὗ' => 'ὗ' 470: {0x1F68, 0x1F60}, // 'Ὠ' => 'ὠ' 467: {0x1F69, 0x1F61}, // 'Ὡ' => 'ὡ' 464: {0x1F6A, 0x1F62}, // 'Ὢ' => 'ὢ' 461: {0x1F6B, 0x1F63}, // 'Ὣ' => 'ὣ' 458: {0x1F6C, 0x1F64}, // 'Ὤ' => 'ὤ' 455: {0x1F6D, 0x1F65}, // 'Ὥ' => 'ὥ' 452: {0x1F6E, 0x1F66}, // 'Ὦ' => 'ὦ' 449: {0x1F6F, 0x1F67}, // 'Ὧ' => 'ὧ' 446: {0x1F68, 0x1F60}, // 'Ὠ' => 'ὠ' 443: {0x1F69, 0x1F61}, // 'Ὡ' => 'ὡ' 440: {0x1F6A, 0x1F62}, // 'Ὢ' => 'ὢ' 437: {0x1F6B, 0x1F63}, // 'Ὣ' => 'ὣ' 434: {0x1F6C, 0x1F64}, // 'Ὤ' => 'ὤ' 431: {0x1F6D, 0x1F65}, // 'Ὥ' => 'ὥ' 428: {0x1F6E, 0x1F66}, // 'Ὦ' => 'ὦ' 425: {0x1F6F, 0x1F67}, // 'Ὧ' => 'ὧ' 422: {0x1FBA, 0x1F70}, // 'Ὰ' => 'ὰ' 419: {0x1FBB, 0x1F71}, // 'Ά' => 'ά' 416: {0x1FC8, 0x1F72}, // 'Ὲ' => 'ὲ' 413: {0x1FC9, 0x1F73}, // 'Έ' => 'έ' 410: {0x1FCA, 0x1F74}, // 'Ὴ' => 'ὴ' 407: {0x1FCB, 0x1F75}, // 'Ή' => 'ή' 404: {0x1FDA, 0x1F76}, // 'Ὶ' => 'ὶ' 401: {0x1FDB, 0x1F77}, // 'Ί' => 'ί' 398: {0x1FF8, 0x1F78}, // 'Ὸ' => 'ὸ' 395: {0x1FF9, 0x1F79}, // 'Ό' => 'ό' 392: {0x1FEA, 0x1F7A}, // 'Ὺ' => 'ὺ' 389: {0x1FEB, 0x1F7B}, // 'Ύ' => 'ύ' 386: {0x1FFA, 0x1F7C}, // 'Ὼ' => 'ὼ' 383: {0x1FFB, 0x1F7D}, // 'Ώ' => 'ώ' 374: {0x1F88, 0x1F80}, // 'ᾈ' => 'ᾀ' 371: {0x1F89, 0x1F81}, // 'ᾉ' => 'ᾁ' 368: {0x1F8A, 0x1F82}, // 'ᾊ' => 'ᾂ' 365: {0x1F8B, 0x1F83}, // 'ᾋ' => 'ᾃ' 362: {0x1F8C, 0x1F84}, // 'ᾌ' => 'ᾄ' 359: {0x1F8D, 0x1F85}, // 'ᾍ' => 'ᾅ' 356: {0x1F8E, 0x1F86}, // 'ᾎ' => 'ᾆ' 353: {0x1F8F, 0x1F87}, // 'ᾏ' => 'ᾇ' 350: {0x1F88, 0x1F80}, // 'ᾈ' => 'ᾀ' 347: {0x1F89, 0x1F81}, // 'ᾉ' => 'ᾁ' 344: {0x1F8A, 0x1F82}, // 'ᾊ' => 'ᾂ' 341: {0x1F8B, 0x1F83}, // 'ᾋ' => 'ᾃ' 338: {0x1F8C, 0x1F84}, // 'ᾌ' => 'ᾄ' 335: {0x1F8D, 0x1F85}, // 'ᾍ' => 'ᾅ' 332: {0x1F8E, 0x1F86}, // 'ᾎ' => 'ᾆ' 329: {0x1F8F, 0x1F87}, // 'ᾏ' => 'ᾇ' 326: {0x1F98, 0x1F90}, // 'ᾘ' => 'ᾐ' 323: {0x1F99, 0x1F91}, // 'ᾙ' => 'ᾑ' 320: {0x1F9A, 0x1F92}, // 'ᾚ' => 'ᾒ' 317: {0x1F9B, 0x1F93}, // 'ᾛ' => 'ᾓ' 314: {0x1F9C, 0x1F94}, // 'ᾜ' => 'ᾔ' 311: {0x1F9D, 0x1F95}, // 'ᾝ' => 'ᾕ' 308: {0x1F9E, 0x1F96}, // 'ᾞ' => 'ᾖ' 305: {0x1F9F, 0x1F97}, // 'ᾟ' => 'ᾗ' 302: {0x1F98, 0x1F90}, // 'ᾘ' => 'ᾐ' 299: {0x1F99, 0x1F91}, // 'ᾙ' => 'ᾑ' 296: {0x1F9A, 0x1F92}, // 'ᾚ' => 'ᾒ' 293: {0x1F9B, 0x1F93}, // 'ᾛ' => 'ᾓ' 290: {0x1F9C, 0x1F94}, // 'ᾜ' => 'ᾔ' 287: {0x1F9D, 0x1F95}, // 'ᾝ' => 'ᾕ' 284: {0x1F9E, 0x1F96}, // 'ᾞ' => 'ᾖ' 281: {0x1F9F, 0x1F97}, // 'ᾟ' => 'ᾗ' 278: {0x1FA8, 0x1FA0}, // 'ᾨ' => 'ᾠ' 275: {0x1FA9, 0x1FA1}, // 'ᾩ' => 'ᾡ' 272: {0x1FAA, 0x1FA2}, // 'ᾪ' => 'ᾢ' 269: {0x1FAB, 0x1FA3}, // 'ᾫ' => 'ᾣ' 266: {0x1FAC, 0x1FA4}, // 'ᾬ' => 'ᾤ' 263: {0x1FAD, 0x1FA5}, // 'ᾭ' => 'ᾥ' 260: {0x1FAE, 0x1FA6}, // 'ᾮ' => 'ᾦ' 257: {0x1FAF, 0x1FA7}, // 'ᾯ' => 'ᾧ' 254: {0x1FA8, 0x1FA0}, // 'ᾨ' => 'ᾠ' 251: {0x1FA9, 0x1FA1}, // 'ᾩ' => 'ᾡ' 248: {0x1FAA, 0x1FA2}, // 'ᾪ' => 'ᾢ' 245: {0x1FAB, 0x1FA3}, // 'ᾫ' => 'ᾣ' 242: {0x1FAC, 0x1FA4}, // 'ᾬ' => 'ᾤ' 239: {0x1FAD, 0x1FA5}, // 'ᾭ' => 'ᾥ' 236: {0x1FAE, 0x1FA6}, // 'ᾮ' => 'ᾦ' 233: {0x1FAF, 0x1FA7}, // 'ᾯ' => 'ᾧ' 230: {0x1FB8, 0x1FB0}, // 'Ᾰ' => 'ᾰ' 227: {0x1FB9, 0x1FB1}, // 'Ᾱ' => 'ᾱ' 221: {0x1FBC, 0x1FB3}, // 'ᾼ' => 'ᾳ' 206: {0x1FB8, 0x1FB0}, // 'Ᾰ' => 'ᾰ' 203: {0x1FB9, 0x1FB1}, // 'Ᾱ' => 'ᾱ' 200: {0x1FBA, 0x1F70}, // 'Ὰ' => 'ὰ' 197: {0x1FBB, 0x1F71}, // 'Ά' => 'ά' 194: {0x1FBC, 0x1FB3}, // 'ᾼ' => 'ᾳ' 188: {0x0399, 0x1FBE}, // 'Ι' => 'ι' 173: {0x1FCC, 0x1FC3}, // 'ῌ' => 'ῃ' 158: {0x1FC8, 0x1F72}, // 'Ὲ' => 'ὲ' 155: {0x1FC9, 0x1F73}, // 'Έ' => 'έ' 152: {0x1FCA, 0x1F74}, // 'Ὴ' => 'ὴ' 149: {0x1FCB, 0x1F75}, // 'Ή' => 'ή' 146: {0x1FCC, 0x1FC3}, // 'ῌ' => 'ῃ' 134: {0x1FD8, 0x1FD0}, // 'Ῐ' => 'ῐ' 131: {0x1FD9, 0x1FD1}, // 'Ῑ' => 'ῑ' 110: {0x1FD8, 0x1FD0}, // 'Ῐ' => 'ῐ' 107: {0x1FD9, 0x1FD1}, // 'Ῑ' => 'ῑ' 104: {0x1FDA, 0x1F76}, // 'Ὶ' => 'ὶ' 101: {0x1FDB, 0x1F77}, // 'Ί' => 'ί' 86: {0x1FE8, 0x1FE0}, // 'Ῠ' => 'ῠ' 83: {0x1FE9, 0x1FE1}, // 'Ῡ' => 'ῡ' 71: {0x1FEC, 0x1FE5}, // 'Ῥ' => 'ῥ' 62: {0x1FE8, 0x1FE0}, // 'Ῠ' => 'ῠ' 59: {0x1FE9, 0x1FE1}, // 'Ῡ' => 'ῡ' 56: {0x1FEA, 0x1F7A}, // 'Ὺ' => 'ὺ' 53: {0x1FEB, 0x1F7B}, // 'Ύ' => 'ύ' 50: {0x1FEC, 0x1FE5}, // 'Ῥ' => 'ῥ' 29: {0x1FFC, 0x1FF3}, // 'ῼ' => 'ῳ' 14: {0x1FF8, 0x1F78}, // 'Ὸ' => 'ὸ' 11: {0x1FF9, 0x1F79}, // 'Ό' => 'ό' 8: {0x1FFA, 0x1F7C}, // 'Ὼ' => 'ὼ' 5: {0x1FFB, 0x1F7D}, // 'Ώ' => 'ώ' 2: {0x1FFC, 0x1FF3}, // 'ῼ' => 'ῳ' 7299: {0x2126, 0x03C9}, // 'Ω' => 'ω' 7287: {0x212A, 0x006B}, // 'K' => 'k' 7284: {0x212B, 0x00E5}, // 'Å' => 'å' 7263: {0x2132, 0x214E}, // 'Ⅎ' => 'ⅎ' 7179: {0x2132, 0x214E}, // 'Ⅎ' => 'ⅎ' 7125: {0x2160, 0x2170}, // 'Ⅰ' => 'ⅰ' 7122: {0x2161, 0x2171}, // 'Ⅱ' => 'ⅱ' 7119: {0x2162, 0x2172}, // 'Ⅲ' => 'ⅲ' 7116: {0x2163, 0x2173}, // 'Ⅳ' => 'ⅳ' 7113: {0x2164, 0x2174}, // 'Ⅴ' => 'ⅴ' 7110: {0x2165, 0x2175}, // 'Ⅵ' => 'ⅵ' 7107: {0x2166, 0x2176}, // 'Ⅶ' => 'ⅶ' 7104: {0x2167, 0x2177}, // 'Ⅷ' => 'ⅷ' 7101: {0x2168, 0x2178}, // 'Ⅸ' => 'ⅸ' 7098: {0x2169, 0x2179}, // 'Ⅹ' => 'ⅹ' 7095: {0x216A, 0x217A}, // 'Ⅺ' => 'ⅺ' 7092: {0x216B, 0x217B}, // 'Ⅻ' => 'ⅻ' 7089: {0x216C, 0x217C}, // 'Ⅼ' => 'ⅼ' 7086: {0x216D, 0x217D}, // 'Ⅽ' => 'ⅽ' 7083: {0x216E, 0x217E}, // 'Ⅾ' => 'ⅾ' 7080: {0x216F, 0x217F}, // 'Ⅿ' => 'ⅿ' 7077: {0x2160, 0x2170}, // 'Ⅰ' => 'ⅰ' 7074: {0x2161, 0x2171}, // 'Ⅱ' => 'ⅱ' 7071: {0x2162, 0x2172}, // 'Ⅲ' => 'ⅲ' 7068: {0x2163, 0x2173}, // 'Ⅳ' => 'ⅳ' 7065: {0x2164, 0x2174}, // 'Ⅴ' => 'ⅴ' 7062: {0x2165, 0x2175}, // 'Ⅵ' => 'ⅵ' 7059: {0x2166, 0x2176}, // 'Ⅶ' => 'ⅶ' 7056: {0x2167, 0x2177}, // 'Ⅷ' => 'ⅷ' 7053: {0x2168, 0x2178}, // 'Ⅸ' => 'ⅸ' 7050: {0x2169, 0x2179}, // 'Ⅹ' => 'ⅹ' 7047: {0x216A, 0x217A}, // 'Ⅺ' => 'ⅺ' 7044: {0x216B, 0x217B}, // 'Ⅻ' => 'ⅻ' 7041: {0x216C, 0x217C}, // 'Ⅼ' => 'ⅼ' 7038: {0x216D, 0x217D}, // 'Ⅽ' => 'ⅽ' 7035: {0x216E, 0x217E}, // 'Ⅾ' => 'ⅾ' 7032: {0x216F, 0x217F}, // 'Ⅿ' => 'ⅿ' 7020: {0x2183, 0x2184}, // 'Ↄ' => 'ↄ' 7017: {0x2183, 0x2184}, // 'Ↄ' => 'ↄ' 4562: {0x24B6, 0x24D0}, // 'Ⓐ' => 'ⓐ' 4559: {0x24B7, 0x24D1}, // 'Ⓑ' => 'ⓑ' 4556: {0x24B8, 0x24D2}, // 'Ⓒ' => 'ⓒ' 4553: {0x24B9, 0x24D3}, // 'Ⓓ' => 'ⓓ' 4550: {0x24BA, 0x24D4}, // 'Ⓔ' => 'ⓔ' 4547: {0x24BB, 0x24D5}, // 'Ⓕ' => 'ⓕ' 4544: {0x24BC, 0x24D6}, // 'Ⓖ' => 'ⓖ' 4541: {0x24BD, 0x24D7}, // 'Ⓗ' => 'ⓗ' 4538: {0x24BE, 0x24D8}, // 'Ⓘ' => 'ⓘ' 4535: {0x24BF, 0x24D9}, // 'Ⓙ' => 'ⓙ' 4532: {0x24C0, 0x24DA}, // 'Ⓚ' => 'ⓚ' 4529: {0x24C1, 0x24DB}, // 'Ⓛ' => 'ⓛ' 4526: {0x24C2, 0x24DC}, // 'Ⓜ' => 'ⓜ' 4523: {0x24C3, 0x24DD}, // 'Ⓝ' => 'ⓝ' 4520: {0x24C4, 0x24DE}, // 'Ⓞ' => 'ⓞ' 4517: {0x24C5, 0x24DF}, // 'Ⓟ' => 'ⓟ' 4514: {0x24C6, 0x24E0}, // 'Ⓠ' => 'ⓠ' 4511: {0x24C7, 0x24E1}, // 'Ⓡ' => 'ⓡ' 4508: {0x24C8, 0x24E2}, // 'Ⓢ' => 'ⓢ' 4505: {0x24C9, 0x24E3}, // 'Ⓣ' => 'ⓣ' 4502: {0x24CA, 0x24E4}, // 'Ⓤ' => 'ⓤ' 4499: {0x24CB, 0x24E5}, // 'Ⓥ' => 'ⓥ' 4496: {0x24CC, 0x24E6}, // 'Ⓦ' => 'ⓦ' 4493: {0x24CD, 0x24E7}, // 'Ⓧ' => 'ⓧ' 4490: {0x24CE, 0x24E8}, // 'Ⓨ' => 'ⓨ' 4487: {0x24CF, 0x24E9}, // 'Ⓩ' => 'ⓩ' 4484: {0x24B6, 0x24D0}, // 'Ⓐ' => 'ⓐ' 4481: {0x24B7, 0x24D1}, // 'Ⓑ' => 'ⓑ' 4478: {0x24B8, 0x24D2}, // 'Ⓒ' => 'ⓒ' 4475: {0x24B9, 0x24D3}, // 'Ⓓ' => 'ⓓ' 4472: {0x24BA, 0x24D4}, // 'Ⓔ' => 'ⓔ' 4469: {0x24BB, 0x24D5}, // 'Ⓕ' => 'ⓕ' 4466: {0x24BC, 0x24D6}, // 'Ⓖ' => 'ⓖ' 4463: {0x24BD, 0x24D7}, // 'Ⓗ' => 'ⓗ' 4460: {0x24BE, 0x24D8}, // 'Ⓘ' => 'ⓘ' 4457: {0x24BF, 0x24D9}, // 'Ⓙ' => 'ⓙ' 4454: {0x24C0, 0x24DA}, // 'Ⓚ' => 'ⓚ' 4451: {0x24C1, 0x24DB}, // 'Ⓛ' => 'ⓛ' 4448: {0x24C2, 0x24DC}, // 'Ⓜ' => 'ⓜ' 4445: {0x24C3, 0x24DD}, // 'Ⓝ' => 'ⓝ' 4442: {0x24C4, 0x24DE}, // 'Ⓞ' => 'ⓞ' 4439: {0x24C5, 0x24DF}, // 'Ⓟ' => 'ⓟ' 4436: {0x24C6, 0x24E0}, // 'Ⓠ' => 'ⓠ' 4433: {0x24C7, 0x24E1}, // 'Ⓡ' => 'ⓡ' 4430: {0x24C8, 0x24E2}, // 'Ⓢ' => 'ⓢ' 4427: {0x24C9, 0x24E3}, // 'Ⓣ' => 'ⓣ' 4424: {0x24CA, 0x24E4}, // 'Ⓤ' => 'ⓤ' 4421: {0x24CB, 0x24E5}, // 'Ⓥ' => 'ⓥ' 4418: {0x24CC, 0x24E6}, // 'Ⓦ' => 'ⓦ' 4415: {0x24CD, 0x24E7}, // 'Ⓧ' => 'ⓧ' 4412: {0x24CE, 0x24E8}, // 'Ⓨ' => 'ⓨ' 4409: {0x24CF, 0x24E9}, // 'Ⓩ' => 'ⓩ' 7154: {0x2C00, 0x2C30}, // 'Ⰰ' => 'ⰰ' 7151: {0x2C01, 0x2C31}, // 'Ⰱ' => 'ⰱ' 7148: {0x2C02, 0x2C32}, // 'Ⰲ' => 'ⰲ' 7145: {0x2C03, 0x2C33}, // 'Ⰳ' => 'ⰳ' 7142: {0x2C04, 0x2C34}, // 'Ⰴ' => 'ⰴ' 7139: {0x2C05, 0x2C35}, // 'Ⰵ' => 'ⰵ' 7136: {0x2C06, 0x2C36}, // 'Ⰶ' => 'ⰶ' 7133: {0x2C07, 0x2C37}, // 'Ⰷ' => 'ⰷ' 7130: {0x2C08, 0x2C38}, // 'Ⰸ' => 'ⰸ' 7127: {0x2C09, 0x2C39}, // 'Ⰹ' => 'ⰹ' 7124: {0x2C0A, 0x2C3A}, // 'Ⰺ' => 'ⰺ' 7121: {0x2C0B, 0x2C3B}, // 'Ⰻ' => 'ⰻ' 7118: {0x2C0C, 0x2C3C}, // 'Ⰼ' => 'ⰼ' 7115: {0x2C0D, 0x2C3D}, // 'Ⰽ' => 'ⰽ' 7112: {0x2C0E, 0x2C3E}, // 'Ⰾ' => 'ⰾ' 7109: {0x2C0F, 0x2C3F}, // 'Ⰿ' => 'ⰿ' 7106: {0x2C10, 0x2C40}, // 'Ⱀ' => 'ⱀ' 7103: {0x2C11, 0x2C41}, // 'Ⱁ' => 'ⱁ' 7100: {0x2C12, 0x2C42}, // 'Ⱂ' => 'ⱂ' 7097: {0x2C13, 0x2C43}, // 'Ⱃ' => 'ⱃ' 7094: {0x2C14, 0x2C44}, // 'Ⱄ' => 'ⱄ' 7091: {0x2C15, 0x2C45}, // 'Ⱅ' => 'ⱅ' 7088: {0x2C16, 0x2C46}, // 'Ⱆ' => 'ⱆ' 7085: {0x2C17, 0x2C47}, // 'Ⱇ' => 'ⱇ' 7082: {0x2C18, 0x2C48}, // 'Ⱈ' => 'ⱈ' 7079: {0x2C19, 0x2C49}, // 'Ⱉ' => 'ⱉ' 7076: {0x2C1A, 0x2C4A}, // 'Ⱊ' => 'ⱊ' 7073: {0x2C1B, 0x2C4B}, // 'Ⱋ' => 'ⱋ' 7070: {0x2C1C, 0x2C4C}, // 'Ⱌ' => 'ⱌ' 7067: {0x2C1D, 0x2C4D}, // 'Ⱍ' => 'ⱍ' 7064: {0x2C1E, 0x2C4E}, // 'Ⱎ' => 'ⱎ' 7061: {0x2C1F, 0x2C4F}, // 'Ⱏ' => 'ⱏ' 7058: {0x2C20, 0x2C50}, // 'Ⱐ' => 'ⱐ' 7055: {0x2C21, 0x2C51}, // 'Ⱑ' => 'ⱑ' 7052: {0x2C22, 0x2C52}, // 'Ⱒ' => 'ⱒ' 7049: {0x2C23, 0x2C53}, // 'Ⱓ' => 'ⱓ' 7046: {0x2C24, 0x2C54}, // 'Ⱔ' => 'ⱔ' 7043: {0x2C25, 0x2C55}, // 'Ⱕ' => 'ⱕ' 7040: {0x2C26, 0x2C56}, // 'Ⱖ' => 'ⱖ' 7037: {0x2C27, 0x2C57}, // 'Ⱗ' => 'ⱗ' 7034: {0x2C28, 0x2C58}, // 'Ⱘ' => 'ⱘ' 7031: {0x2C29, 0x2C59}, // 'Ⱙ' => 'ⱙ' 7028: {0x2C2A, 0x2C5A}, // 'Ⱚ' => 'ⱚ' 7025: {0x2C2B, 0x2C5B}, // 'Ⱛ' => 'ⱛ' 7022: {0x2C2C, 0x2C5C}, // 'Ⱜ' => 'ⱜ' 7019: {0x2C2D, 0x2C5D}, // 'Ⱝ' => 'ⱝ' 7016: {0x2C2E, 0x2C5E}, // 'Ⱞ' => 'ⱞ' 7010: {0x2C00, 0x2C30}, // 'Ⰰ' => 'ⰰ' 7007: {0x2C01, 0x2C31}, // 'Ⰱ' => 'ⰱ' 7004: {0x2C02, 0x2C32}, // 'Ⰲ' => 'ⰲ' 7001: {0x2C03, 0x2C33}, // 'Ⰳ' => 'ⰳ' 6998: {0x2C04, 0x2C34}, // 'Ⰴ' => 'ⰴ' 6995: {0x2C05, 0x2C35}, // 'Ⰵ' => 'ⰵ' 6992: {0x2C06, 0x2C36}, // 'Ⰶ' => 'ⰶ' 6989: {0x2C07, 0x2C37}, // 'Ⰷ' => 'ⰷ' 6986: {0x2C08, 0x2C38}, // 'Ⰸ' => 'ⰸ' 6983: {0x2C09, 0x2C39}, // 'Ⰹ' => 'ⰹ' 6980: {0x2C0A, 0x2C3A}, // 'Ⰺ' => 'ⰺ' 6977: {0x2C0B, 0x2C3B}, // 'Ⰻ' => 'ⰻ' 6974: {0x2C0C, 0x2C3C}, // 'Ⰼ' => 'ⰼ' 6971: {0x2C0D, 0x2C3D}, // 'Ⰽ' => 'ⰽ' 6968: {0x2C0E, 0x2C3E}, // 'Ⰾ' => 'ⰾ' 6965: {0x2C0F, 0x2C3F}, // 'Ⰿ' => 'ⰿ' 6962: {0x2C10, 0x2C40}, // 'Ⱀ' => 'ⱀ' 6959: {0x2C11, 0x2C41}, // 'Ⱁ' => 'ⱁ' 6956: {0x2C12, 0x2C42}, // 'Ⱂ' => 'ⱂ' 6953: {0x2C13, 0x2C43}, // 'Ⱃ' => 'ⱃ' 6950: {0x2C14, 0x2C44}, // 'Ⱄ' => 'ⱄ' 6947: {0x2C15, 0x2C45}, // 'Ⱅ' => 'ⱅ' 6944: {0x2C16, 0x2C46}, // 'Ⱆ' => 'ⱆ' 6941: {0x2C17, 0x2C47}, // 'Ⱇ' => 'ⱇ' 6938: {0x2C18, 0x2C48}, // 'Ⱈ' => 'ⱈ' 6935: {0x2C19, 0x2C49}, // 'Ⱉ' => 'ⱉ' 6932: {0x2C1A, 0x2C4A}, // 'Ⱊ' => 'ⱊ' 6929: {0x2C1B, 0x2C4B}, // 'Ⱋ' => 'ⱋ' 6926: {0x2C1C, 0x2C4C}, // 'Ⱌ' => 'ⱌ' 6923: {0x2C1D, 0x2C4D}, // 'Ⱍ' => 'ⱍ' 6920: {0x2C1E, 0x2C4E}, // 'Ⱎ' => 'ⱎ' 6917: {0x2C1F, 0x2C4F}, // 'Ⱏ' => 'ⱏ' 6914: {0x2C20, 0x2C50}, // 'Ⱐ' => 'ⱐ' 6911: {0x2C21, 0x2C51}, // 'Ⱑ' => 'ⱑ' 6908: {0x2C22, 0x2C52}, // 'Ⱒ' => 'ⱒ' 6905: {0x2C23, 0x2C53}, // 'Ⱓ' => 'ⱓ' 6902: {0x2C24, 0x2C54}, // 'Ⱔ' => 'ⱔ' 6899: {0x2C25, 0x2C55}, // 'Ⱕ' => 'ⱕ' 6896: {0x2C26, 0x2C56}, // 'Ⱖ' => 'ⱖ' 6893: {0x2C27, 0x2C57}, // 'Ⱗ' => 'ⱗ' 6890: {0x2C28, 0x2C58}, // 'Ⱘ' => 'ⱘ' 6887: {0x2C29, 0x2C59}, // 'Ⱙ' => 'ⱙ' 6884: {0x2C2A, 0x2C5A}, // 'Ⱚ' => 'ⱚ' 6881: {0x2C2B, 0x2C5B}, // 'Ⱛ' => 'ⱛ' 6878: {0x2C2C, 0x2C5C}, // 'Ⱜ' => 'ⱜ' 6875: {0x2C2D, 0x2C5D}, // 'Ⱝ' => 'ⱝ' 6872: {0x2C2E, 0x2C5E}, // 'Ⱞ' => 'ⱞ' 6866: {0x2C60, 0x2C61}, // 'Ⱡ' => 'ⱡ' 6863: {0x2C60, 0x2C61}, // 'Ⱡ' => 'ⱡ' 6860: {0x2C62, 0x026B}, // 'Ɫ' => 'ɫ' 6857: {0x2C63, 0x1D7D}, // 'Ᵽ' => 'ᵽ' 6854: {0x2C64, 0x027D}, // 'Ɽ' => 'ɽ' 6851: {0x023A, 0x2C65}, // 'Ⱥ' => 'ⱥ' 6848: {0x023E, 0x2C66}, // 'Ⱦ' => 'ⱦ' 6845: {0x2C67, 0x2C68}, // 'Ⱨ' => 'ⱨ' 6842: {0x2C67, 0x2C68}, // 'Ⱨ' => 'ⱨ' 6839: {0x2C69, 0x2C6A}, // 'Ⱪ' => 'ⱪ' 6836: {0x2C69, 0x2C6A}, // 'Ⱪ' => 'ⱪ' 6833: {0x2C6B, 0x2C6C}, // 'Ⱬ' => 'ⱬ' 6830: {0x2C6B, 0x2C6C}, // 'Ⱬ' => 'ⱬ' 6827: {0x2C6D, 0x0251}, // 'Ɑ' => 'ɑ' 6824: {0x2C6E, 0x0271}, // 'Ɱ' => 'ɱ' 6821: {0x2C6F, 0x0250}, // 'Ɐ' => 'ɐ' 6818: {0x2C70, 0x0252}, // 'Ɒ' => 'ɒ' 6812: {0x2C72, 0x2C73}, // 'Ⱳ' => 'ⱳ' 6809: {0x2C72, 0x2C73}, // 'Ⱳ' => 'ⱳ' 6803: {0x2C75, 0x2C76}, // 'Ⱶ' => 'ⱶ' 6800: {0x2C75, 0x2C76}, // 'Ⱶ' => 'ⱶ' 6776: {0x2C7E, 0x023F}, // 'Ȿ' => 'ȿ' 6773: {0x2C7F, 0x0240}, // 'Ɀ' => 'ɀ' 6770: {0x2C80, 0x2C81}, // 'Ⲁ' => 'ⲁ' 6767: {0x2C80, 0x2C81}, // 'Ⲁ' => 'ⲁ' 6764: {0x2C82, 0x2C83}, // 'Ⲃ' => 'ⲃ' 6761: {0x2C82, 0x2C83}, // 'Ⲃ' => 'ⲃ' 6758: {0x2C84, 0x2C85}, // 'Ⲅ' => 'ⲅ' 6755: {0x2C84, 0x2C85}, // 'Ⲅ' => 'ⲅ' 6752: {0x2C86, 0x2C87}, // 'Ⲇ' => 'ⲇ' 6749: {0x2C86, 0x2C87}, // 'Ⲇ' => 'ⲇ' 6746: {0x2C88, 0x2C89}, // 'Ⲉ' => 'ⲉ' 6743: {0x2C88, 0x2C89}, // 'Ⲉ' => 'ⲉ' 6740: {0x2C8A, 0x2C8B}, // 'Ⲋ' => 'ⲋ' 6737: {0x2C8A, 0x2C8B}, // 'Ⲋ' => 'ⲋ' 6734: {0x2C8C, 0x2C8D}, // 'Ⲍ' => 'ⲍ' 6731: {0x2C8C, 0x2C8D}, // 'Ⲍ' => 'ⲍ' 6728: {0x2C8E, 0x2C8F}, // 'Ⲏ' => 'ⲏ' 6725: {0x2C8E, 0x2C8F}, // 'Ⲏ' => 'ⲏ' 6722: {0x2C90, 0x2C91}, // 'Ⲑ' => 'ⲑ' 6719: {0x2C90, 0x2C91}, // 'Ⲑ' => 'ⲑ' 6716: {0x2C92, 0x2C93}, // 'Ⲓ' => 'ⲓ' 6713: {0x2C92, 0x2C93}, // 'Ⲓ' => 'ⲓ' 6710: {0x2C94, 0x2C95}, // 'Ⲕ' => 'ⲕ' 6707: {0x2C94, 0x2C95}, // 'Ⲕ' => 'ⲕ' 6704: {0x2C96, 0x2C97}, // 'Ⲗ' => 'ⲗ' 6701: {0x2C96, 0x2C97}, // 'Ⲗ' => 'ⲗ' 6698: {0x2C98, 0x2C99}, // 'Ⲙ' => 'ⲙ' 6695: {0x2C98, 0x2C99}, // 'Ⲙ' => 'ⲙ' 6692: {0x2C9A, 0x2C9B}, // 'Ⲛ' => 'ⲛ' 6689: {0x2C9A, 0x2C9B}, // 'Ⲛ' => 'ⲛ' 6686: {0x2C9C, 0x2C9D}, // 'Ⲝ' => 'ⲝ' 6683: {0x2C9C, 0x2C9D}, // 'Ⲝ' => 'ⲝ' 6680: {0x2C9E, 0x2C9F}, // 'Ⲟ' => 'ⲟ' 6677: {0x2C9E, 0x2C9F}, // 'Ⲟ' => 'ⲟ' 6674: {0x2CA0, 0x2CA1}, // 'Ⲡ' => 'ⲡ' 6671: {0x2CA0, 0x2CA1}, // 'Ⲡ' => 'ⲡ' 6668: {0x2CA2, 0x2CA3}, // 'Ⲣ' => 'ⲣ' 6665: {0x2CA2, 0x2CA3}, // 'Ⲣ' => 'ⲣ' 6662: {0x2CA4, 0x2CA5}, // 'Ⲥ' => 'ⲥ' 6659: {0x2CA4, 0x2CA5}, // 'Ⲥ' => 'ⲥ' 6656: {0x2CA6, 0x2CA7}, // 'Ⲧ' => 'ⲧ' 6653: {0x2CA6, 0x2CA7}, // 'Ⲧ' => 'ⲧ' 6650: {0x2CA8, 0x2CA9}, // 'Ⲩ' => 'ⲩ' 6647: {0x2CA8, 0x2CA9}, // 'Ⲩ' => 'ⲩ' 6644: {0x2CAA, 0x2CAB}, // 'Ⲫ' => 'ⲫ' 6641: {0x2CAA, 0x2CAB}, // 'Ⲫ' => 'ⲫ' 6638: {0x2CAC, 0x2CAD}, // 'Ⲭ' => 'ⲭ' 6635: {0x2CAC, 0x2CAD}, // 'Ⲭ' => 'ⲭ' 6632: {0x2CAE, 0x2CAF}, // 'Ⲯ' => 'ⲯ' 6629: {0x2CAE, 0x2CAF}, // 'Ⲯ' => 'ⲯ' 6626: {0x2CB0, 0x2CB1}, // 'Ⲱ' => 'ⲱ' 6623: {0x2CB0, 0x2CB1}, // 'Ⲱ' => 'ⲱ' 6620: {0x2CB2, 0x2CB3}, // 'Ⲳ' => 'ⲳ' 6617: {0x2CB2, 0x2CB3}, // 'Ⲳ' => 'ⲳ' 6614: {0x2CB4, 0x2CB5}, // 'Ⲵ' => 'ⲵ' 6611: {0x2CB4, 0x2CB5}, // 'Ⲵ' => 'ⲵ' 6608: {0x2CB6, 0x2CB7}, // 'Ⲷ' => 'ⲷ' 6605: {0x2CB6, 0x2CB7}, // 'Ⲷ' => 'ⲷ' 6602: {0x2CB8, 0x2CB9}, // 'Ⲹ' => 'ⲹ' 6599: {0x2CB8, 0x2CB9}, // 'Ⲹ' => 'ⲹ' 6596: {0x2CBA, 0x2CBB}, // 'Ⲻ' => 'ⲻ' 6593: {0x2CBA, 0x2CBB}, // 'Ⲻ' => 'ⲻ' 6590: {0x2CBC, 0x2CBD}, // 'Ⲽ' => 'ⲽ' 6587: {0x2CBC, 0x2CBD}, // 'Ⲽ' => 'ⲽ' 6584: {0x2CBE, 0x2CBF}, // 'Ⲿ' => 'ⲿ' 6581: {0x2CBE, 0x2CBF}, // 'Ⲿ' => 'ⲿ' 6578: {0x2CC0, 0x2CC1}, // 'Ⳁ' => 'ⳁ' 6575: {0x2CC0, 0x2CC1}, // 'Ⳁ' => 'ⳁ' 6572: {0x2CC2, 0x2CC3}, // 'Ⳃ' => 'ⳃ' 6569: {0x2CC2, 0x2CC3}, // 'Ⳃ' => 'ⳃ' 6566: {0x2CC4, 0x2CC5}, // 'Ⳅ' => 'ⳅ' 6563: {0x2CC4, 0x2CC5}, // 'Ⳅ' => 'ⳅ' 6560: {0x2CC6, 0x2CC7}, // 'Ⳇ' => 'ⳇ' 6557: {0x2CC6, 0x2CC7}, // 'Ⳇ' => 'ⳇ' 6554: {0x2CC8, 0x2CC9}, // 'Ⳉ' => 'ⳉ' 6551: {0x2CC8, 0x2CC9}, // 'Ⳉ' => 'ⳉ' 6548: {0x2CCA, 0x2CCB}, // 'Ⳋ' => 'ⳋ' 6545: {0x2CCA, 0x2CCB}, // 'Ⳋ' => 'ⳋ' 6542: {0x2CCC, 0x2CCD}, // 'Ⳍ' => 'ⳍ' 6539: {0x2CCC, 0x2CCD}, // 'Ⳍ' => 'ⳍ' 6536: {0x2CCE, 0x2CCF}, // 'Ⳏ' => 'ⳏ' 6533: {0x2CCE, 0x2CCF}, // 'Ⳏ' => 'ⳏ' 6530: {0x2CD0, 0x2CD1}, // 'Ⳑ' => 'ⳑ' 6527: {0x2CD0, 0x2CD1}, // 'Ⳑ' => 'ⳑ' 6524: {0x2CD2, 0x2CD3}, // 'Ⳓ' => 'ⳓ' 6521: {0x2CD2, 0x2CD3}, // 'Ⳓ' => 'ⳓ' 6518: {0x2CD4, 0x2CD5}, // 'Ⳕ' => 'ⳕ' 6515: {0x2CD4, 0x2CD5}, // 'Ⳕ' => 'ⳕ' 6512: {0x2CD6, 0x2CD7}, // 'Ⳗ' => 'ⳗ' 6509: {0x2CD6, 0x2CD7}, // 'Ⳗ' => 'ⳗ' 6506: {0x2CD8, 0x2CD9}, // 'Ⳙ' => 'ⳙ' 6503: {0x2CD8, 0x2CD9}, // 'Ⳙ' => 'ⳙ' 6500: {0x2CDA, 0x2CDB}, // 'Ⳛ' => 'ⳛ' 6497: {0x2CDA, 0x2CDB}, // 'Ⳛ' => 'ⳛ' 6494: {0x2CDC, 0x2CDD}, // 'Ⳝ' => 'ⳝ' 6491: {0x2CDC, 0x2CDD}, // 'Ⳝ' => 'ⳝ' 6488: {0x2CDE, 0x2CDF}, // 'Ⳟ' => 'ⳟ' 6485: {0x2CDE, 0x2CDF}, // 'Ⳟ' => 'ⳟ' 6482: {0x2CE0, 0x2CE1}, // 'Ⳡ' => 'ⳡ' 6479: {0x2CE0, 0x2CE1}, // 'Ⳡ' => 'ⳡ' 6476: {0x2CE2, 0x2CE3}, // 'Ⳣ' => 'ⳣ' 6473: {0x2CE2, 0x2CE3}, // 'Ⳣ' => 'ⳣ' 6449: {0x2CEB, 0x2CEC}, // 'Ⳬ' => 'ⳬ' 6446: {0x2CEB, 0x2CEC}, // 'Ⳬ' => 'ⳬ' 6443: {0x2CED, 0x2CEE}, // 'Ⳮ' => 'ⳮ' 6440: {0x2CED, 0x2CEE}, // 'Ⳮ' => 'ⳮ' 6428: {0x2CF2, 0x2CF3}, // 'Ⳳ' => 'ⳳ' 6425: {0x2CF2, 0x2CF3}, // 'Ⳳ' => 'ⳳ' 6386: {0x10A0, 0x2D00}, // 'Ⴀ' => 'ⴀ' 6383: {0x10A1, 0x2D01}, // 'Ⴁ' => 'ⴁ' 6380: {0x10A2, 0x2D02}, // 'Ⴂ' => 'ⴂ' 6377: {0x10A3, 0x2D03}, // 'Ⴃ' => 'ⴃ' 6374: {0x10A4, 0x2D04}, // 'Ⴄ' => 'ⴄ' 6371: {0x10A5, 0x2D05}, // 'Ⴅ' => 'ⴅ' 6368: {0x10A6, 0x2D06}, // 'Ⴆ' => 'ⴆ' 6365: {0x10A7, 0x2D07}, // 'Ⴇ' => 'ⴇ' 6362: {0x10A8, 0x2D08}, // 'Ⴈ' => 'ⴈ' 6359: {0x10A9, 0x2D09}, // 'Ⴉ' => 'ⴉ' 6356: {0x10AA, 0x2D0A}, // 'Ⴊ' => 'ⴊ' 6353: {0x10AB, 0x2D0B}, // 'Ⴋ' => 'ⴋ' 6350: {0x10AC, 0x2D0C}, // 'Ⴌ' => 'ⴌ' 6347: {0x10AD, 0x2D0D}, // 'Ⴍ' => 'ⴍ' 6344: {0x10AE, 0x2D0E}, // 'Ⴎ' => 'ⴎ' 6341: {0x10AF, 0x2D0F}, // 'Ⴏ' => 'ⴏ' 6338: {0x10B0, 0x2D10}, // 'Ⴐ' => 'ⴐ' 6335: {0x10B1, 0x2D11}, // 'Ⴑ' => 'ⴑ' 6332: {0x10B2, 0x2D12}, // 'Ⴒ' => 'ⴒ' 6329: {0x10B3, 0x2D13}, // 'Ⴓ' => 'ⴓ' 6326: {0x10B4, 0x2D14}, // 'Ⴔ' => 'ⴔ' 6323: {0x10B5, 0x2D15}, // 'Ⴕ' => 'ⴕ' 6320: {0x10B6, 0x2D16}, // 'Ⴖ' => 'ⴖ' 6317: {0x10B7, 0x2D17}, // 'Ⴗ' => 'ⴗ' 6314: {0x10B8, 0x2D18}, // 'Ⴘ' => 'ⴘ' 6311: {0x10B9, 0x2D19}, // 'Ⴙ' => 'ⴙ' 6308: {0x10BA, 0x2D1A}, // 'Ⴚ' => 'ⴚ' 6305: {0x10BB, 0x2D1B}, // 'Ⴛ' => 'ⴛ' 6302: {0x10BC, 0x2D1C}, // 'Ⴜ' => 'ⴜ' 6299: {0x10BD, 0x2D1D}, // 'Ⴝ' => 'ⴝ' 6296: {0x10BE, 0x2D1E}, // 'Ⴞ' => 'ⴞ' 6293: {0x10BF, 0x2D1F}, // 'Ⴟ' => 'ⴟ' 6290: {0x10C0, 0x2D20}, // 'Ⴠ' => 'ⴠ' 6287: {0x10C1, 0x2D21}, // 'Ⴡ' => 'ⴡ' 6284: {0x10C2, 0x2D22}, // 'Ⴢ' => 'ⴢ' 6281: {0x10C3, 0x2D23}, // 'Ⴣ' => 'ⴣ' 6278: {0x10C4, 0x2D24}, // 'Ⴤ' => 'ⴤ' 6275: {0x10C5, 0x2D25}, // 'Ⴥ' => 'ⴥ' 6269: {0x10C7, 0x2D27}, // 'Ⴧ' => 'ⴧ' 6251: {0x10CD, 0x2D2D}, // 'Ⴭ' => 'ⴭ' 3341: {0xA640, 0xA641}, // 'Ꙁ' => 'ꙁ' 3338: {0xA640, 0xA641}, // 'Ꙁ' => 'ꙁ' 3335: {0xA642, 0xA643}, // 'Ꙃ' => 'ꙃ' 3332: {0xA642, 0xA643}, // 'Ꙃ' => 'ꙃ' 3329: {0xA644, 0xA645}, // 'Ꙅ' => 'ꙅ' 3326: {0xA644, 0xA645}, // 'Ꙅ' => 'ꙅ' 3323: {0xA646, 0xA647}, // 'Ꙇ' => 'ꙇ' 3320: {0xA646, 0xA647}, // 'Ꙇ' => 'ꙇ' 3317: {0xA648, 0xA649}, // 'Ꙉ' => 'ꙉ' 3314: {0xA648, 0xA649}, // 'Ꙉ' => 'ꙉ' 3311: {0xA64A, 0xA64B}, // 'Ꙋ' => 'ꙋ' 3308: {0xA64A, 0xA64B}, // 'Ꙋ' => 'ꙋ' 3305: {0xA64C, 0xA64D}, // 'Ꙍ' => 'ꙍ' 3302: {0xA64C, 0xA64D}, // 'Ꙍ' => 'ꙍ' 3299: {0xA64E, 0xA64F}, // 'Ꙏ' => 'ꙏ' 3296: {0xA64E, 0xA64F}, // 'Ꙏ' => 'ꙏ' 3293: {0xA650, 0xA651}, // 'Ꙑ' => 'ꙑ' 3290: {0xA650, 0xA651}, // 'Ꙑ' => 'ꙑ' 3287: {0xA652, 0xA653}, // 'Ꙓ' => 'ꙓ' 3284: {0xA652, 0xA653}, // 'Ꙓ' => 'ꙓ' 3281: {0xA654, 0xA655}, // 'Ꙕ' => 'ꙕ' 3278: {0xA654, 0xA655}, // 'Ꙕ' => 'ꙕ' 3275: {0xA656, 0xA657}, // 'Ꙗ' => 'ꙗ' 3272: {0xA656, 0xA657}, // 'Ꙗ' => 'ꙗ' 3269: {0xA658, 0xA659}, // 'Ꙙ' => 'ꙙ' 3266: {0xA658, 0xA659}, // 'Ꙙ' => 'ꙙ' 3263: {0xA65A, 0xA65B}, // 'Ꙛ' => 'ꙛ' 3260: {0xA65A, 0xA65B}, // 'Ꙛ' => 'ꙛ' 3257: {0xA65C, 0xA65D}, // 'Ꙝ' => 'ꙝ' 3254: {0xA65C, 0xA65D}, // 'Ꙝ' => 'ꙝ' 3251: {0xA65E, 0xA65F}, // 'Ꙟ' => 'ꙟ' 3248: {0xA65E, 0xA65F}, // 'Ꙟ' => 'ꙟ' 3245: {0xA660, 0xA661}, // 'Ꙡ' => 'ꙡ' 3242: {0xA660, 0xA661}, // 'Ꙡ' => 'ꙡ' 3239: {0xA662, 0xA663}, // 'Ꙣ' => 'ꙣ' 3236: {0xA662, 0xA663}, // 'Ꙣ' => 'ꙣ' 3233: {0xA664, 0xA665}, // 'Ꙥ' => 'ꙥ' 3230: {0xA664, 0xA665}, // 'Ꙥ' => 'ꙥ' 3227: {0xA666, 0xA667}, // 'Ꙧ' => 'ꙧ' 3224: {0xA666, 0xA667}, // 'Ꙧ' => 'ꙧ' 3221: {0xA668, 0xA669}, // 'Ꙩ' => 'ꙩ' 3218: {0xA668, 0xA669}, // 'Ꙩ' => 'ꙩ' 3215: {0xA66A, 0xA66B}, // 'Ꙫ' => 'ꙫ' 3212: {0xA66A, 0xA66B}, // 'Ꙫ' => 'ꙫ' 3209: {0xA66C, 0xA66D}, // 'Ꙭ' => 'ꙭ' 3206: {0xA66C, 0xA66D}, // 'Ꙭ' => 'ꙭ' 3149: {0xA680, 0xA681}, // 'Ꚁ' => 'ꚁ' 3146: {0xA680, 0xA681}, // 'Ꚁ' => 'ꚁ' 3143: {0xA682, 0xA683}, // 'Ꚃ' => 'ꚃ' 3140: {0xA682, 0xA683}, // 'Ꚃ' => 'ꚃ' 3137: {0xA684, 0xA685}, // 'Ꚅ' => 'ꚅ' 3134: {0xA684, 0xA685}, // 'Ꚅ' => 'ꚅ' 3131: {0xA686, 0xA687}, // 'Ꚇ' => 'ꚇ' 3128: {0xA686, 0xA687}, // 'Ꚇ' => 'ꚇ' 3125: {0xA688, 0xA689}, // 'Ꚉ' => 'ꚉ' 3122: {0xA688, 0xA689}, // 'Ꚉ' => 'ꚉ' 3119: {0xA68A, 0xA68B}, // 'Ꚋ' => 'ꚋ' 3116: {0xA68A, 0xA68B}, // 'Ꚋ' => 'ꚋ' 3113: {0xA68C, 0xA68D}, // 'Ꚍ' => 'ꚍ' 3110: {0xA68C, 0xA68D}, // 'Ꚍ' => 'ꚍ' 3107: {0xA68E, 0xA68F}, // 'Ꚏ' => 'ꚏ' 3104: {0xA68E, 0xA68F}, // 'Ꚏ' => 'ꚏ' 3101: {0xA690, 0xA691}, // 'Ꚑ' => 'ꚑ' 3098: {0xA690, 0xA691}, // 'Ꚑ' => 'ꚑ' 3095: {0xA692, 0xA693}, // 'Ꚓ' => 'ꚓ' 3092: {0xA692, 0xA693}, // 'Ꚓ' => 'ꚓ' 3089: {0xA694, 0xA695}, // 'Ꚕ' => 'ꚕ' 3086: {0xA694, 0xA695}, // 'Ꚕ' => 'ꚕ' 3083: {0xA696, 0xA697}, // 'Ꚗ' => 'ꚗ' 3080: {0xA696, 0xA697}, // 'Ꚗ' => 'ꚗ' 3077: {0xA698, 0xA699}, // 'Ꚙ' => 'ꚙ' 3074: {0xA698, 0xA699}, // 'Ꚙ' => 'ꚙ' 3071: {0xA69A, 0xA69B}, // 'Ꚛ' => 'ꚛ' 3068: {0xA69A, 0xA69B}, // 'Ꚛ' => 'ꚛ' 2663: {0xA722, 0xA723}, // 'Ꜣ' => 'ꜣ' 2660: {0xA722, 0xA723}, // 'Ꜣ' => 'ꜣ' 2657: {0xA724, 0xA725}, // 'Ꜥ' => 'ꜥ' 2654: {0xA724, 0xA725}, // 'Ꜥ' => 'ꜥ' 2651: {0xA726, 0xA727}, // 'Ꜧ' => 'ꜧ' 2648: {0xA726, 0xA727}, // 'Ꜧ' => 'ꜧ' 2645: {0xA728, 0xA729}, // 'Ꜩ' => 'ꜩ' 2642: {0xA728, 0xA729}, // 'Ꜩ' => 'ꜩ' 2639: {0xA72A, 0xA72B}, // 'Ꜫ' => 'ꜫ' 2636: {0xA72A, 0xA72B}, // 'Ꜫ' => 'ꜫ' 2633: {0xA72C, 0xA72D}, // 'Ꜭ' => 'ꜭ' 2630: {0xA72C, 0xA72D}, // 'Ꜭ' => 'ꜭ' 2627: {0xA72E, 0xA72F}, // 'Ꜯ' => 'ꜯ' 2624: {0xA72E, 0xA72F}, // 'Ꜯ' => 'ꜯ' 2615: {0xA732, 0xA733}, // 'Ꜳ' => 'ꜳ' 2612: {0xA732, 0xA733}, // 'Ꜳ' => 'ꜳ' 2609: {0xA734, 0xA735}, // 'Ꜵ' => 'ꜵ' 2606: {0xA734, 0xA735}, // 'Ꜵ' => 'ꜵ' 2603: {0xA736, 0xA737}, // 'Ꜷ' => 'ꜷ' 2600: {0xA736, 0xA737}, // 'Ꜷ' => 'ꜷ' 2597: {0xA738, 0xA739}, // 'Ꜹ' => 'ꜹ' 2594: {0xA738, 0xA739}, // 'Ꜹ' => 'ꜹ' 2591: {0xA73A, 0xA73B}, // 'Ꜻ' => 'ꜻ' 2588: {0xA73A, 0xA73B}, // 'Ꜻ' => 'ꜻ' 2585: {0xA73C, 0xA73D}, // 'Ꜽ' => 'ꜽ' 2582: {0xA73C, 0xA73D}, // 'Ꜽ' => 'ꜽ' 2579: {0xA73E, 0xA73F}, // 'Ꜿ' => 'ꜿ' 2576: {0xA73E, 0xA73F}, // 'Ꜿ' => 'ꜿ' 2573: {0xA740, 0xA741}, // 'Ꝁ' => 'ꝁ' 2570: {0xA740, 0xA741}, // 'Ꝁ' => 'ꝁ' 2567: {0xA742, 0xA743}, // 'Ꝃ' => 'ꝃ' 2564: {0xA742, 0xA743}, // 'Ꝃ' => 'ꝃ' 2561: {0xA744, 0xA745}, // 'Ꝅ' => 'ꝅ' 2558: {0xA744, 0xA745}, // 'Ꝅ' => 'ꝅ' 2555: {0xA746, 0xA747}, // 'Ꝇ' => 'ꝇ' 2552: {0xA746, 0xA747}, // 'Ꝇ' => 'ꝇ' 2549: {0xA748, 0xA749}, // 'Ꝉ' => 'ꝉ' 2546: {0xA748, 0xA749}, // 'Ꝉ' => 'ꝉ' 2543: {0xA74A, 0xA74B}, // 'Ꝋ' => 'ꝋ' 2540: {0xA74A, 0xA74B}, // 'Ꝋ' => 'ꝋ' 2537: {0xA74C, 0xA74D}, // 'Ꝍ' => 'ꝍ' 2534: {0xA74C, 0xA74D}, // 'Ꝍ' => 'ꝍ' 2531: {0xA74E, 0xA74F}, // 'Ꝏ' => 'ꝏ' 2528: {0xA74E, 0xA74F}, // 'Ꝏ' => 'ꝏ' 2525: {0xA750, 0xA751}, // 'Ꝑ' => 'ꝑ' 2522: {0xA750, 0xA751}, // 'Ꝑ' => 'ꝑ' 2519: {0xA752, 0xA753}, // 'Ꝓ' => 'ꝓ' 2516: {0xA752, 0xA753}, // 'Ꝓ' => 'ꝓ' 2513: {0xA754, 0xA755}, // 'Ꝕ' => 'ꝕ' 2510: {0xA754, 0xA755}, // 'Ꝕ' => 'ꝕ' 2507: {0xA756, 0xA757}, // 'Ꝗ' => 'ꝗ' 2504: {0xA756, 0xA757}, // 'Ꝗ' => 'ꝗ' 2501: {0xA758, 0xA759}, // 'Ꝙ' => 'ꝙ' 2498: {0xA758, 0xA759}, // 'Ꝙ' => 'ꝙ' 2495: {0xA75A, 0xA75B}, // 'Ꝛ' => 'ꝛ' 2492: {0xA75A, 0xA75B}, // 'Ꝛ' => 'ꝛ' 2489: {0xA75C, 0xA75D}, // 'Ꝝ' => 'ꝝ' 2486: {0xA75C, 0xA75D}, // 'Ꝝ' => 'ꝝ' 2483: {0xA75E, 0xA75F}, // 'Ꝟ' => 'ꝟ' 2480: {0xA75E, 0xA75F}, // 'Ꝟ' => 'ꝟ' 2477: {0xA760, 0xA761}, // 'Ꝡ' => 'ꝡ' 2474: {0xA760, 0xA761}, // 'Ꝡ' => 'ꝡ' 2471: {0xA762, 0xA763}, // 'Ꝣ' => 'ꝣ' 2468: {0xA762, 0xA763}, // 'Ꝣ' => 'ꝣ' 2465: {0xA764, 0xA765}, // 'Ꝥ' => 'ꝥ' 2462: {0xA764, 0xA765}, // 'Ꝥ' => 'ꝥ' 2459: {0xA766, 0xA767}, // 'Ꝧ' => 'ꝧ' 2456: {0xA766, 0xA767}, // 'Ꝧ' => 'ꝧ' 2453: {0xA768, 0xA769}, // 'Ꝩ' => 'ꝩ' 2450: {0xA768, 0xA769}, // 'Ꝩ' => 'ꝩ' 2447: {0xA76A, 0xA76B}, // 'Ꝫ' => 'ꝫ' 2444: {0xA76A, 0xA76B}, // 'Ꝫ' => 'ꝫ' 2441: {0xA76C, 0xA76D}, // 'Ꝭ' => 'ꝭ' 2438: {0xA76C, 0xA76D}, // 'Ꝭ' => 'ꝭ' 2435: {0xA76E, 0xA76F}, // 'Ꝯ' => 'ꝯ' 2432: {0xA76E, 0xA76F}, // 'Ꝯ' => 'ꝯ' 2402: {0xA779, 0xA77A}, // 'Ꝺ' => 'ꝺ' 2399: {0xA779, 0xA77A}, // 'Ꝺ' => 'ꝺ' 2396: {0xA77B, 0xA77C}, // 'Ꝼ' => 'ꝼ' 2393: {0xA77B, 0xA77C}, // 'Ꝼ' => 'ꝼ' 2390: {0xA77D, 0x1D79}, // 'Ᵹ' => 'ᵹ' 2387: {0xA77E, 0xA77F}, // 'Ꝿ' => 'ꝿ' 2384: {0xA77E, 0xA77F}, // 'Ꝿ' => 'ꝿ' 2381: {0xA780, 0xA781}, // 'Ꞁ' => 'ꞁ' 2378: {0xA780, 0xA781}, // 'Ꞁ' => 'ꞁ' 2375: {0xA782, 0xA783}, // 'Ꞃ' => 'ꞃ' 2372: {0xA782, 0xA783}, // 'Ꞃ' => 'ꞃ' 2369: {0xA784, 0xA785}, // 'Ꞅ' => 'ꞅ' 2366: {0xA784, 0xA785}, // 'Ꞅ' => 'ꞅ' 2363: {0xA786, 0xA787}, // 'Ꞇ' => 'ꞇ' 2360: {0xA786, 0xA787}, // 'Ꞇ' => 'ꞇ' 2348: {0xA78B, 0xA78C}, // 'Ꞌ' => 'ꞌ' 2345: {0xA78B, 0xA78C}, // 'Ꞌ' => 'ꞌ' 2342: {0xA78D, 0x0265}, // 'Ɥ' => 'ɥ' 2333: {0xA790, 0xA791}, // 'Ꞑ' => 'ꞑ' 2330: {0xA790, 0xA791}, // 'Ꞑ' => 'ꞑ' 2327: {0xA792, 0xA793}, // 'Ꞓ' => 'ꞓ' 2324: {0xA792, 0xA793}, // 'Ꞓ' => 'ꞓ' 2321: {0xA7C4, 0xA794}, // 'Ꞔ' => 'ꞔ' 2315: {0xA796, 0xA797}, // 'Ꞗ' => 'ꞗ' 2312: {0xA796, 0xA797}, // 'Ꞗ' => 'ꞗ' 2309: {0xA798, 0xA799}, // 'Ꞙ' => 'ꞙ' 2306: {0xA798, 0xA799}, // 'Ꞙ' => 'ꞙ' 2303: {0xA79A, 0xA79B}, // 'Ꞛ' => 'ꞛ' 2300: {0xA79A, 0xA79B}, // 'Ꞛ' => 'ꞛ' 2297: {0xA79C, 0xA79D}, // 'Ꞝ' => 'ꞝ' 2294: {0xA79C, 0xA79D}, // 'Ꞝ' => 'ꞝ' 2291: {0xA79E, 0xA79F}, // 'Ꞟ' => 'ꞟ' 2288: {0xA79E, 0xA79F}, // 'Ꞟ' => 'ꞟ' 2285: {0xA7A0, 0xA7A1}, // 'Ꞡ' => 'ꞡ' 2282: {0xA7A0, 0xA7A1}, // 'Ꞡ' => 'ꞡ' 2279: {0xA7A2, 0xA7A3}, // 'Ꞣ' => 'ꞣ' 2276: {0xA7A2, 0xA7A3}, // 'Ꞣ' => 'ꞣ' 2273: {0xA7A4, 0xA7A5}, // 'Ꞥ' => 'ꞥ' 2270: {0xA7A4, 0xA7A5}, // 'Ꞥ' => 'ꞥ' 2267: {0xA7A6, 0xA7A7}, // 'Ꞧ' => 'ꞧ' 2264: {0xA7A6, 0xA7A7}, // 'Ꞧ' => 'ꞧ' 2261: {0xA7A8, 0xA7A9}, // 'Ꞩ' => 'ꞩ' 2258: {0xA7A8, 0xA7A9}, // 'Ꞩ' => 'ꞩ' 2255: {0xA7AA, 0x0266}, // 'Ɦ' => 'ɦ' 2252: {0xA7AB, 0x025C}, // 'Ɜ' => 'ɜ' 2249: {0xA7AC, 0x0261}, // 'Ɡ' => 'ɡ' 2246: {0xA7AD, 0x026C}, // 'Ɬ' => 'ɬ' 2243: {0xA7AE, 0x026A}, // 'Ɪ' => 'ɪ' 2237: {0xA7B0, 0x029E}, // 'Ʞ' => 'ʞ' 2234: {0xA7B1, 0x0287}, // 'Ʇ' => 'ʇ' 2231: {0xA7B2, 0x029D}, // 'Ʝ' => 'ʝ' 2228: {0xA7B3, 0xAB53}, // 'Ꭓ' => 'ꭓ' 2225: {0xA7B4, 0xA7B5}, // 'Ꞵ' => 'ꞵ' 2222: {0xA7B4, 0xA7B5}, // 'Ꞵ' => 'ꞵ' 2219: {0xA7B6, 0xA7B7}, // 'Ꞷ' => 'ꞷ' 2216: {0xA7B6, 0xA7B7}, // 'Ꞷ' => 'ꞷ' 2213: {0xA7B8, 0xA7B9}, // 'Ꞹ' => 'ꞹ' 2210: {0xA7B8, 0xA7B9}, // 'Ꞹ' => 'ꞹ' 2207: {0xA7BA, 0xA7BB}, // 'Ꞻ' => 'ꞻ' 2204: {0xA7BA, 0xA7BB}, // 'Ꞻ' => 'ꞻ' 2201: {0xA7BC, 0xA7BD}, // 'Ꞽ' => 'ꞽ' 2198: {0xA7BC, 0xA7BD}, // 'Ꞽ' => 'ꞽ' 2195: {0xA7BE, 0xA7BF}, // 'Ꞿ' => 'ꞿ' 2192: {0xA7BE, 0xA7BF}, // 'Ꞿ' => 'ꞿ' 2183: {0xA7C2, 0xA7C3}, // 'Ꟃ' => 'ꟃ' 2180: {0xA7C2, 0xA7C3}, // 'Ꟃ' => 'ꟃ' 2177: {0xA7C4, 0xA794}, // 'Ꞔ' => 'ꞔ' 2174: {0xA7C5, 0x0282}, // 'Ʂ' => 'ʂ' 2171: {0xA7C6, 0x1D8E}, // 'Ᶎ' => 'ᶎ' 2168: {0xA7C7, 0xA7C8}, // 'Ꟈ' => 'ꟈ' 2165: {0xA7C7, 0xA7C8}, // 'Ꟈ' => 'ꟈ' 2162: {0xA7C9, 0xA7CA}, // 'Ꟊ' => 'ꟊ' 2159: {0xA7C9, 0xA7CA}, // 'Ꟊ' => 'ꟊ' 2030: {0xA7F5, 0xA7F6}, // 'Ꟶ' => 'ꟶ' 2027: {0xA7F5, 0xA7F6}, // 'Ꟶ' => 'ꟶ' 7635: {0xA7B3, 0xAB53}, // 'Ꭓ' => 'ꭓ' 7548: {0x13A0, 0xAB70}, // 'Ꭰ' => 'ꭰ' 7545: {0x13A1, 0xAB71}, // 'Ꭱ' => 'ꭱ' 7542: {0x13A2, 0xAB72}, // 'Ꭲ' => 'ꭲ' 7539: {0x13A3, 0xAB73}, // 'Ꭳ' => 'ꭳ' 7536: {0x13A4, 0xAB74}, // 'Ꭴ' => 'ꭴ' 7533: {0x13A5, 0xAB75}, // 'Ꭵ' => 'ꭵ' 7530: {0x13A6, 0xAB76}, // 'Ꭶ' => 'ꭶ' 7527: {0x13A7, 0xAB77}, // 'Ꭷ' => 'ꭷ' 7524: {0x13A8, 0xAB78}, // 'Ꭸ' => 'ꭸ' 7521: {0x13A9, 0xAB79}, // 'Ꭹ' => 'ꭹ' 7518: {0x13AA, 0xAB7A}, // 'Ꭺ' => 'ꭺ' 7515: {0x13AB, 0xAB7B}, // 'Ꭻ' => 'ꭻ' 7512: {0x13AC, 0xAB7C}, // 'Ꭼ' => 'ꭼ' 7509: {0x13AD, 0xAB7D}, // 'Ꭽ' => 'ꭽ' 7506: {0x13AE, 0xAB7E}, // 'Ꭾ' => 'ꭾ' 7503: {0x13AF, 0xAB7F}, // 'Ꭿ' => 'ꭿ' 7500: {0x13B0, 0xAB80}, // 'Ꮀ' => 'ꮀ' 7497: {0x13B1, 0xAB81}, // 'Ꮁ' => 'ꮁ' 7494: {0x13B2, 0xAB82}, // 'Ꮂ' => 'ꮂ' 7491: {0x13B3, 0xAB83}, // 'Ꮃ' => 'ꮃ' 7488: {0x13B4, 0xAB84}, // 'Ꮄ' => 'ꮄ' 7485: {0x13B5, 0xAB85}, // 'Ꮅ' => 'ꮅ' 7482: {0x13B6, 0xAB86}, // 'Ꮆ' => 'ꮆ' 7479: {0x13B7, 0xAB87}, // 'Ꮇ' => 'ꮇ' 7476: {0x13B8, 0xAB88}, // 'Ꮈ' => 'ꮈ' 7473: {0x13B9, 0xAB89}, // 'Ꮉ' => 'ꮉ' 7470: {0x13BA, 0xAB8A}, // 'Ꮊ' => 'ꮊ' 7467: {0x13BB, 0xAB8B}, // 'Ꮋ' => 'ꮋ' 7464: {0x13BC, 0xAB8C}, // 'Ꮌ' => 'ꮌ' 7461: {0x13BD, 0xAB8D}, // 'Ꮍ' => 'ꮍ' 7458: {0x13BE, 0xAB8E}, // 'Ꮎ' => 'ꮎ' 7455: {0x13BF, 0xAB8F}, // 'Ꮏ' => 'ꮏ' 7452: {0x13C0, 0xAB90}, // 'Ꮐ' => 'ꮐ' 7449: {0x13C1, 0xAB91}, // 'Ꮑ' => 'ꮑ' 7446: {0x13C2, 0xAB92}, // 'Ꮒ' => 'ꮒ' 7443: {0x13C3, 0xAB93}, // 'Ꮓ' => 'ꮓ' 7440: {0x13C4, 0xAB94}, // 'Ꮔ' => 'ꮔ' 7437: {0x13C5, 0xAB95}, // 'Ꮕ' => 'ꮕ' 7434: {0x13C6, 0xAB96}, // 'Ꮖ' => 'ꮖ' 7431: {0x13C7, 0xAB97}, // 'Ꮗ' => 'ꮗ' 7428: {0x13C8, 0xAB98}, // 'Ꮘ' => 'ꮘ' 7425: {0x13C9, 0xAB99}, // 'Ꮙ' => 'ꮙ' 7422: {0x13CA, 0xAB9A}, // 'Ꮚ' => 'ꮚ' 7419: {0x13CB, 0xAB9B}, // 'Ꮛ' => 'ꮛ' 7416: {0x13CC, 0xAB9C}, // 'Ꮜ' => 'ꮜ' 7413: {0x13CD, 0xAB9D}, // 'Ꮝ' => 'ꮝ' 7410: {0x13CE, 0xAB9E}, // 'Ꮞ' => 'ꮞ' 7407: {0x13CF, 0xAB9F}, // 'Ꮟ' => 'ꮟ' 7404: {0x13D0, 0xABA0}, // 'Ꮠ' => 'ꮠ' 7401: {0x13D1, 0xABA1}, // 'Ꮡ' => 'ꮡ' 7398: {0x13D2, 0xABA2}, // 'Ꮢ' => 'ꮢ' 7395: {0x13D3, 0xABA3}, // 'Ꮣ' => 'ꮣ' 7392: {0x13D4, 0xABA4}, // 'Ꮤ' => 'ꮤ' 7389: {0x13D5, 0xABA5}, // 'Ꮥ' => 'ꮥ' 7386: {0x13D6, 0xABA6}, // 'Ꮦ' => 'ꮦ' 7383: {0x13D7, 0xABA7}, // 'Ꮧ' => 'ꮧ' 7380: {0x13D8, 0xABA8}, // 'Ꮨ' => 'ꮨ' 7377: {0x13D9, 0xABA9}, // 'Ꮩ' => 'ꮩ' 7374: {0x13DA, 0xABAA}, // 'Ꮪ' => 'ꮪ' 7371: {0x13DB, 0xABAB}, // 'Ꮫ' => 'ꮫ' 7368: {0x13DC, 0xABAC}, // 'Ꮬ' => 'ꮬ' 7365: {0x13DD, 0xABAD}, // 'Ꮭ' => 'ꮭ' 7362: {0x13DE, 0xABAE}, // 'Ꮮ' => 'ꮮ' 7359: {0x13DF, 0xABAF}, // 'Ꮯ' => 'ꮯ' 7356: {0x13E0, 0xABB0}, // 'Ꮰ' => 'ꮰ' 7353: {0x13E1, 0xABB1}, // 'Ꮱ' => 'ꮱ' 7350: {0x13E2, 0xABB2}, // 'Ꮲ' => 'ꮲ' 7347: {0x13E3, 0xABB3}, // 'Ꮳ' => 'ꮳ' 7344: {0x13E4, 0xABB4}, // 'Ꮴ' => 'ꮴ' 7341: {0x13E5, 0xABB5}, // 'Ꮵ' => 'ꮵ' 7338: {0x13E6, 0xABB6}, // 'Ꮶ' => 'ꮶ' 7335: {0x13E7, 0xABB7}, // 'Ꮷ' => 'ꮷ' 7332: {0x13E8, 0xABB8}, // 'Ꮸ' => 'ꮸ' 7329: {0x13E9, 0xABB9}, // 'Ꮹ' => 'ꮹ' 7326: {0x13EA, 0xABBA}, // 'Ꮺ' => 'ꮺ' 7323: {0x13EB, 0xABBB}, // 'Ꮻ' => 'ꮻ' 7320: {0x13EC, 0xABBC}, // 'Ꮼ' => 'ꮼ' 7317: {0x13ED, 0xABBD}, // 'Ꮽ' => 'ꮽ' 7314: {0x13EE, 0xABBE}, // 'Ꮾ' => 'ꮾ' 7311: {0x13EF, 0xABBF}, // 'Ꮿ' => 'ꮿ' 591: {0xFF21, 0xFF41}, // 'A' => 'a' 588: {0xFF22, 0xFF42}, // 'B' => 'b' 585: {0xFF23, 0xFF43}, // 'C' => 'c' 582: {0xFF24, 0xFF44}, // 'D' => 'd' 579: {0xFF25, 0xFF45}, // 'E' => 'e' 576: {0xFF26, 0xFF46}, // 'F' => 'f' 573: {0xFF27, 0xFF47}, // 'G' => 'g' 570: {0xFF28, 0xFF48}, // 'H' => 'h' 567: {0xFF29, 0xFF49}, // 'I' => 'i' 564: {0xFF2A, 0xFF4A}, // 'J' => 'j' 561: {0xFF2B, 0xFF4B}, // 'K' => 'k' 558: {0xFF2C, 0xFF4C}, // 'L' => 'l' 555: {0xFF2D, 0xFF4D}, // 'M' => 'm' 552: {0xFF2E, 0xFF4E}, // 'N' => 'n' 549: {0xFF2F, 0xFF4F}, // 'O' => 'o' 546: {0xFF30, 0xFF50}, // 'P' => 'p' 543: {0xFF31, 0xFF51}, // 'Q' => 'q' 540: {0xFF32, 0xFF52}, // 'R' => 'r' 537: {0xFF33, 0xFF53}, // 'S' => 's' 534: {0xFF34, 0xFF54}, // 'T' => 't' 531: {0xFF35, 0xFF55}, // 'U' => 'u' 528: {0xFF36, 0xFF56}, // 'V' => 'v' 525: {0xFF37, 0xFF57}, // 'W' => 'w' 522: {0xFF38, 0xFF58}, // 'X' => 'x' 519: {0xFF39, 0xFF59}, // 'Y' => 'y' 516: {0xFF3A, 0xFF5A}, // 'Z' => 'z' 495: {0xFF21, 0xFF41}, // 'A' => 'a' 492: {0xFF22, 0xFF42}, // 'B' => 'b' 489: {0xFF23, 0xFF43}, // 'C' => 'c' 486: {0xFF24, 0xFF44}, // 'D' => 'd' 483: {0xFF25, 0xFF45}, // 'E' => 'e' 480: {0xFF26, 0xFF46}, // 'F' => 'f' 477: {0xFF27, 0xFF47}, // 'G' => 'g' 474: {0xFF28, 0xFF48}, // 'H' => 'h' 471: {0xFF29, 0xFF49}, // 'I' => 'i' 468: {0xFF2A, 0xFF4A}, // 'J' => 'j' 465: {0xFF2B, 0xFF4B}, // 'K' => 'k' 462: {0xFF2C, 0xFF4C}, // 'L' => 'l' 459: {0xFF2D, 0xFF4D}, // 'M' => 'm' 456: {0xFF2E, 0xFF4E}, // 'N' => 'n' 453: {0xFF2F, 0xFF4F}, // 'O' => 'o' 450: {0xFF30, 0xFF50}, // 'P' => 'p' 447: {0xFF31, 0xFF51}, // 'Q' => 'q' 444: {0xFF32, 0xFF52}, // 'R' => 'r' 441: {0xFF33, 0xFF53}, // 'S' => 's' 438: {0xFF34, 0xFF54}, // 'T' => 't' 435: {0xFF35, 0xFF55}, // 'U' => 'u' 432: {0xFF36, 0xFF56}, // 'V' => 'v' 429: {0xFF37, 0xFF57}, // 'W' => 'w' 426: {0xFF38, 0xFF58}, // 'X' => 'x' 423: {0xFF39, 0xFF59}, // 'Y' => 'y' 420: {0xFF3A, 0xFF5A}, // 'Z' => 'z' 5041: {0x10400, 0x10428}, // '𐐀' => '𐐨' 5038: {0x10401, 0x10429}, // '𐐁' => '𐐩' 5035: {0x10402, 0x1042A}, // '𐐂' => '𐐪' 5032: {0x10403, 0x1042B}, // '𐐃' => '𐐫' 5029: {0x10404, 0x1042C}, // '𐐄' => '𐐬' 5026: {0x10405, 0x1042D}, // '𐐅' => '𐐭' 5023: {0x10406, 0x1042E}, // '𐐆' => '𐐮' 5020: {0x10407, 0x1042F}, // '𐐇' => '𐐯' 5017: {0x10408, 0x10430}, // '𐐈' => '𐐰' 5014: {0x10409, 0x10431}, // '𐐉' => '𐐱' 5011: {0x1040A, 0x10432}, // '𐐊' => '𐐲' 5008: {0x1040B, 0x10433}, // '𐐋' => '𐐳' 5005: {0x1040C, 0x10434}, // '𐐌' => '𐐴' 5002: {0x1040D, 0x10435}, // '𐐍' => '𐐵' 4999: {0x1040E, 0x10436}, // '𐐎' => '𐐶' 4996: {0x1040F, 0x10437}, // '𐐏' => '𐐷' 4993: {0x10410, 0x10438}, // '𐐐' => '𐐸' 4990: {0x10411, 0x10439}, // '𐐑' => '𐐹' 4987: {0x10412, 0x1043A}, // '𐐒' => '𐐺' 4984: {0x10413, 0x1043B}, // '𐐓' => '𐐻' 4981: {0x10414, 0x1043C}, // '𐐔' => '𐐼' 4978: {0x10415, 0x1043D}, // '𐐕' => '𐐽' 4975: {0x10416, 0x1043E}, // '𐐖' => '𐐾' 4972: {0x10417, 0x1043F}, // '𐐗' => '𐐿' 4969: {0x10418, 0x10440}, // '𐐘' => '𐑀' 4966: {0x10419, 0x10441}, // '𐐙' => '𐑁' 4963: {0x1041A, 0x10442}, // '𐐚' => '𐑂' 4960: {0x1041B, 0x10443}, // '𐐛' => '𐑃' 4957: {0x1041C, 0x10444}, // '𐐜' => '𐑄' 4954: {0x1041D, 0x10445}, // '𐐝' => '𐑅' 4951: {0x1041E, 0x10446}, // '𐐞' => '𐑆' 4948: {0x1041F, 0x10447}, // '𐐟' => '𐑇' 4945: {0x10420, 0x10448}, // '𐐠' => '𐑈' 4942: {0x10421, 0x10449}, // '𐐡' => '𐑉' 4939: {0x10422, 0x1044A}, // '𐐢' => '𐑊' 4936: {0x10423, 0x1044B}, // '𐐣' => '𐑋' 4933: {0x10424, 0x1044C}, // '𐐤' => '𐑌' 4930: {0x10425, 0x1044D}, // '𐐥' => '𐑍' 4927: {0x10426, 0x1044E}, // '𐐦' => '𐑎' 4924: {0x10427, 0x1044F}, // '𐐧' => '𐑏' 4921: {0x10400, 0x10428}, // '𐐀' => '𐐨' 4918: {0x10401, 0x10429}, // '𐐁' => '𐐩' 4915: {0x10402, 0x1042A}, // '𐐂' => '𐐪' 4912: {0x10403, 0x1042B}, // '𐐃' => '𐐫' 4909: {0x10404, 0x1042C}, // '𐐄' => '𐐬' 4906: {0x10405, 0x1042D}, // '𐐅' => '𐐭' 4903: {0x10406, 0x1042E}, // '𐐆' => '𐐮' 4900: {0x10407, 0x1042F}, // '𐐇' => '𐐯' 4897: {0x10408, 0x10430}, // '𐐈' => '𐐰' 4894: {0x10409, 0x10431}, // '𐐉' => '𐐱' 4891: {0x1040A, 0x10432}, // '𐐊' => '𐐲' 4888: {0x1040B, 0x10433}, // '𐐋' => '𐐳' 4885: {0x1040C, 0x10434}, // '𐐌' => '𐐴' 4882: {0x1040D, 0x10435}, // '𐐍' => '𐐵' 4879: {0x1040E, 0x10436}, // '𐐎' => '𐐶' 4876: {0x1040F, 0x10437}, // '𐐏' => '𐐷' 4873: {0x10410, 0x10438}, // '𐐐' => '𐐸' 4870: {0x10411, 0x10439}, // '𐐑' => '𐐹' 4867: {0x10412, 0x1043A}, // '𐐒' => '𐐺' 4864: {0x10413, 0x1043B}, // '𐐓' => '𐐻' 4861: {0x10414, 0x1043C}, // '𐐔' => '𐐼' 4858: {0x10415, 0x1043D}, // '𐐕' => '𐐽' 4855: {0x10416, 0x1043E}, // '𐐖' => '𐐾' 4852: {0x10417, 0x1043F}, // '𐐗' => '𐐿' 4849: {0x10418, 0x10440}, // '𐐘' => '𐑀' 4846: {0x10419, 0x10441}, // '𐐙' => '𐑁' 4843: {0x1041A, 0x10442}, // '𐐚' => '𐑂' 4840: {0x1041B, 0x10443}, // '𐐛' => '𐑃' 4837: {0x1041C, 0x10444}, // '𐐜' => '𐑄' 4834: {0x1041D, 0x10445}, // '𐐝' => '𐑅' 4831: {0x1041E, 0x10446}, // '𐐞' => '𐑆' 4828: {0x1041F, 0x10447}, // '𐐟' => '𐑇' 4825: {0x10420, 0x10448}, // '𐐠' => '𐑈' 4822: {0x10421, 0x10449}, // '𐐡' => '𐑉' 4819: {0x10422, 0x1044A}, // '𐐢' => '𐑊' 4816: {0x10423, 0x1044B}, // '𐐣' => '𐑋' 4813: {0x10424, 0x1044C}, // '𐐤' => '𐑌' 4810: {0x10425, 0x1044D}, // '𐐥' => '𐑍' 4807: {0x10426, 0x1044E}, // '𐐦' => '𐑎' 4804: {0x10427, 0x1044F}, // '𐐧' => '𐑏' 4513: {0x104B0, 0x104D8}, // '𐒰' => '𐓘' 4510: {0x104B1, 0x104D9}, // '𐒱' => '𐓙' 4507: {0x104B2, 0x104DA}, // '𐒲' => '𐓚' 4504: {0x104B3, 0x104DB}, // '𐒳' => '𐓛' 4501: {0x104B4, 0x104DC}, // '𐒴' => '𐓜' 4498: {0x104B5, 0x104DD}, // '𐒵' => '𐓝' 4495: {0x104B6, 0x104DE}, // '𐒶' => '𐓞' 4492: {0x104B7, 0x104DF}, // '𐒷' => '𐓟' 4489: {0x104B8, 0x104E0}, // '𐒸' => '𐓠' 4486: {0x104B9, 0x104E1}, // '𐒹' => '𐓡' 4483: {0x104BA, 0x104E2}, // '𐒺' => '𐓢' 4480: {0x104BB, 0x104E3}, // '𐒻' => '𐓣' 4477: {0x104BC, 0x104E4}, // '𐒼' => '𐓤' 4474: {0x104BD, 0x104E5}, // '𐒽' => '𐓥' 4471: {0x104BE, 0x104E6}, // '𐒾' => '𐓦' 4468: {0x104BF, 0x104E7}, // '𐒿' => '𐓧' 4465: {0x104C0, 0x104E8}, // '𐓀' => '𐓨' 4462: {0x104C1, 0x104E9}, // '𐓁' => '𐓩' 4459: {0x104C2, 0x104EA}, // '𐓂' => '𐓪' 4456: {0x104C3, 0x104EB}, // '𐓃' => '𐓫' 4453: {0x104C4, 0x104EC}, // '𐓄' => '𐓬' 4450: {0x104C5, 0x104ED}, // '𐓅' => '𐓭' 4447: {0x104C6, 0x104EE}, // '𐓆' => '𐓮' 4444: {0x104C7, 0x104EF}, // '𐓇' => '𐓯' 4441: {0x104C8, 0x104F0}, // '𐓈' => '𐓰' 4438: {0x104C9, 0x104F1}, // '𐓉' => '𐓱' 4435: {0x104CA, 0x104F2}, // '𐓊' => '𐓲' 4432: {0x104CB, 0x104F3}, // '𐓋' => '𐓳' 4429: {0x104CC, 0x104F4}, // '𐓌' => '𐓴' 4426: {0x104CD, 0x104F5}, // '𐓍' => '𐓵' 4423: {0x104CE, 0x104F6}, // '𐓎' => '𐓶' 4420: {0x104CF, 0x104F7}, // '𐓏' => '𐓷' 4417: {0x104D0, 0x104F8}, // '𐓐' => '𐓸' 4414: {0x104D1, 0x104F9}, // '𐓑' => '𐓹' 4411: {0x104D2, 0x104FA}, // '𐓒' => '𐓺' 4408: {0x104D3, 0x104FB}, // '𐓓' => '𐓻' 4393: {0x104B0, 0x104D8}, // '𐒰' => '𐓘' 4390: {0x104B1, 0x104D9}, // '𐒱' => '𐓙' 4387: {0x104B2, 0x104DA}, // '𐒲' => '𐓚' 4384: {0x104B3, 0x104DB}, // '𐒳' => '𐓛' 4381: {0x104B4, 0x104DC}, // '𐒴' => '𐓜' 4378: {0x104B5, 0x104DD}, // '𐒵' => '𐓝' 4375: {0x104B6, 0x104DE}, // '𐒶' => '𐓞' 4372: {0x104B7, 0x104DF}, // '𐒷' => '𐓟' 4369: {0x104B8, 0x104E0}, // '𐒸' => '𐓠' 4366: {0x104B9, 0x104E1}, // '𐒹' => '𐓡' 4363: {0x104BA, 0x104E2}, // '𐒺' => '𐓢' 4360: {0x104BB, 0x104E3}, // '𐒻' => '𐓣' 4357: {0x104BC, 0x104E4}, // '𐒼' => '𐓤' 4354: {0x104BD, 0x104E5}, // '𐒽' => '𐓥' 4351: {0x104BE, 0x104E6}, // '𐒾' => '𐓦' 4348: {0x104BF, 0x104E7}, // '𐒿' => '𐓧' 4345: {0x104C0, 0x104E8}, // '𐓀' => '𐓨' 4342: {0x104C1, 0x104E9}, // '𐓁' => '𐓩' 4339: {0x104C2, 0x104EA}, // '𐓂' => '𐓪' 4336: {0x104C3, 0x104EB}, // '𐓃' => '𐓫' 4333: {0x104C4, 0x104EC}, // '𐓄' => '𐓬' 4330: {0x104C5, 0x104ED}, // '𐓅' => '𐓭' 4327: {0x104C6, 0x104EE}, // '𐓆' => '𐓮' 4324: {0x104C7, 0x104EF}, // '𐓇' => '𐓯' 4321: {0x104C8, 0x104F0}, // '𐓈' => '𐓰' 4318: {0x104C9, 0x104F1}, // '𐓉' => '𐓱' 4315: {0x104CA, 0x104F2}, // '𐓊' => '𐓲' 4312: {0x104CB, 0x104F3}, // '𐓋' => '𐓳' 4309: {0x104CC, 0x104F4}, // '𐓌' => '𐓴' 4306: {0x104CD, 0x104F5}, // '𐓍' => '𐓵' 4303: {0x104CE, 0x104F6}, // '𐓎' => '𐓶' 4300: {0x104CF, 0x104F7}, // '𐓏' => '𐓷' 4297: {0x104D0, 0x104F8}, // '𐓐' => '𐓸' 4294: {0x104D1, 0x104F9}, // '𐓑' => '𐓹' 4291: {0x104D2, 0x104FA}, // '𐓒' => '𐓺' 4288: {0x104D3, 0x104FB}, // '𐓓' => '𐓻' 6702: {0x10C80, 0x10CC0}, // '𐲀' => '𐳀' 6699: {0x10C81, 0x10CC1}, // '𐲁' => '𐳁' 6696: {0x10C82, 0x10CC2}, // '𐲂' => '𐳂' 6693: {0x10C83, 0x10CC3}, // '𐲃' => '𐳃' 6690: {0x10C84, 0x10CC4}, // '𐲄' => '𐳄' 6687: {0x10C85, 0x10CC5}, // '𐲅' => '𐳅' 6684: {0x10C86, 0x10CC6}, // '𐲆' => '𐳆' 6681: {0x10C87, 0x10CC7}, // '𐲇' => '𐳇' 6678: {0x10C88, 0x10CC8}, // '𐲈' => '𐳈' 6675: {0x10C89, 0x10CC9}, // '𐲉' => '𐳉' 6672: {0x10C8A, 0x10CCA}, // '𐲊' => '𐳊' 6669: {0x10C8B, 0x10CCB}, // '𐲋' => '𐳋' 6666: {0x10C8C, 0x10CCC}, // '𐲌' => '𐳌' 6663: {0x10C8D, 0x10CCD}, // '𐲍' => '𐳍' 6660: {0x10C8E, 0x10CCE}, // '𐲎' => '𐳎' 6657: {0x10C8F, 0x10CCF}, // '𐲏' => '𐳏' 6654: {0x10C90, 0x10CD0}, // '𐲐' => '𐳐' 6651: {0x10C91, 0x10CD1}, // '𐲑' => '𐳑' 6648: {0x10C92, 0x10CD2}, // '𐲒' => '𐳒' 6645: {0x10C93, 0x10CD3}, // '𐲓' => '𐳓' 6642: {0x10C94, 0x10CD4}, // '𐲔' => '𐳔' 6639: {0x10C95, 0x10CD5}, // '𐲕' => '𐳕' 6636: {0x10C96, 0x10CD6}, // '𐲖' => '𐳖' 6633: {0x10C97, 0x10CD7}, // '𐲗' => '𐳗' 6630: {0x10C98, 0x10CD8}, // '𐲘' => '𐳘' 6627: {0x10C99, 0x10CD9}, // '𐲙' => '𐳙' 6624: {0x10C9A, 0x10CDA}, // '𐲚' => '𐳚' 6621: {0x10C9B, 0x10CDB}, // '𐲛' => '𐳛' 6618: {0x10C9C, 0x10CDC}, // '𐲜' => '𐳜' 6615: {0x10C9D, 0x10CDD}, // '𐲝' => '𐳝' 6612: {0x10C9E, 0x10CDE}, // '𐲞' => '𐳞' 6609: {0x10C9F, 0x10CDF}, // '𐲟' => '𐳟' 6606: {0x10CA0, 0x10CE0}, // '𐲠' => '𐳠' 6603: {0x10CA1, 0x10CE1}, // '𐲡' => '𐳡' 6600: {0x10CA2, 0x10CE2}, // '𐲢' => '𐳢' 6597: {0x10CA3, 0x10CE3}, // '𐲣' => '𐳣' 6594: {0x10CA4, 0x10CE4}, // '𐲤' => '𐳤' 6591: {0x10CA5, 0x10CE5}, // '𐲥' => '𐳥' 6588: {0x10CA6, 0x10CE6}, // '𐲦' => '𐳦' 6585: {0x10CA7, 0x10CE7}, // '𐲧' => '𐳧' 6582: {0x10CA8, 0x10CE8}, // '𐲨' => '𐳨' 6579: {0x10CA9, 0x10CE9}, // '𐲩' => '𐳩' 6576: {0x10CAA, 0x10CEA}, // '𐲪' => '𐳪' 6573: {0x10CAB, 0x10CEB}, // '𐲫' => '𐳫' 6570: {0x10CAC, 0x10CEC}, // '𐲬' => '𐳬' 6567: {0x10CAD, 0x10CED}, // '𐲭' => '𐳭' 6564: {0x10CAE, 0x10CEE}, // '𐲮' => '𐳮' 6561: {0x10CAF, 0x10CEF}, // '𐲯' => '𐳯' 6558: {0x10CB0, 0x10CF0}, // '𐲰' => '𐳰' 6555: {0x10CB1, 0x10CF1}, // '𐲱' => '𐳱' 6552: {0x10CB2, 0x10CF2}, // '𐲲' => '𐳲' 6510: {0x10C80, 0x10CC0}, // '𐲀' => '𐳀' 6507: {0x10C81, 0x10CC1}, // '𐲁' => '𐳁' 6504: {0x10C82, 0x10CC2}, // '𐲂' => '𐳂' 6501: {0x10C83, 0x10CC3}, // '𐲃' => '𐳃' 6498: {0x10C84, 0x10CC4}, // '𐲄' => '𐳄' 6495: {0x10C85, 0x10CC5}, // '𐲅' => '𐳅' 6492: {0x10C86, 0x10CC6}, // '𐲆' => '𐳆' 6489: {0x10C87, 0x10CC7}, // '𐲇' => '𐳇' 6486: {0x10C88, 0x10CC8}, // '𐲈' => '𐳈' 6483: {0x10C89, 0x10CC9}, // '𐲉' => '𐳉' 6480: {0x10C8A, 0x10CCA}, // '𐲊' => '𐳊' 6477: {0x10C8B, 0x10CCB}, // '𐲋' => '𐳋' 6474: {0x10C8C, 0x10CCC}, // '𐲌' => '𐳌' 6471: {0x10C8D, 0x10CCD}, // '𐲍' => '𐳍' 6468: {0x10C8E, 0x10CCE}, // '𐲎' => '𐳎' 6465: {0x10C8F, 0x10CCF}, // '𐲏' => '𐳏' 6462: {0x10C90, 0x10CD0}, // '𐲐' => '𐳐' 6459: {0x10C91, 0x10CD1}, // '𐲑' => '𐳑' 6456: {0x10C92, 0x10CD2}, // '𐲒' => '𐳒' 6453: {0x10C93, 0x10CD3}, // '𐲓' => '𐳓' 6450: {0x10C94, 0x10CD4}, // '𐲔' => '𐳔' 6447: {0x10C95, 0x10CD5}, // '𐲕' => '𐳕' 6444: {0x10C96, 0x10CD6}, // '𐲖' => '𐳖' 6441: {0x10C97, 0x10CD7}, // '𐲗' => '𐳗' 6438: {0x10C98, 0x10CD8}, // '𐲘' => '𐳘' 6435: {0x10C99, 0x10CD9}, // '𐲙' => '𐳙' 6432: {0x10C9A, 0x10CDA}, // '𐲚' => '𐳚' 6429: {0x10C9B, 0x10CDB}, // '𐲛' => '𐳛' 6426: {0x10C9C, 0x10CDC}, // '𐲜' => '𐳜' 6423: {0x10C9D, 0x10CDD}, // '𐲝' => '𐳝' 6420: {0x10C9E, 0x10CDE}, // '𐲞' => '𐳞' 6417: {0x10C9F, 0x10CDF}, // '𐲟' => '𐳟' 6414: {0x10CA0, 0x10CE0}, // '𐲠' => '𐳠' 6411: {0x10CA1, 0x10CE1}, // '𐲡' => '𐳡' 6408: {0x10CA2, 0x10CE2}, // '𐲢' => '𐳢' 6405: {0x10CA3, 0x10CE3}, // '𐲣' => '𐳣' 6402: {0x10CA4, 0x10CE4}, // '𐲤' => '𐳤' 6399: {0x10CA5, 0x10CE5}, // '𐲥' => '𐳥' 6396: {0x10CA6, 0x10CE6}, // '𐲦' => '𐳦' 6393: {0x10CA7, 0x10CE7}, // '𐲧' => '𐳧' 6390: {0x10CA8, 0x10CE8}, // '𐲨' => '𐳨' 6387: {0x10CA9, 0x10CE9}, // '𐲩' => '𐳩' 6384: {0x10CAA, 0x10CEA}, // '𐲪' => '𐳪' 6381: {0x10CAB, 0x10CEB}, // '𐲫' => '𐳫' 6378: {0x10CAC, 0x10CEC}, // '𐲬' => '𐳬' 6375: {0x10CAD, 0x10CED}, // '𐲭' => '𐳭' 6372: {0x10CAE, 0x10CEE}, // '𐲮' => '𐳮' 6369: {0x10CAF, 0x10CEF}, // '𐲯' => '𐳯' 6366: {0x10CB0, 0x10CF0}, // '𐲰' => '𐳰' 6363: {0x10CB1, 0x10CF1}, // '𐲱' => '𐳱' 6360: {0x10CB2, 0x10CF2}, // '𐲲' => '𐳲' 5579: {0x118A0, 0x118C0}, // '𑢠' => '𑣀' 5576: {0x118A1, 0x118C1}, // '𑢡' => '𑣁' 5573: {0x118A2, 0x118C2}, // '𑢢' => '𑣂' 5570: {0x118A3, 0x118C3}, // '𑢣' => '𑣃' 5567: {0x118A4, 0x118C4}, // '𑢤' => '𑣄' 5564: {0x118A5, 0x118C5}, // '𑢥' => '𑣅' 5561: {0x118A6, 0x118C6}, // '𑢦' => '𑣆' 5558: {0x118A7, 0x118C7}, // '𑢧' => '𑣇' 5555: {0x118A8, 0x118C8}, // '𑢨' => '𑣈' 5552: {0x118A9, 0x118C9}, // '𑢩' => '𑣉' 5549: {0x118AA, 0x118CA}, // '𑢪' => '𑣊' 5546: {0x118AB, 0x118CB}, // '𑢫' => '𑣋' 5543: {0x118AC, 0x118CC}, // '𑢬' => '𑣌' 5540: {0x118AD, 0x118CD}, // '𑢭' => '𑣍' 5537: {0x118AE, 0x118CE}, // '𑢮' => '𑣎' 5534: {0x118AF, 0x118CF}, // '𑢯' => '𑣏' 5531: {0x118B0, 0x118D0}, // '𑢰' => '𑣐' 5528: {0x118B1, 0x118D1}, // '𑢱' => '𑣑' 5525: {0x118B2, 0x118D2}, // '𑢲' => '𑣒' 5522: {0x118B3, 0x118D3}, // '𑢳' => '𑣓' 5519: {0x118B4, 0x118D4}, // '𑢴' => '𑣔' 5516: {0x118B5, 0x118D5}, // '𑢵' => '𑣕' 5513: {0x118B6, 0x118D6}, // '𑢶' => '𑣖' 5510: {0x118B7, 0x118D7}, // '𑢷' => '𑣗' 5507: {0x118B8, 0x118D8}, // '𑢸' => '𑣘' 5504: {0x118B9, 0x118D9}, // '𑢹' => '𑣙' 5501: {0x118BA, 0x118DA}, // '𑢺' => '𑣚' 5498: {0x118BB, 0x118DB}, // '𑢻' => '𑣛' 5495: {0x118BC, 0x118DC}, // '𑢼' => '𑣜' 5492: {0x118BD, 0x118DD}, // '𑢽' => '𑣝' 5489: {0x118BE, 0x118DE}, // '𑢾' => '𑣞' 5486: {0x118BF, 0x118DF}, // '𑢿' => '𑣟' 5483: {0x118A0, 0x118C0}, // '𑢠' => '𑣀' 5480: {0x118A1, 0x118C1}, // '𑢡' => '𑣁' 5477: {0x118A2, 0x118C2}, // '𑢢' => '𑣂' 5474: {0x118A3, 0x118C3}, // '𑢣' => '𑣃' 5471: {0x118A4, 0x118C4}, // '𑢤' => '𑣄' 5468: {0x118A5, 0x118C5}, // '𑢥' => '𑣅' 5465: {0x118A6, 0x118C6}, // '𑢦' => '𑣆' 5462: {0x118A7, 0x118C7}, // '𑢧' => '𑣇' 5459: {0x118A8, 0x118C8}, // '𑢨' => '𑣈' 5456: {0x118A9, 0x118C9}, // '𑢩' => '𑣉' 5453: {0x118AA, 0x118CA}, // '𑢪' => '𑣊' 5450: {0x118AB, 0x118CB}, // '𑢫' => '𑣋' 5447: {0x118AC, 0x118CC}, // '𑢬' => '𑣌' 5444: {0x118AD, 0x118CD}, // '𑢭' => '𑣍' 5441: {0x118AE, 0x118CE}, // '𑢮' => '𑣎' 5438: {0x118AF, 0x118CF}, // '𑢯' => '𑣏' 5435: {0x118B0, 0x118D0}, // '𑢰' => '𑣐' 5432: {0x118B1, 0x118D1}, // '𑢱' => '𑣑' 5429: {0x118B2, 0x118D2}, // '𑢲' => '𑣒' 5426: {0x118B3, 0x118D3}, // '𑢳' => '𑣓' 5423: {0x118B4, 0x118D4}, // '𑢴' => '𑣔' 5420: {0x118B5, 0x118D5}, // '𑢵' => '𑣕' 5417: {0x118B6, 0x118D6}, // '𑢶' => '𑣖' 5414: {0x118B7, 0x118D7}, // '𑢷' => '𑣗' 5411: {0x118B8, 0x118D8}, // '𑢸' => '𑣘' 5408: {0x118B9, 0x118D9}, // '𑢹' => '𑣙' 5405: {0x118BA, 0x118DA}, // '𑢺' => '𑣚' 5402: {0x118BB, 0x118DB}, // '𑢻' => '𑣛' 5399: {0x118BC, 0x118DC}, // '𑢼' => '𑣜' 5396: {0x118BD, 0x118DD}, // '𑢽' => '𑣝' 5393: {0x118BE, 0x118DE}, // '𑢾' => '𑣞' 5390: {0x118BF, 0x118DF}, // '𑢿' => '𑣟' 5329: {0x16E40, 0x16E60}, // '𖹀' => '𖹠' 5326: {0x16E41, 0x16E61}, // '𖹁' => '𖹡' 5323: {0x16E42, 0x16E62}, // '𖹂' => '𖹢' 5320: {0x16E43, 0x16E63}, // '𖹃' => '𖹣' 5317: {0x16E44, 0x16E64}, // '𖹄' => '𖹤' 5314: {0x16E45, 0x16E65}, // '𖹅' => '𖹥' 5311: {0x16E46, 0x16E66}, // '𖹆' => '𖹦' 5308: {0x16E47, 0x16E67}, // '𖹇' => '𖹧' 5305: {0x16E48, 0x16E68}, // '𖹈' => '𖹨' 5302: {0x16E49, 0x16E69}, // '𖹉' => '𖹩' 5299: {0x16E4A, 0x16E6A}, // '𖹊' => '𖹪' 5296: {0x16E4B, 0x16E6B}, // '𖹋' => '𖹫' 5293: {0x16E4C, 0x16E6C}, // '𖹌' => '𖹬' 5290: {0x16E4D, 0x16E6D}, // '𖹍' => '𖹭' 5287: {0x16E4E, 0x16E6E}, // '𖹎' => '𖹮' 5284: {0x16E4F, 0x16E6F}, // '𖹏' => '𖹯' 5281: {0x16E50, 0x16E70}, // '𖹐' => '𖹰' 5278: {0x16E51, 0x16E71}, // '𖹑' => '𖹱' 5275: {0x16E52, 0x16E72}, // '𖹒' => '𖹲' 5272: {0x16E53, 0x16E73}, // '𖹓' => '𖹳' 5269: {0x16E54, 0x16E74}, // '𖹔' => '𖹴' 5266: {0x16E55, 0x16E75}, // '𖹕' => '𖹵' 5263: {0x16E56, 0x16E76}, // '𖹖' => '𖹶' 5260: {0x16E57, 0x16E77}, // '𖹗' => '𖹷' 5257: {0x16E58, 0x16E78}, // '𖹘' => '𖹸' 5254: {0x16E59, 0x16E79}, // '𖹙' => '𖹹' 5251: {0x16E5A, 0x16E7A}, // '𖹚' => '𖹺' 5248: {0x16E5B, 0x16E7B}, // '𖹛' => '𖹻' 5245: {0x16E5C, 0x16E7C}, // '𖹜' => '𖹼' 5242: {0x16E5D, 0x16E7D}, // '𖹝' => '𖹽' 5239: {0x16E5E, 0x16E7E}, // '𖹞' => '𖹾' 5236: {0x16E5F, 0x16E7F}, // '𖹟' => '𖹿' 5233: {0x16E40, 0x16E60}, // '𖹀' => '𖹠' 5230: {0x16E41, 0x16E61}, // '𖹁' => '𖹡' 5227: {0x16E42, 0x16E62}, // '𖹂' => '𖹢' 5224: {0x16E43, 0x16E63}, // '𖹃' => '𖹣' 5221: {0x16E44, 0x16E64}, // '𖹄' => '𖹤' 5218: {0x16E45, 0x16E65}, // '𖹅' => '𖹥' 5215: {0x16E46, 0x16E66}, // '𖹆' => '𖹦' 5212: {0x16E47, 0x16E67}, // '𖹇' => '𖹧' 5209: {0x16E48, 0x16E68}, // '𖹈' => '𖹨' 5206: {0x16E49, 0x16E69}, // '𖹉' => '𖹩' 5203: {0x16E4A, 0x16E6A}, // '𖹊' => '𖹪' 5200: {0x16E4B, 0x16E6B}, // '𖹋' => '𖹫' 5197: {0x16E4C, 0x16E6C}, // '𖹌' => '𖹬' 5194: {0x16E4D, 0x16E6D}, // '𖹍' => '𖹭' 5191: {0x16E4E, 0x16E6E}, // '𖹎' => '𖹮' 5188: {0x16E4F, 0x16E6F}, // '𖹏' => '𖹯' 5185: {0x16E50, 0x16E70}, // '𖹐' => '𖹰' 5182: {0x16E51, 0x16E71}, // '𖹑' => '𖹱' 5179: {0x16E52, 0x16E72}, // '𖹒' => '𖹲' 5176: {0x16E53, 0x16E73}, // '𖹓' => '𖹳' 5173: {0x16E54, 0x16E74}, // '𖹔' => '𖹴' 5170: {0x16E55, 0x16E75}, // '𖹕' => '𖹵' 5167: {0x16E56, 0x16E76}, // '𖹖' => '𖹶' 5164: {0x16E57, 0x16E77}, // '𖹗' => '𖹷' 5161: {0x16E58, 0x16E78}, // '𖹘' => '𖹸' 5158: {0x16E59, 0x16E79}, // '𖹙' => '𖹹' 5155: {0x16E5A, 0x16E7A}, // '𖹚' => '𖹺' 5152: {0x16E5B, 0x16E7B}, // '𖹛' => '𖹻' 5149: {0x16E5C, 0x16E7C}, // '𖹜' => '𖹼' 5146: {0x16E5D, 0x16E7D}, // '𖹝' => '𖹽' 5143: {0x16E5E, 0x16E7E}, // '𖹞' => '𖹾' 5140: {0x16E5F, 0x16E7F}, // '𖹟' => '𖹿' 1132: {0x1E900, 0x1E922}, // '𞤀' => '𞤢' 1129: {0x1E901, 0x1E923}, // '𞤁' => '𞤣' 1126: {0x1E902, 0x1E924}, // '𞤂' => '𞤤' 1123: {0x1E903, 0x1E925}, // '𞤃' => '𞤥' 1120: {0x1E904, 0x1E926}, // '𞤄' => '𞤦' 1117: {0x1E905, 0x1E927}, // '𞤅' => '𞤧' 1114: {0x1E906, 0x1E928}, // '𞤆' => '𞤨' 1111: {0x1E907, 0x1E929}, // '𞤇' => '𞤩' 1108: {0x1E908, 0x1E92A}, // '𞤈' => '𞤪' 1105: {0x1E909, 0x1E92B}, // '𞤉' => '𞤫' 1102: {0x1E90A, 0x1E92C}, // '𞤊' => '𞤬' 1099: {0x1E90B, 0x1E92D}, // '𞤋' => '𞤭' 1096: {0x1E90C, 0x1E92E}, // '𞤌' => '𞤮' 1093: {0x1E90D, 0x1E92F}, // '𞤍' => '𞤯' 1090: {0x1E90E, 0x1E930}, // '𞤎' => '𞤰' 1087: {0x1E90F, 0x1E931}, // '𞤏' => '𞤱' 1084: {0x1E910, 0x1E932}, // '𞤐' => '𞤲' 1081: {0x1E911, 0x1E933}, // '𞤑' => '𞤳' 1078: {0x1E912, 0x1E934}, // '𞤒' => '𞤴' 1075: {0x1E913, 0x1E935}, // '𞤓' => '𞤵' 1072: {0x1E914, 0x1E936}, // '𞤔' => '𞤶' 1069: {0x1E915, 0x1E937}, // '𞤕' => '𞤷' 1066: {0x1E916, 0x1E938}, // '𞤖' => '𞤸' 1063: {0x1E917, 0x1E939}, // '𞤗' => '𞤹' 1060: {0x1E918, 0x1E93A}, // '𞤘' => '𞤺' 1057: {0x1E919, 0x1E93B}, // '𞤙' => '𞤻' 1054: {0x1E91A, 0x1E93C}, // '𞤚' => '𞤼' 1051: {0x1E91B, 0x1E93D}, // '𞤛' => '𞤽' 1048: {0x1E91C, 0x1E93E}, // '𞤜' => '𞤾' 1045: {0x1E91D, 0x1E93F}, // '𞤝' => '𞤿' 1042: {0x1E91E, 0x1E940}, // '𞤞' => '𞥀' 1039: {0x1E91F, 0x1E941}, // '𞤟' => '𞥁' 1036: {0x1E920, 0x1E942}, // '𞤠' => '𞥂' 1033: {0x1E921, 0x1E943}, // '𞤡' => '𞥃' 1030: {0x1E900, 0x1E922}, // '𞤀' => '𞤢' 1027: {0x1E901, 0x1E923}, // '𞤁' => '𞤣' 1024: {0x1E902, 0x1E924}, // '𞤂' => '𞤤' 1021: {0x1E903, 0x1E925}, // '𞤃' => '𞤥' 1018: {0x1E904, 0x1E926}, // '𞤄' => '𞤦' 1015: {0x1E905, 0x1E927}, // '𞤅' => '𞤧' 1012: {0x1E906, 0x1E928}, // '𞤆' => '𞤨' 1009: {0x1E907, 0x1E929}, // '𞤇' => '𞤩' 1006: {0x1E908, 0x1E92A}, // '𞤈' => '𞤪' 1003: {0x1E909, 0x1E92B}, // '𞤉' => '𞤫' 1000: {0x1E90A, 0x1E92C}, // '𞤊' => '𞤬' 997: {0x1E90B, 0x1E92D}, // '𞤋' => '𞤭' 994: {0x1E90C, 0x1E92E}, // '𞤌' => '𞤮' 991: {0x1E90D, 0x1E92F}, // '𞤍' => '𞤯' 988: {0x1E90E, 0x1E930}, // '𞤎' => '𞤰' 985: {0x1E90F, 0x1E931}, // '𞤏' => '𞤱' 982: {0x1E910, 0x1E932}, // '𞤐' => '𞤲' 979: {0x1E911, 0x1E933}, // '𞤑' => '𞤳' 976: {0x1E912, 0x1E934}, // '𞤒' => '𞤴' 973: {0x1E913, 0x1E935}, // '𞤓' => '𞤵' 970: {0x1E914, 0x1E936}, // '𞤔' => '𞤶' 967: {0x1E915, 0x1E937}, // '𞤕' => '𞤷' 964: {0x1E916, 0x1E938}, // '𞤖' => '𞤸' 961: {0x1E917, 0x1E939}, // '𞤗' => '𞤹' 958: {0x1E918, 0x1E93A}, // '𞤘' => '𞤺' 955: {0x1E919, 0x1E93B}, // '𞤙' => '𞤻' 952: {0x1E91A, 0x1E93C}, // '𞤚' => '𞤼' 949: {0x1E91B, 0x1E93D}, // '𞤛' => '𞤽' 946: {0x1E91C, 0x1E93E}, // '𞤜' => '𞤾' 943: {0x1E91D, 0x1E93F}, // '𞤝' => '𞤿' 940: {0x1E91E, 0x1E940}, // '𞤞' => '𞥀' 937: {0x1E91F, 0x1E941}, // '𞤟' => '𞥁' 934: {0x1E920, 0x1E942}, // '𞤠' => '𞥂' 931: {0x1E921, 0x1E943}, // '𞤡' => '𞥃' } // toUpperLowerSpecial returns the uppercase and lowercase form of r, // which is a character that is not equal to either its uppercase or // lowercase form and thus cannot be mapped into the _UpperLower table. func toUpperLowerSpecial(r rune) (rune, rune, bool) { switch r { case 'Dž': return 'DŽ', 'dž', true case 'Lj': return 'LJ', 'lj', true case 'Nj': return 'NJ', 'nj', true case 'Dz': return 'DZ', 'dz', true } return r, r, false } const _FoldMapSeed = 0x96480001 const _FoldMapShift = 24 // FoldMap stores the Unicode case-folds for characters that have two or more folds. var _FoldMap = [256][4]uint16{ 7: {0x004B, 0x006B, 0x212A}, // ['K' 'k' 'K'] 185: {0x0053, 0x0073, 0x017F}, // ['S' 's' 'ſ'] 208: {0x006B, 0x004B, 0x212A}, // ['k' 'K' 'K'] 130: {0x0073, 0x0053, 0x017F}, // ['s' 'S' 'ſ'] 64: {0x00B5, 0x039C, 0x03BC}, // ['µ' 'Μ' 'μ'] 165: {0x00C5, 0x00E5, 0x212B}, // ['Å' 'å' 'Å'] 232: {0x00DF, 0x1E9E}, // ['ß' 'ẞ'] 110: {0x00E5, 0x00C5, 0x212B}, // ['å' 'Å' 'Å'] 117: {0x0130}, // ['İ'] 11: {0x0131}, // ['ı'] 213: {0x017F, 0x0053, 0x0073}, // ['ſ' 'S' 's'] 87: {0x01C4, 0x01C5, 0x01C6}, // ['DŽ' 'Dž' 'dž'] 237: {0x01C5, 0x01C4, 0x01C6}, // ['Dž' 'DŽ' 'dž'] 131: {0x01C6, 0x01C4, 0x01C5}, // ['dž' 'DŽ' 'Dž'] 25: {0x01C7, 0x01C8, 0x01C9}, // ['LJ' 'Lj' 'lj'] 176: {0x01C8, 0x01C7, 0x01C9}, // ['Lj' 'LJ' 'lj'] 70: {0x01C9, 0x01C7, 0x01C8}, // ['lj' 'LJ' 'Lj'] 220: {0x01CA, 0x01CB, 0x01CC}, // ['NJ' 'Nj' 'nj'] 115: {0x01CB, 0x01CA, 0x01CC}, // ['Nj' 'NJ' 'nj'] 9: {0x01CC, 0x01CA, 0x01CB}, // ['nj' 'NJ' 'Nj'] 193: {0x01F1, 0x01F2, 0x01F3}, // ['DZ' 'Dz' 'dz'] 88: {0x01F2, 0x01F1, 0x01F3}, // ['Dz' 'DZ' 'dz'] 238: {0x01F3, 0x01F1, 0x01F2}, // ['dz' 'DZ' 'Dz'] 89: {0x0345, 0x0399, 0x03B9, 0x1FBE}, // ['ͅ' 'Ι' 'ι' 'ι'] 141: {0x0392, 0x03B2, 0x03D0}, // ['Β' 'β' 'ϐ'] 79: {0x0395, 0x03B5, 0x03F5}, // ['Ε' 'ε' 'ϵ'] 18: {0x0398, 0x03B8, 0x03D1, 0x03F4}, // ['Θ' 'θ' 'ϑ' 'ϴ'] 169: {0x0399, 0x0345, 0x03B9, 0x1FBE}, // ['Ι' 'ͅ' 'ι' 'ι'] 63: {0x039A, 0x03BA, 0x03F0}, // ['Κ' 'κ' 'ϰ'] 107: {0x039C, 0x00B5, 0x03BC}, // ['Μ' 'µ' 'μ'] 197: {0x03A0, 0x03C0, 0x03D6}, // ['Π' 'π' 'ϖ'] 91: {0x03A1, 0x03C1, 0x03F1}, // ['Ρ' 'ρ' 'ϱ'] 135: {0x03A3, 0x03C2, 0x03C3}, // ['Σ' 'ς' 'σ'] 74: {0x03A6, 0x03C6, 0x03D5}, // ['Φ' 'φ' 'ϕ'] 13: {0x03A9, 0x03C9, 0x2126}, // ['Ω' 'ω' 'Ω'] 86: {0x03B2, 0x0392, 0x03D0}, // ['β' 'Β' 'ϐ'] 24: {0x03B5, 0x0395, 0x03F5}, // ['ε' 'Ε' 'ϵ'] 219: {0x03B8, 0x0398, 0x03D1, 0x03F4}, // ['θ' 'Θ' 'ϑ' 'ϴ'] 114: {0x03B9, 0x0345, 0x0399, 0x1FBE}, // ['ι' 'ͅ' 'Ι' 'ι'] 8: {0x03BA, 0x039A, 0x03F0}, // ['κ' 'Κ' 'ϰ'] 52: {0x03BC, 0x00B5, 0x039C}, // ['μ' 'µ' 'Μ'] 142: {0x03C0, 0x03A0, 0x03D6}, // ['π' 'Π' 'ϖ'] 36: {0x03C1, 0x03A1, 0x03F1}, // ['ρ' 'Ρ' 'ϱ'] 186: {0x03C2, 0x03A3, 0x03C3}, // ['ς' 'Σ' 'σ'] 80: {0x03C3, 0x03A3, 0x03C2}, // ['σ' 'Σ' 'ς'] 19: {0x03C6, 0x03A6, 0x03D5}, // ['φ' 'Φ' 'ϕ'] 214: {0x03C9, 0x03A9, 0x2126}, // ['ω' 'Ω' 'Ω'] 242: {0x03D0, 0x0392, 0x03B2}, // ['ϐ' 'Β' 'β'] 136: {0x03D1, 0x0398, 0x03B8, 0x03F4}, // ['ϑ' 'Θ' 'θ' 'ϴ'] 225: {0x03D5, 0x03A6, 0x03C6}, // ['ϕ' 'Φ' 'φ'] 120: {0x03D6, 0x03A0, 0x03C0}, // ['ϖ' 'Π' 'π'] 187: {0x03F0, 0x039A, 0x03BA}, // ['ϰ' 'Κ' 'κ'] 81: {0x03F1, 0x03A1, 0x03C1}, // ['ϱ' 'Ρ' 'ρ'] 20: {0x03F4, 0x0398, 0x03B8, 0x03D1}, // ['ϴ' 'Θ' 'θ' 'ϑ'] 170: {0x03F5, 0x0395, 0x03B5}, // ['ϵ' 'Ε' 'ε'] 177: {0x0412, 0x0432, 0x1C80}, // ['В' 'в' 'ᲀ'] 221: {0x0414, 0x0434, 0x1C81}, // ['Д' 'д' 'ᲁ'] 188: {0x041E, 0x043E, 0x1C82}, // ['О' 'о' 'ᲂ'] 127: {0x0421, 0x0441, 0x1C83}, // ['С' 'с' 'ᲃ'] 21: {0x0422, 0x0442, 0x1C84, 0x1C85}, // ['Т' 'т' 'ᲄ' 'ᲅ'] 199: {0x042A, 0x044A, 0x1C86}, // ['Ъ' 'ъ' 'ᲆ'] 122: {0x0432, 0x0412, 0x1C80}, // ['в' 'В' 'ᲀ'] 166: {0x0434, 0x0414, 0x1C81}, // ['д' 'Д' 'ᲁ'] 133: {0x043E, 0x041E, 0x1C82}, // ['о' 'О' 'ᲂ'] 72: {0x0441, 0x0421, 0x1C83}, // ['с' 'С' 'ᲃ'] 222: {0x0442, 0x0422, 0x1C84, 0x1C85}, // ['т' 'Т' 'ᲄ' 'ᲅ'] 144: {0x044A, 0x042A, 0x1C86}, // ['ъ' 'Ъ' 'ᲆ'] 167: {0x0462, 0x0463, 0x1C87}, // ['Ѣ' 'ѣ' 'ᲇ'] 61: {0x0463, 0x0462, 0x1C87}, // ['ѣ' 'Ѣ' 'ᲇ'] 4: {0x1C80, 0x0412, 0x0432}, // ['ᲀ' 'В' 'в'] 154: {0x1C81, 0x0414, 0x0434}, // ['ᲁ' 'Д' 'д'] 48: {0x1C82, 0x041E, 0x043E}, // ['ᲂ' 'О' 'о'] 198: {0x1C83, 0x0421, 0x0441}, // ['ᲃ' 'С' 'с'] 93: {0x1C84, 0x0422, 0x0442, 0x1C85}, // ['ᲄ' 'Т' 'т' 'ᲅ'] 243: {0x1C85, 0x0422, 0x0442, 0x1C84}, // ['ᲅ' 'Т' 'т' 'ᲄ'] 137: {0x1C86, 0x042A, 0x044A}, // ['ᲆ' 'Ъ' 'ъ'] 31: {0x1C87, 0x0462, 0x0463}, // ['ᲇ' 'Ѣ' 'ѣ'] 182: {0x1C88, 0xA64A, 0xA64B}, // ['ᲈ' 'Ꙋ' 'ꙋ'] 203: {0x1E60, 0x1E61, 0x1E9B}, // ['Ṡ' 'ṡ' 'ẛ'] 97: {0x1E61, 0x1E60, 0x1E9B}, // ['ṡ' 'Ṡ' 'ẛ'] 109: {0x1E9B, 0x1E60, 0x1E61}, // ['ẛ' 'Ṡ' 'ṡ'] 65: {0x1FBE, 0x0345, 0x0399, 0x03B9}, // ['ι' 'ͅ' 'Ι' 'ι'] 150: {0x2126, 0x03A9, 0x03C9}, // ['Ω' 'Ω' 'ω'] 239: {0x212A, 0x004B, 0x006B}, // ['K' 'K' 'k'] 134: {0x212B, 0x00C5, 0x00E5}, // ['Å' 'Å' 'å'] 32: {0xA64A, 0x1C88, 0xA64B}, // ['Ꙋ' 'ᲈ' 'ꙋ'] 183: {0xA64B, 0x1C88, 0xA64A}, // ['ꙋ' 'ᲈ' 'Ꙋ'] } const _FoldMapExcludingUpperLowerSeed = 0x96480001 const _FoldMapExcludingUpperLowerShift = 24 // _FoldMapExcludingUpperLower stores the Unicode case-folds for charactecrs that // have two or more folds, but excludes the uppercase and lowercase forms of the // character. var _FoldMapExcludingUpperLower = [256]struct { r uint16 a [2]uint16 }{ 7: {0x004B, [2]uint16{0x212A, 0x212A}}, // 'K': ['K', 'K'] 185: {0x0053, [2]uint16{0x017F, 0x017F}}, // 'S': ['ſ', 'ſ'] 208: {0x006B, [2]uint16{0x212A, 0x212A}}, // 'k': ['K', 'K'] 130: {0x0073, [2]uint16{0x017F, 0x017F}}, // 's': ['ſ', 'ſ'] 64: {0x00B5, [2]uint16{0x03BC, 0x03BC}}, // 'µ': ['μ', 'μ'] 165: {0x00C5, [2]uint16{0x212B, 0x212B}}, // 'Å': ['Å', 'Å'] 232: {0x00DF, [2]uint16{0x1E9E, 0x1E9E}}, // 'ß': ['ẞ', 'ẞ'] 110: {0x00E5, [2]uint16{0x212B, 0x212B}}, // 'å': ['Å', 'Å'] 117: {0x0130, [2]uint16{0x0130, 0x0130}}, // 'İ': ['İ', 'İ'] 11: {0x0131, [2]uint16{0x0131, 0x0131}}, // 'ı': ['ı', 'ı'] 213: {0x017F, [2]uint16{0x0073, 0x0073}}, // 'ſ': ['s', 's'] 87: {0x01C4, [2]uint16{0x01C5, 0x01C5}}, // 'DŽ': ['Dž', 'Dž'] 237: {0x01C5, [2]uint16{0x01C5, 0x01C5}}, // 'Dž': ['Dž', 'Dž'] 131: {0x01C6, [2]uint16{0x01C5, 0x01C5}}, // 'dž': ['Dž', 'Dž'] 25: {0x01C7, [2]uint16{0x01C8, 0x01C8}}, // 'LJ': ['Lj', 'Lj'] 176: {0x01C8, [2]uint16{0x01C8, 0x01C8}}, // 'Lj': ['Lj', 'Lj'] 70: {0x01C9, [2]uint16{0x01C8, 0x01C8}}, // 'lj': ['Lj', 'Lj'] 220: {0x01CA, [2]uint16{0x01CB, 0x01CB}}, // 'NJ': ['Nj', 'Nj'] 115: {0x01CB, [2]uint16{0x01CB, 0x01CB}}, // 'Nj': ['Nj', 'Nj'] 9: {0x01CC, [2]uint16{0x01CB, 0x01CB}}, // 'nj': ['Nj', 'Nj'] 193: {0x01F1, [2]uint16{0x01F2, 0x01F2}}, // 'DZ': ['Dz', 'Dz'] 88: {0x01F2, [2]uint16{0x01F2, 0x01F2}}, // 'Dz': ['Dz', 'Dz'] 238: {0x01F3, [2]uint16{0x01F2, 0x01F2}}, // 'dz': ['Dz', 'Dz'] 89: {0x0345, [2]uint16{0x03B9, 0x1FBE}}, // 'ͅ': ['ι', 'ι'] 141: {0x0392, [2]uint16{0x03D0, 0x03D0}}, // 'Β': ['ϐ', 'ϐ'] 79: {0x0395, [2]uint16{0x03F5, 0x03F5}}, // 'Ε': ['ϵ', 'ϵ'] 18: {0x0398, [2]uint16{0x03D1, 0x03F4}}, // 'Θ': ['ϑ', 'ϴ'] 169: {0x0399, [2]uint16{0x0345, 0x1FBE}}, // 'Ι': ['ͅ', 'ι'] 63: {0x039A, [2]uint16{0x03F0, 0x03F0}}, // 'Κ': ['ϰ', 'ϰ'] 107: {0x039C, [2]uint16{0x00B5, 0x00B5}}, // 'Μ': ['µ', 'µ'] 197: {0x03A0, [2]uint16{0x03D6, 0x03D6}}, // 'Π': ['ϖ', 'ϖ'] 91: {0x03A1, [2]uint16{0x03F1, 0x03F1}}, // 'Ρ': ['ϱ', 'ϱ'] 135: {0x03A3, [2]uint16{0x03C2, 0x03C2}}, // 'Σ': ['ς', 'ς'] 74: {0x03A6, [2]uint16{0x03D5, 0x03D5}}, // 'Φ': ['ϕ', 'ϕ'] 13: {0x03A9, [2]uint16{0x2126, 0x2126}}, // 'Ω': ['Ω', 'Ω'] 86: {0x03B2, [2]uint16{0x03D0, 0x03D0}}, // 'β': ['ϐ', 'ϐ'] 24: {0x03B5, [2]uint16{0x03F5, 0x03F5}}, // 'ε': ['ϵ', 'ϵ'] 219: {0x03B8, [2]uint16{0x03D1, 0x03F4}}, // 'θ': ['ϑ', 'ϴ'] 114: {0x03B9, [2]uint16{0x0345, 0x1FBE}}, // 'ι': ['ͅ', 'ι'] 8: {0x03BA, [2]uint16{0x03F0, 0x03F0}}, // 'κ': ['ϰ', 'ϰ'] 52: {0x03BC, [2]uint16{0x00B5, 0x00B5}}, // 'μ': ['µ', 'µ'] 142: {0x03C0, [2]uint16{0x03D6, 0x03D6}}, // 'π': ['ϖ', 'ϖ'] 36: {0x03C1, [2]uint16{0x03F1, 0x03F1}}, // 'ρ': ['ϱ', 'ϱ'] 186: {0x03C2, [2]uint16{0x03C3, 0x03C3}}, // 'ς': ['σ', 'σ'] 80: {0x03C3, [2]uint16{0x03C2, 0x03C2}}, // 'σ': ['ς', 'ς'] 19: {0x03C6, [2]uint16{0x03D5, 0x03D5}}, // 'φ': ['ϕ', 'ϕ'] 214: {0x03C9, [2]uint16{0x2126, 0x2126}}, // 'ω': ['Ω', 'Ω'] 242: {0x03D0, [2]uint16{0x03B2, 0x03B2}}, // 'ϐ': ['β', 'β'] 136: {0x03D1, [2]uint16{0x03B8, 0x03F4}}, // 'ϑ': ['θ', 'ϴ'] 225: {0x03D5, [2]uint16{0x03C6, 0x03C6}}, // 'ϕ': ['φ', 'φ'] 120: {0x03D6, [2]uint16{0x03C0, 0x03C0}}, // 'ϖ': ['π', 'π'] 187: {0x03F0, [2]uint16{0x03BA, 0x03BA}}, // 'ϰ': ['κ', 'κ'] 81: {0x03F1, [2]uint16{0x03C1, 0x03C1}}, // 'ϱ': ['ρ', 'ρ'] 20: {0x03F4, [2]uint16{0x0398, 0x03D1}}, // 'ϴ': ['Θ', 'ϑ'] 170: {0x03F5, [2]uint16{0x03B5, 0x03B5}}, // 'ϵ': ['ε', 'ε'] 177: {0x0412, [2]uint16{0x1C80, 0x1C80}}, // 'В': ['ᲀ', 'ᲀ'] 221: {0x0414, [2]uint16{0x1C81, 0x1C81}}, // 'Д': ['ᲁ', 'ᲁ'] 188: {0x041E, [2]uint16{0x1C82, 0x1C82}}, // 'О': ['ᲂ', 'ᲂ'] 127: {0x0421, [2]uint16{0x1C83, 0x1C83}}, // 'С': ['ᲃ', 'ᲃ'] 21: {0x0422, [2]uint16{0x1C84, 0x1C85}}, // 'Т': ['ᲄ', 'ᲅ'] 199: {0x042A, [2]uint16{0x1C86, 0x1C86}}, // 'Ъ': ['ᲆ', 'ᲆ'] 122: {0x0432, [2]uint16{0x1C80, 0x1C80}}, // 'в': ['ᲀ', 'ᲀ'] 166: {0x0434, [2]uint16{0x1C81, 0x1C81}}, // 'д': ['ᲁ', 'ᲁ'] 133: {0x043E, [2]uint16{0x1C82, 0x1C82}}, // 'о': ['ᲂ', 'ᲂ'] 72: {0x0441, [2]uint16{0x1C83, 0x1C83}}, // 'с': ['ᲃ', 'ᲃ'] 222: {0x0442, [2]uint16{0x1C84, 0x1C85}}, // 'т': ['ᲄ', 'ᲅ'] 144: {0x044A, [2]uint16{0x1C86, 0x1C86}}, // 'ъ': ['ᲆ', 'ᲆ'] 167: {0x0462, [2]uint16{0x1C87, 0x1C87}}, // 'Ѣ': ['ᲇ', 'ᲇ'] 61: {0x0463, [2]uint16{0x1C87, 0x1C87}}, // 'ѣ': ['ᲇ', 'ᲇ'] 4: {0x1C80, [2]uint16{0x0432, 0x0432}}, // 'ᲀ': ['в', 'в'] 154: {0x1C81, [2]uint16{0x0434, 0x0434}}, // 'ᲁ': ['д', 'д'] 48: {0x1C82, [2]uint16{0x043E, 0x043E}}, // 'ᲂ': ['о', 'о'] 198: {0x1C83, [2]uint16{0x0441, 0x0441}}, // 'ᲃ': ['с', 'с'] 93: {0x1C84, [2]uint16{0x0442, 0x1C85}}, // 'ᲄ': ['т', 'ᲅ'] 243: {0x1C85, [2]uint16{0x0442, 0x1C84}}, // 'ᲅ': ['т', 'ᲄ'] 137: {0x1C86, [2]uint16{0x044A, 0x044A}}, // 'ᲆ': ['ъ', 'ъ'] 31: {0x1C87, [2]uint16{0x0463, 0x0463}}, // 'ᲇ': ['ѣ', 'ѣ'] 182: {0x1C88, [2]uint16{0xA64B, 0xA64B}}, // 'ᲈ': ['ꙋ', 'ꙋ'] 203: {0x1E60, [2]uint16{0x1E9B, 0x1E9B}}, // 'Ṡ': ['ẛ', 'ẛ'] 97: {0x1E61, [2]uint16{0x1E9B, 0x1E9B}}, // 'ṡ': ['ẛ', 'ẛ'] 109: {0x1E9B, [2]uint16{0x1E61, 0x1E61}}, // 'ẛ': ['ṡ', 'ṡ'] 65: {0x1FBE, [2]uint16{0x0345, 0x03B9}}, // 'ι': ['ͅ', 'ι'] 150: {0x2126, [2]uint16{0x03A9, 0x03A9}}, // 'Ω': ['Ω', 'Ω'] 239: {0x212A, [2]uint16{0x004B, 0x004B}}, // 'K': ['K', 'K'] 134: {0x212B, [2]uint16{0x00C5, 0x00C5}}, // 'Å': ['Å', 'Å'] 32: {0xA64A, [2]uint16{0x1C88, 0x1C88}}, // 'Ꙋ': ['ᲈ', 'ᲈ'] 183: {0xA64B, [2]uint16{0x1C88, 0x1C88}}, // 'ꙋ': ['ᲈ', 'ᲈ'] } strcase-0.0.5/internal/tables/tables_go121.go 0000664 0000000 0000000 00000622046 14720254634 0021001 0 ustar 00root root 0000000 0000000 // Code generated by running "go generate" in github.com/charlievieth/strcase. DO NOT EDIT. //go:build go1.21 // +build go1.21 package tables import "unicode" // UnicodeVersion is the Unicode version from which the tables in this package are derived. const UnicodeVersion = "15.0.0" func init() { // This is essentially a compile time assertion that can only fail if a // future Go release updates the version of Unicode it supports. This // check is elided if the Unicode versions match. // // TLDR if you see this panic file an issue: // https://github.com/charlievieth/strcase/issues // if UnicodeVersion != unicode.Version { panic("strcase.UnicodeVersion \"" + UnicodeVersion + "\" != unicode.Version \"" + unicode.Version + "\"") } } // A foldPair stores Unicode case folding pairs type foldPair struct { From uint32 To uint32 } // TODO: rename to "foldCase" // // CaseFold returns the Unicode simple case-fold for r, if one exists, or r // unmodified, if one does not exist. func CaseFold(r rune) rune { // TODO: check if r is ASCII here? u := uint32(r) h := (u * _CaseFoldsSeed) >> _CaseFoldsShift p := _CaseFolds[h] if p.From == u { r = rune(p.To) } return r } // TODO: rename func FoldMap(r rune) *[4]uint16 { u := uint32(r) h := (u * _FoldMapSeed) >> _FoldMapShift p := &_FoldMap[h] if uint32(p[0]) == u { return p } return nil } func FoldMapExcludingUpperLower(r rune) [2]rune { u := uint32(r) h := (u * _FoldMapSeed) >> _FoldMapShift p := &_FoldMapExcludingUpperLower[h] if uint32(p.r) == u { return [2]rune{rune(p.a[0]), rune(p.a[1])} } return [2]rune{} } // ToUpperLower combines unicode.ToUpper and unicode.ToLower in one function. func ToUpperLower(r rune) (upper, lower rune, foundMapping bool) { if r <= 0x80 { if 'A' <= r && r <= 'Z' { return r, r + ('a' - 'A'), true } if 'a' <= r && r <= 'z' { return r - ('a' - 'A'), r, true } return r, r, false } // Hash rune r and see if it's in the _UpperLower table. u := uint32(r) h := (u | u<<24) * _UpperLowerSeed p := &_UpperLower[h>>_UpperLowerShift] if p[0] == u || p[1] == u { return rune(p[0]), rune(p[1]), true } // Handle Unicode characters that do not equal // their upper and lower case forms. return toUpperLowerSpecial(r) } const _CaseFoldsSeed = 0xFFE00C86 const _CaseFoldsShift = 19 // _CaseFolds stores all Unicode simple case-folds. var _CaseFolds = [8192]foldPair{ 66: {0x1FFC, 0x1FF3}, // 'ῼ' => 'ῳ' 70: {0x1FFB, 0x1F7D}, // 'Ώ' => 'ώ' 74: {0x1FFA, 0x1F7C}, // 'Ὼ' => 'ὼ' 78: {0x1FF9, 0x1F79}, // 'Ό' => 'ό' 82: {0x1FF8, 0x1F78}, // 'Ὸ' => 'ὸ' 129: {0x1FEC, 0x1FE5}, // 'Ῥ' => 'ῥ' 133: {0x1FEB, 0x1F7B}, // 'Ύ' => 'ύ' 137: {0x1FEA, 0x1F7A}, // 'Ὺ' => 'ὺ' 141: {0x1FE9, 0x1FE1}, // 'Ῡ' => 'ῡ' 145: {0x1FE8, 0x1FE0}, // 'Ῠ' => 'ῠ' 197: {0x1FDB, 0x1F77}, // 'Ί' => 'ί' 201: {0x1FDA, 0x1F76}, // 'Ὶ' => 'ὶ' 205: {0x1FD9, 0x1FD1}, // 'Ῑ' => 'ῑ' 209: {0x1FD8, 0x1FD0}, // 'Ῐ' => 'ῐ' 257: {0x1FCC, 0x1FC3}, // 'ῌ' => 'ῃ' 261: {0x1FCB, 0x1F75}, // 'Ή' => 'ή' 265: {0x1FCA, 0x1F74}, // 'Ὴ' => 'ὴ' 269: {0x1FC9, 0x1F73}, // 'Έ' => 'έ' 273: {0x1FC8, 0x1F72}, // 'Ὲ' => 'ὲ' 306: {0xA7F5, 0xA7F6}, // 'Ꟶ' => 'ꟶ' 313: {0x1FBE, 0x03B9}, // 'ι' => 'ι' 321: {0x1FBC, 0x1FB3}, // 'ᾼ' => 'ᾳ' 325: {0x1FBB, 0x1F71}, // 'Ά' => 'ά' 329: {0x1FBA, 0x1F70}, // 'Ὰ' => 'ὰ' 333: {0x1FB9, 0x1FB1}, // 'Ᾱ' => 'ᾱ' 337: {0x1FB8, 0x1FB0}, // 'Ᾰ' => 'ᾰ' 373: {0x1FAF, 0x1FA7}, // 'ᾯ' => 'ᾧ' 377: {0x1FAE, 0x1FA6}, // 'ᾮ' => 'ᾦ' 381: {0x1FAD, 0x1FA5}, // 'ᾭ' => 'ᾥ' 385: {0x1FAC, 0x1FA4}, // 'ᾬ' => 'ᾤ' 389: {0x1FAB, 0x1FA3}, // 'ᾫ' => 'ᾣ' 393: {0x1FAA, 0x1FA2}, // 'ᾪ' => 'ᾢ' 397: {0x1FA9, 0x1FA1}, // 'ᾩ' => 'ᾡ' 401: {0x1FA8, 0x1FA0}, // 'ᾨ' => 'ᾠ' 422: {0xA7D8, 0xA7D9}, // 'Ꟙ' => 'ꟙ' 430: {0xA7D6, 0xA7D7}, // 'Ꟗ' => 'ꟗ' 437: {0x1F9F, 0x1F97}, // 'ᾟ' => 'ᾗ' 441: {0x1F9E, 0x1F96}, // 'ᾞ' => 'ᾖ' 445: {0x1F9D, 0x1F95}, // 'ᾝ' => 'ᾕ' 449: {0x1F9C, 0x1F94}, // 'ᾜ' => 'ᾔ' 453: {0x1F9B, 0x1F93}, // 'ᾛ' => 'ᾓ' 454: {0xA7D0, 0xA7D1}, // 'Ꟑ' => 'ꟑ' 457: {0x1F9A, 0x1F92}, // 'ᾚ' => 'ᾒ' 461: {0x1F99, 0x1F91}, // 'ᾙ' => 'ᾑ' 465: {0x1F98, 0x1F90}, // 'ᾘ' => 'ᾐ' 482: {0xA7C9, 0xA7CA}, // 'Ꟊ' => 'ꟊ' 490: {0xA7C7, 0xA7C8}, // 'Ꟈ' => 'ꟈ' 494: {0xA7C6, 0x1D8E}, // 'Ᶎ' => 'ᶎ' 498: {0xA7C5, 0x0282}, // 'Ʂ' => 'ʂ' 501: {0x1F8F, 0x1F87}, // 'ᾏ' => 'ᾇ' 502: {0xA7C4, 0xA794}, // 'Ꞔ' => 'ꞔ' 505: {0x1F8E, 0x1F86}, // 'ᾎ' => 'ᾆ' 509: {0x1F8D, 0x1F85}, // 'ᾍ' => 'ᾅ' 510: {0xA7C2, 0xA7C3}, // 'Ꟃ' => 'ꟃ' 513: {0x1F8C, 0x1F84}, // 'ᾌ' => 'ᾄ' 517: {0x1F8B, 0x1F83}, // 'ᾋ' => 'ᾃ' 518: {0xA7C0, 0xA7C1}, // 'Ꟁ' => 'ꟁ' 521: {0x1F8A, 0x1F82}, // 'ᾊ' => 'ᾂ' 525: {0x1F89, 0x1F81}, // 'ᾉ' => 'ᾁ' 526: {0xA7BE, 0xA7BF}, // 'Ꞿ' => 'ꞿ' 529: {0x1F88, 0x1F80}, // 'ᾈ' => 'ᾀ' 534: {0xA7BC, 0xA7BD}, // 'Ꞽ' => 'ꞽ' 542: {0xA7BA, 0xA7BB}, // 'Ꞻ' => 'ꞻ' 550: {0xA7B8, 0xA7B9}, // 'Ꞹ' => 'ꞹ' 558: {0xA7B6, 0xA7B7}, // 'Ꞷ' => 'ꞷ' 566: {0xA7B4, 0xA7B5}, // 'Ꞵ' => 'ꞵ' 570: {0xA7B3, 0xAB53}, // 'Ꭓ' => 'ꭓ' 574: {0xA7B2, 0x029D}, // 'Ʝ' => 'ʝ' 578: {0xA7B1, 0x0287}, // 'Ʇ' => 'ʇ' 582: {0xA7B0, 0x029E}, // 'Ʞ' => 'ʞ' 590: {0xA7AE, 0x026A}, // 'Ɪ' => 'ɪ' 594: {0xA7AD, 0x026C}, // 'Ɬ' => 'ɬ' 598: {0xA7AC, 0x0261}, // 'Ɡ' => 'ɡ' 602: {0xA7AB, 0x025C}, // 'Ɜ' => 'ɜ' 606: {0xA7AA, 0x0266}, // 'Ɦ' => 'ɦ' 614: {0xA7A8, 0xA7A9}, // 'Ꞩ' => 'ꞩ' 622: {0xA7A6, 0xA7A7}, // 'Ꞧ' => 'ꞧ' 629: {0x1F6F, 0x1F67}, // 'Ὧ' => 'ὧ' 630: {0xA7A4, 0xA7A5}, // 'Ꞥ' => 'ꞥ' 633: {0x1F6E, 0x1F66}, // 'Ὦ' => 'ὦ' 637: {0x1F6D, 0x1F65}, // 'Ὥ' => 'ὥ' 638: {0xA7A2, 0xA7A3}, // 'Ꞣ' => 'ꞣ' 641: {0x1F6C, 0x1F64}, // 'Ὤ' => 'ὤ' 645: {0x1F6B, 0x1F63}, // 'Ὣ' => 'ὣ' 646: {0xA7A0, 0xA7A1}, // 'Ꞡ' => 'ꞡ' 649: {0x1F6A, 0x1F62}, // 'Ὢ' => 'ὢ' 653: {0x1F69, 0x1F61}, // 'Ὡ' => 'ὡ' 654: {0xA79E, 0xA79F}, // 'Ꞟ' => 'ꞟ' 657: {0x1F68, 0x1F60}, // 'Ὠ' => 'ὠ' 662: {0xA79C, 0xA79D}, // 'Ꞝ' => 'ꞝ' 670: {0xA79A, 0xA79B}, // 'Ꞛ' => 'ꞛ' 678: {0xA798, 0xA799}, // 'Ꞙ' => 'ꞙ' 686: {0xA796, 0xA797}, // 'Ꞗ' => 'ꞗ' 693: {0x1F5F, 0x1F57}, // 'Ὗ' => 'ὗ' 701: {0x1F5D, 0x1F55}, // 'Ὕ' => 'ὕ' 702: {0xA792, 0xA793}, // 'Ꞓ' => 'ꞓ' 709: {0x1F5B, 0x1F53}, // 'Ὓ' => 'ὓ' 710: {0xA790, 0xA791}, // 'Ꞑ' => 'ꞑ' 717: {0x1F59, 0x1F51}, // 'Ὑ' => 'ὑ' 722: {0xA78D, 0x0265}, // 'Ɥ' => 'ɥ' 730: {0xA78B, 0xA78C}, // 'Ꞌ' => 'ꞌ' 750: {0xA786, 0xA787}, // 'Ꞇ' => 'ꞇ' 758: {0xA784, 0xA785}, // 'Ꞅ' => 'ꞅ' 764: {0x1F4D, 0x1F45}, // 'Ὅ' => 'ὅ' 766: {0xA782, 0xA783}, // 'Ꞃ' => 'ꞃ' 768: {0x1F4C, 0x1F44}, // 'Ὄ' => 'ὄ' 772: {0x1F4B, 0x1F43}, // 'Ὃ' => 'ὃ' 774: {0xA780, 0xA781}, // 'Ꞁ' => 'ꞁ' 776: {0x1F4A, 0x1F42}, // 'Ὂ' => 'ὂ' 780: {0x1F49, 0x1F41}, // 'Ὁ' => 'ὁ' 782: {0xA77E, 0xA77F}, // 'Ꝿ' => 'ꝿ' 784: {0x1F48, 0x1F40}, // 'Ὀ' => 'ὀ' 786: {0xA77D, 0x1D79}, // 'Ᵹ' => 'ᵹ' 794: {0xA77B, 0xA77C}, // 'Ꝼ' => 'ꝼ' 802: {0xA779, 0xA77A}, // 'Ꝺ' => 'ꝺ' 820: {0x1F3F, 0x1F37}, // 'Ἷ' => 'ἷ' 824: {0x1F3E, 0x1F36}, // 'Ἶ' => 'ἶ' 828: {0x1F3D, 0x1F35}, // 'Ἵ' => 'ἵ' 832: {0x1F3C, 0x1F34}, // 'Ἴ' => 'ἴ' 836: {0x1F3B, 0x1F33}, // 'Ἳ' => 'ἳ' 840: {0x1F3A, 0x1F32}, // 'Ἲ' => 'ἲ' 844: {0x1F39, 0x1F31}, // 'Ἱ' => 'ἱ' 846: {0xA76E, 0xA76F}, // 'Ꝯ' => 'ꝯ' 848: {0x1F38, 0x1F30}, // 'Ἰ' => 'ἰ' 854: {0xA76C, 0xA76D}, // 'Ꝭ' => 'ꝭ' 862: {0xA76A, 0xA76B}, // 'Ꝫ' => 'ꝫ' 870: {0xA768, 0xA769}, // 'Ꝩ' => 'ꝩ' 878: {0xA766, 0xA767}, // 'Ꝧ' => 'ꝧ' 884: {0x1F2F, 0x1F27}, // 'Ἧ' => 'ἧ' 886: {0xA764, 0xA765}, // 'Ꝥ' => 'ꝥ' 888: {0x1F2E, 0x1F26}, // 'Ἦ' => 'ἦ' 892: {0x1F2D, 0x1F25}, // 'Ἥ' => 'ἥ' 894: {0xA762, 0xA763}, // 'Ꝣ' => 'ꝣ' 896: {0x1F2C, 0x1F24}, // 'Ἤ' => 'ἤ' 900: {0x1F2B, 0x1F23}, // 'Ἣ' => 'ἣ' 902: {0xA760, 0xA761}, // 'Ꝡ' => 'ꝡ' 904: {0x1F2A, 0x1F22}, // 'Ἢ' => 'ἢ' 908: {0x1F29, 0x1F21}, // 'Ἡ' => 'ἡ' 910: {0xA75E, 0xA75F}, // 'Ꝟ' => 'ꝟ' 912: {0x1F28, 0x1F20}, // 'Ἠ' => 'ἠ' 917: {0xA75C, 0xA75D}, // 'Ꝝ' => 'ꝝ' 925: {0xA75A, 0xA75B}, // 'Ꝛ' => 'ꝛ' 933: {0xA758, 0xA759}, // 'Ꝙ' => 'ꝙ' 941: {0xA756, 0xA757}, // 'Ꝗ' => 'ꝗ' 949: {0xA754, 0xA755}, // 'Ꝕ' => 'ꝕ' 956: {0x1F1D, 0x1F15}, // 'Ἕ' => 'ἕ' 957: {0xA752, 0xA753}, // 'Ꝓ' => 'ꝓ' 960: {0x1F1C, 0x1F14}, // 'Ἔ' => 'ἔ' 964: {0x1F1B, 0x1F13}, // 'Ἓ' => 'ἓ' 965: {0xA750, 0xA751}, // 'Ꝑ' => 'ꝑ' 968: {0x1F1A, 0x1F12}, // 'Ἒ' => 'ἒ' 972: {0x1F19, 0x1F11}, // 'Ἑ' => 'ἑ' 973: {0xA74E, 0xA74F}, // 'Ꝏ' => 'ꝏ' 976: {0x1F18, 0x1F10}, // 'Ἐ' => 'ἐ' 981: {0xA74C, 0xA74D}, // 'Ꝍ' => 'ꝍ' 989: {0xA74A, 0xA74B}, // 'Ꝋ' => 'ꝋ' 997: {0xA748, 0xA749}, // 'Ꝉ' => 'ꝉ' 1005: {0xA746, 0xA747}, // 'Ꝇ' => 'ꝇ' 1012: {0x1F0F, 0x1F07}, // 'Ἇ' => 'ἇ' 1013: {0xA744, 0xA745}, // 'Ꝅ' => 'ꝅ' 1016: {0x1F0E, 0x1F06}, // 'Ἆ' => 'ἆ' 1020: {0x1F0D, 0x1F05}, // 'Ἅ' => 'ἅ' 1021: {0xA742, 0xA743}, // 'Ꝃ' => 'ꝃ' 1024: {0x1F0C, 0x1F04}, // 'Ἄ' => 'ἄ' 1028: {0x1F0B, 0x1F03}, // 'Ἃ' => 'ἃ' 1029: {0xA740, 0xA741}, // 'Ꝁ' => 'ꝁ' 1032: {0x1F0A, 0x1F02}, // 'Ἂ' => 'ἂ' 1036: {0x1F09, 0x1F01}, // 'Ἁ' => 'ἁ' 1037: {0xA73E, 0xA73F}, // 'Ꜿ' => 'ꜿ' 1040: {0x1F08, 0x1F00}, // 'Ἀ' => 'ἀ' 1045: {0xA73C, 0xA73D}, // 'Ꜽ' => 'ꜽ' 1053: {0xA73A, 0xA73B}, // 'Ꜻ' => 'ꜻ' 1061: {0xA738, 0xA739}, // 'Ꜹ' => 'ꜹ' 1069: {0xA736, 0xA737}, // 'Ꜷ' => 'ꜷ' 1077: {0xA734, 0xA735}, // 'Ꜵ' => 'ꜵ' 1080: {0x1EFE, 0x1EFF}, // 'Ỿ' => 'ỿ' 1085: {0xA732, 0xA733}, // 'Ꜳ' => 'ꜳ' 1088: {0x1EFC, 0x1EFD}, // 'Ỽ' => 'ỽ' 1096: {0x1EFA, 0x1EFB}, // 'Ỻ' => 'ỻ' 1101: {0xA72E, 0xA72F}, // 'Ꜯ' => 'ꜯ' 1104: {0x1EF8, 0x1EF9}, // 'Ỹ' => 'ỹ' 1109: {0xA72C, 0xA72D}, // 'Ꜭ' => 'ꜭ' 1112: {0x1EF6, 0x1EF7}, // 'Ỷ' => 'ỷ' 1117: {0xA72A, 0xA72B}, // 'Ꜫ' => 'ꜫ' 1120: {0x1EF4, 0x1EF5}, // 'Ỵ' => 'ỵ' 1125: {0xA728, 0xA729}, // 'Ꜩ' => 'ꜩ' 1128: {0x1EF2, 0x1EF3}, // 'Ỳ' => 'ỳ' 1133: {0xA726, 0xA727}, // 'Ꜧ' => 'ꜧ' 1136: {0x1EF0, 0x1EF1}, // 'Ự' => 'ự' 1141: {0xA724, 0xA725}, // 'Ꜥ' => 'ꜥ' 1144: {0x1EEE, 0x1EEF}, // 'Ữ' => 'ữ' 1149: {0xA722, 0xA723}, // 'Ꜣ' => 'ꜣ' 1152: {0x1EEC, 0x1EED}, // 'Ử' => 'ử' 1160: {0x1EEA, 0x1EEB}, // 'Ừ' => 'ừ' 1168: {0x1EE8, 0x1EE9}, // 'Ứ' => 'ứ' 1176: {0x1EE6, 0x1EE7}, // 'Ủ' => 'ủ' 1184: {0x1EE4, 0x1EE5}, // 'Ụ' => 'ụ' 1191: {0xFF3A, 0xFF5A}, // 'Z' => 'z' 1192: {0x1EE2, 0x1EE3}, // 'Ợ' => 'ợ' 1195: {0xFF39, 0xFF59}, // 'Y' => 'y' 1199: {0xFF38, 0xFF58}, // 'X' => 'x' 1200: {0x1EE0, 0x1EE1}, // 'Ỡ' => 'ỡ' 1203: {0xFF37, 0xFF57}, // 'W' => 'w' 1207: {0xFF36, 0xFF56}, // 'V' => 'v' 1208: {0x1EDE, 0x1EDF}, // 'Ở' => 'ở' 1211: {0xFF35, 0xFF55}, // 'U' => 'u' 1215: {0xFF34, 0xFF54}, // 'T' => 't' 1216: {0x1EDC, 0x1EDD}, // 'Ờ' => 'ờ' 1219: {0xFF33, 0xFF53}, // 'S' => 's' 1223: {0xFF32, 0xFF52}, // 'R' => 'r' 1224: {0x1EDA, 0x1EDB}, // 'Ớ' => 'ớ' 1227: {0xFF31, 0xFF51}, // 'Q' => 'q' 1231: {0xFF30, 0xFF50}, // 'P' => 'p' 1232: {0x1ED8, 0x1ED9}, // 'Ộ' => 'ộ' 1235: {0xFF2F, 0xFF4F}, // 'O' => 'o' 1239: {0xFF2E, 0xFF4E}, // 'N' => 'n' 1240: {0x1ED6, 0x1ED7}, // 'Ỗ' => 'ỗ' 1243: {0xFF2D, 0xFF4D}, // 'M' => 'm' 1247: {0xFF2C, 0xFF4C}, // 'L' => 'l' 1248: {0x1ED4, 0x1ED5}, // 'Ổ' => 'ổ' 1251: {0xFF2B, 0xFF4B}, // 'K' => 'k' 1255: {0xFF2A, 0xFF4A}, // 'J' => 'j' 1256: {0x1ED2, 0x1ED3}, // 'Ồ' => 'ồ' 1259: {0xFF29, 0xFF49}, // 'I' => 'i' 1263: {0xFF28, 0xFF48}, // 'H' => 'h' 1264: {0x1ED0, 0x1ED1}, // 'Ố' => 'ố' 1267: {0xFF27, 0xFF47}, // 'G' => 'g' 1271: {0xFF26, 0xFF46}, // 'F' => 'f' 1272: {0x1ECE, 0x1ECF}, // 'Ỏ' => 'ỏ' 1275: {0xFF25, 0xFF45}, // 'E' => 'e' 1279: {0xFF24, 0xFF44}, // 'D' => 'd' 1280: {0x1ECC, 0x1ECD}, // 'Ọ' => 'ọ' 1283: {0xFF23, 0xFF43}, // 'C' => 'c' 1287: {0xFF22, 0xFF42}, // 'B' => 'b' 1288: {0x1ECA, 0x1ECB}, // 'Ị' => 'ị' 1291: {0xFF21, 0xFF41}, // 'A' => 'a' 1296: {0x1EC8, 0x1EC9}, // 'Ỉ' => 'ỉ' 1304: {0x1EC6, 0x1EC7}, // 'Ệ' => 'ệ' 1312: {0x1EC4, 0x1EC5}, // 'Ễ' => 'ễ' 1320: {0x1EC2, 0x1EC3}, // 'Ể' => 'ể' 1328: {0x1EC0, 0x1EC1}, // 'Ề' => 'ề' 1336: {0x1EBE, 0x1EBF}, // 'Ế' => 'ế' 1344: {0x1EBC, 0x1EBD}, // 'Ẽ' => 'ẽ' 1352: {0x1EBA, 0x1EBB}, // 'Ẻ' => 'ẻ' 1360: {0x1EB8, 0x1EB9}, // 'Ẹ' => 'ẹ' 1368: {0x1EB6, 0x1EB7}, // 'Ặ' => 'ặ' 1376: {0x1EB4, 0x1EB5}, // 'Ẵ' => 'ẵ' 1384: {0x1EB2, 0x1EB3}, // 'Ẳ' => 'ẳ' 1392: {0x1EB0, 0x1EB1}, // 'Ằ' => 'ằ' 1400: {0x1EAE, 0x1EAF}, // 'Ắ' => 'ắ' 1408: {0x1EAC, 0x1EAD}, // 'Ậ' => 'ậ' 1416: {0x1EAA, 0x1EAB}, // 'Ẫ' => 'ẫ' 1423: {0x1EA8, 0x1EA9}, // 'Ẩ' => 'ẩ' 1431: {0x1EA6, 0x1EA7}, // 'Ầ' => 'ầ' 1439: {0x1EA4, 0x1EA5}, // 'Ấ' => 'ấ' 1447: {0x1EA2, 0x1EA3}, // 'Ả' => 'ả' 1455: {0x1EA0, 0x1EA1}, // 'Ạ' => 'ạ' 1463: {0x1E9E, 0x00DF}, // 'ẞ' => 'ß' 1475: {0x1E9B, 0x1E61}, // 'ẛ' => 'ṡ' 1503: {0x1E94, 0x1E95}, // 'Ẕ' => 'ẕ' 1511: {0x1E92, 0x1E93}, // 'Ẓ' => 'ẓ' 1519: {0x1E90, 0x1E91}, // 'Ẑ' => 'ẑ' 1527: {0x1E8E, 0x1E8F}, // 'Ẏ' => 'ẏ' 1535: {0x1E8C, 0x1E8D}, // 'Ẍ' => 'ẍ' 1543: {0x1E8A, 0x1E8B}, // 'Ẋ' => 'ẋ' 1551: {0x1E88, 0x1E89}, // 'Ẉ' => 'ẉ' 1559: {0x1E86, 0x1E87}, // 'Ẇ' => 'ẇ' 1567: {0x1E84, 0x1E85}, // 'Ẅ' => 'ẅ' 1575: {0x1E82, 0x1E83}, // 'Ẃ' => 'ẃ' 1583: {0x1E80, 0x1E81}, // 'Ẁ' => 'ẁ' 1591: {0x1E7E, 0x1E7F}, // 'Ṿ' => 'ṿ' 1599: {0x1E7C, 0x1E7D}, // 'Ṽ' => 'ṽ' 1607: {0x1E7A, 0x1E7B}, // 'Ṻ' => 'ṻ' 1615: {0x1E78, 0x1E79}, // 'Ṹ' => 'ṹ' 1623: {0x1E76, 0x1E77}, // 'Ṷ' => 'ṷ' 1631: {0x1E74, 0x1E75}, // 'Ṵ' => 'ṵ' 1639: {0x1E72, 0x1E73}, // 'Ṳ' => 'ṳ' 1647: {0x1E70, 0x1E71}, // 'Ṱ' => 'ṱ' 1655: {0x1E6E, 0x1E6F}, // 'Ṯ' => 'ṯ' 1663: {0x1E6C, 0x1E6D}, // 'Ṭ' => 'ṭ' 1671: {0x1E6A, 0x1E6B}, // 'Ṫ' => 'ṫ' 1679: {0x1E68, 0x1E69}, // 'Ṩ' => 'ṩ' 1687: {0x1E66, 0x1E67}, // 'Ṧ' => 'ṧ' 1692: {0xA69A, 0xA69B}, // 'Ꚛ' => 'ꚛ' 1695: {0x1E64, 0x1E65}, // 'Ṥ' => 'ṥ' 1700: {0xA698, 0xA699}, // 'Ꚙ' => 'ꚙ' 1703: {0x1E62, 0x1E63}, // 'Ṣ' => 'ṣ' 1708: {0xA696, 0xA697}, // 'Ꚗ' => 'ꚗ' 1711: {0x1E60, 0x1E61}, // 'Ṡ' => 'ṡ' 1716: {0xA694, 0xA695}, // 'Ꚕ' => 'ꚕ' 1719: {0x1E5E, 0x1E5F}, // 'Ṟ' => 'ṟ' 1724: {0xA692, 0xA693}, // 'Ꚓ' => 'ꚓ' 1727: {0x1E5C, 0x1E5D}, // 'Ṝ' => 'ṝ' 1732: {0xA690, 0xA691}, // 'Ꚑ' => 'ꚑ' 1735: {0x1E5A, 0x1E5B}, // 'Ṛ' => 'ṛ' 1740: {0xA68E, 0xA68F}, // 'Ꚏ' => 'ꚏ' 1743: {0x1E58, 0x1E59}, // 'Ṙ' => 'ṙ' 1748: {0xA68C, 0xA68D}, // 'Ꚍ' => 'ꚍ' 1751: {0x1E56, 0x1E57}, // 'Ṗ' => 'ṗ' 1756: {0xA68A, 0xA68B}, // 'Ꚋ' => 'ꚋ' 1759: {0x1E54, 0x1E55}, // 'Ṕ' => 'ṕ' 1764: {0xA688, 0xA689}, // 'Ꚉ' => 'ꚉ' 1767: {0x1E52, 0x1E53}, // 'Ṓ' => 'ṓ' 1772: {0xA686, 0xA687}, // 'Ꚇ' => 'ꚇ' 1775: {0x1E50, 0x1E51}, // 'Ṑ' => 'ṑ' 1780: {0xA684, 0xA685}, // 'Ꚅ' => 'ꚅ' 1783: {0x1E4E, 0x1E4F}, // 'Ṏ' => 'ṏ' 1788: {0xA682, 0xA683}, // 'Ꚃ' => 'ꚃ' 1791: {0x1E4C, 0x1E4D}, // 'Ṍ' => 'ṍ' 1796: {0xA680, 0xA681}, // 'Ꚁ' => 'ꚁ' 1799: {0x1E4A, 0x1E4B}, // 'Ṋ' => 'ṋ' 1807: {0x1E48, 0x1E49}, // 'Ṉ' => 'ṉ' 1815: {0x1E46, 0x1E47}, // 'Ṇ' => 'ṇ' 1823: {0x1E44, 0x1E45}, // 'Ṅ' => 'ṅ' 1831: {0x1E42, 0x1E43}, // 'Ṃ' => 'ṃ' 1839: {0x1E40, 0x1E41}, // 'Ṁ' => 'ṁ' 1847: {0x1E3E, 0x1E3F}, // 'Ḿ' => 'ḿ' 1855: {0x1E3C, 0x1E3D}, // 'Ḽ' => 'ḽ' 1863: {0x1E3A, 0x1E3B}, // 'Ḻ' => 'ḻ' 1871: {0x1E38, 0x1E39}, // 'Ḹ' => 'ḹ' 1876: {0xA66C, 0xA66D}, // 'Ꙭ' => 'ꙭ' 1879: {0x1E36, 0x1E37}, // 'Ḷ' => 'ḷ' 1884: {0xA66A, 0xA66B}, // 'Ꙫ' => 'ꙫ' 1887: {0x1E34, 0x1E35}, // 'Ḵ' => 'ḵ' 1892: {0xA668, 0xA669}, // 'Ꙩ' => 'ꙩ' 1895: {0x1E32, 0x1E33}, // 'Ḳ' => 'ḳ' 1900: {0xA666, 0xA667}, // 'Ꙧ' => 'ꙧ' 1903: {0x1E30, 0x1E31}, // 'Ḱ' => 'ḱ' 1908: {0xA664, 0xA665}, // 'Ꙥ' => 'ꙥ' 1911: {0x1E2E, 0x1E2F}, // 'Ḯ' => 'ḯ' 1916: {0xA662, 0xA663}, // 'Ꙣ' => 'ꙣ' 1919: {0x1E2C, 0x1E2D}, // 'Ḭ' => 'ḭ' 1924: {0xA660, 0xA661}, // 'Ꙡ' => 'ꙡ' 1927: {0x1E2A, 0x1E2B}, // 'Ḫ' => 'ḫ' 1932: {0xA65E, 0xA65F}, // 'Ꙟ' => 'ꙟ' 1935: {0x1E28, 0x1E29}, // 'Ḩ' => 'ḩ' 1940: {0xA65C, 0xA65D}, // 'Ꙝ' => 'ꙝ' 1943: {0x1E26, 0x1E27}, // 'Ḧ' => 'ḧ' 1948: {0xA65A, 0xA65B}, // 'Ꙛ' => 'ꙛ' 1951: {0x1E24, 0x1E25}, // 'Ḥ' => 'ḥ' 1956: {0xA658, 0xA659}, // 'Ꙙ' => 'ꙙ' 1959: {0x1E22, 0x1E23}, // 'Ḣ' => 'ḣ' 1964: {0xA656, 0xA657}, // 'Ꙗ' => 'ꙗ' 1967: {0x1E20, 0x1E21}, // 'Ḡ' => 'ḡ' 1972: {0xA654, 0xA655}, // 'Ꙕ' => 'ꙕ' 1975: {0x1E1E, 0x1E1F}, // 'Ḟ' => 'ḟ' 1980: {0xA652, 0xA653}, // 'Ꙓ' => 'ꙓ' 1983: {0x1E1C, 0x1E1D}, // 'Ḝ' => 'ḝ' 1988: {0xA650, 0xA651}, // 'Ꙑ' => 'ꙑ' 1991: {0x1E1A, 0x1E1B}, // 'Ḛ' => 'ḛ' 1996: {0xA64E, 0xA64F}, // 'Ꙏ' => 'ꙏ' 1999: {0x1E18, 0x1E19}, // 'Ḙ' => 'ḙ' 2004: {0xA64C, 0xA64D}, // 'Ꙍ' => 'ꙍ' 2007: {0x1E16, 0x1E17}, // 'Ḗ' => 'ḗ' 2012: {0xA64A, 0xA64B}, // 'Ꙋ' => 'ꙋ' 2015: {0x1E14, 0x1E15}, // 'Ḕ' => 'ḕ' 2020: {0xA648, 0xA649}, // 'Ꙉ' => 'ꙉ' 2023: {0x1E12, 0x1E13}, // 'Ḓ' => 'ḓ' 2028: {0xA646, 0xA647}, // 'Ꙇ' => 'ꙇ' 2031: {0x1E10, 0x1E11}, // 'Ḑ' => 'ḑ' 2036: {0xA644, 0xA645}, // 'Ꙅ' => 'ꙅ' 2039: {0x1E0E, 0x1E0F}, // 'Ḏ' => 'ḏ' 2044: {0xA642, 0xA643}, // 'Ꙃ' => 'ꙃ' 2047: {0x1E0C, 0x1E0D}, // 'Ḍ' => 'ḍ' 2052: {0xA640, 0xA641}, // 'Ꙁ' => 'ꙁ' 2055: {0x1E0A, 0x1E0B}, // 'Ḋ' => 'ḋ' 2063: {0x1E08, 0x1E09}, // 'Ḉ' => 'ḉ' 2070: {0x1E06, 0x1E07}, // 'Ḇ' => 'ḇ' 2078: {0x1E04, 0x1E05}, // 'Ḅ' => 'ḅ' 2086: {0x1E02, 0x1E03}, // 'Ḃ' => 'ḃ' 2094: {0x1E00, 0x1E01}, // 'Ḁ' => 'ḁ' 2241: {0x16E5F, 0x16E7F}, // '𖹟' => '𖹿' 2245: {0x16E5E, 0x16E7E}, // '𖹞' => '𖹾' 2249: {0x16E5D, 0x16E7D}, // '𖹝' => '𖹽' 2253: {0x16E5C, 0x16E7C}, // '𖹜' => '𖹼' 2257: {0x16E5B, 0x16E7B}, // '𖹛' => '𖹻' 2261: {0x16E5A, 0x16E7A}, // '𖹚' => '𖹺' 2265: {0x16E59, 0x16E79}, // '𖹙' => '𖹹' 2269: {0x16E58, 0x16E78}, // '𖹘' => '𖹸' 2273: {0x16E57, 0x16E77}, // '𖹗' => '𖹷' 2277: {0x16E56, 0x16E76}, // '𖹖' => '𖹶' 2281: {0x16E55, 0x16E75}, // '𖹕' => '𖹵' 2285: {0x16E54, 0x16E74}, // '𖹔' => '𖹴' 2289: {0x16E53, 0x16E73}, // '𖹓' => '𖹳' 2293: {0x16E52, 0x16E72}, // '𖹒' => '𖹲' 2297: {0x16E51, 0x16E71}, // '𖹑' => '𖹱' 2301: {0x16E50, 0x16E70}, // '𖹐' => '𖹰' 2305: {0x16E4F, 0x16E6F}, // '𖹏' => '𖹯' 2309: {0x16E4E, 0x16E6E}, // '𖹎' => '𖹮' 2313: {0x16E4D, 0x16E6D}, // '𖹍' => '𖹭' 2317: {0x16E4C, 0x16E6C}, // '𖹌' => '𖹬' 2321: {0x16E4B, 0x16E6B}, // '𖹋' => '𖹫' 2325: {0x16E4A, 0x16E6A}, // '𖹊' => '𖹪' 2329: {0x16E49, 0x16E69}, // '𖹉' => '𖹩' 2333: {0x16E48, 0x16E68}, // '𖹈' => '𖹨' 2337: {0x16E47, 0x16E67}, // '𖹇' => '𖹧' 2341: {0x16E46, 0x16E66}, // '𖹆' => '𖹦' 2345: {0x16E45, 0x16E65}, // '𖹅' => '𖹥' 2349: {0x16E44, 0x16E64}, // '𖹄' => '𖹤' 2353: {0x16E43, 0x16E63}, // '𖹃' => '𖹣' 2357: {0x16E42, 0x16E62}, // '𖹂' => '𖹢' 2361: {0x16E41, 0x16E61}, // '𖹁' => '𖹡' 2365: {0x16E40, 0x16E60}, // '𖹀' => '𖹠' 2736: {0x0556, 0x0586}, // 'Ֆ' => 'ֆ' 2740: {0x0555, 0x0585}, // 'Օ' => 'օ' 2744: {0x0554, 0x0584}, // 'Ք' => 'ք' 2748: {0x0553, 0x0583}, // 'Փ' => 'փ' 2752: {0x0552, 0x0582}, // 'Ւ' => 'ւ' 2756: {0x0551, 0x0581}, // 'Ց' => 'ց' 2760: {0x0550, 0x0580}, // 'Ր' => 'ր' 2764: {0x054F, 0x057F}, // 'Տ' => 'տ' 2768: {0x054E, 0x057E}, // 'Վ' => 'վ' 2772: {0x054D, 0x057D}, // 'Ս' => 'ս' 2776: {0x054C, 0x057C}, // 'Ռ' => 'ռ' 2780: {0x054B, 0x057B}, // 'Ջ' => 'ջ' 2784: {0x054A, 0x057A}, // 'Պ' => 'պ' 2788: {0x0549, 0x0579}, // 'Չ' => 'չ' 2792: {0x0548, 0x0578}, // 'Ո' => 'ո' 2796: {0x0547, 0x0577}, // 'Շ' => 'շ' 2800: {0x0546, 0x0576}, // 'Ն' => 'ն' 2804: {0x0545, 0x0575}, // 'Յ' => 'յ' 2808: {0x0544, 0x0574}, // 'Մ' => 'մ' 2812: {0x0543, 0x0573}, // 'Ճ' => 'ճ' 2816: {0x0542, 0x0572}, // 'Ղ' => 'ղ' 2820: {0x0541, 0x0571}, // 'Ձ' => 'ձ' 2824: {0x0540, 0x0570}, // 'Հ' => 'հ' 2828: {0x053F, 0x056F}, // 'Կ' => 'կ' 2832: {0x053E, 0x056E}, // 'Ծ' => 'ծ' 2836: {0x053D, 0x056D}, // 'Խ' => 'խ' 2840: {0x053C, 0x056C}, // 'Լ' => 'լ' 2844: {0x053B, 0x056B}, // 'Ի' => 'ի' 2848: {0x053A, 0x056A}, // 'Ժ' => 'ժ' 2852: {0x0539, 0x0569}, // 'Թ' => 'թ' 2856: {0x0538, 0x0568}, // 'Ը' => 'ը' 2860: {0x0537, 0x0567}, // 'Է' => 'է' 2864: {0x0536, 0x0566}, // 'Զ' => 'զ' 2868: {0x0535, 0x0565}, // 'Ե' => 'ե' 2872: {0x0534, 0x0564}, // 'Դ' => 'դ' 2876: {0x0533, 0x0563}, // 'Գ' => 'գ' 2880: {0x0532, 0x0562}, // 'Բ' => 'բ' 2884: {0x0531, 0x0561}, // 'Ա' => 'ա' 2885: {0x10595, 0x105BC}, // '𐖕' => '𐖼' 2889: {0x10594, 0x105BB}, // '𐖔' => '𐖻' 2896: {0x052E, 0x052F}, // 'Ԯ' => 'ԯ' 2897: {0x10592, 0x105B9}, // '𐖒' => '𐖹' 2901: {0x10591, 0x105B8}, // '𐖑' => '𐖸' 2904: {0x052C, 0x052D}, // 'Ԭ' => 'ԭ' 2905: {0x10590, 0x105B7}, // '𐖐' => '𐖷' 2909: {0x1058F, 0x105B6}, // '𐖏' => '𐖶' 2912: {0x052A, 0x052B}, // 'Ԫ' => 'ԫ' 2913: {0x1058E, 0x105B5}, // '𐖎' => '𐖵' 2917: {0x1058D, 0x105B4}, // '𐖍' => '𐖴' 2920: {0x0528, 0x0529}, // 'Ԩ' => 'ԩ' 2921: {0x1058C, 0x105B3}, // '𐖌' => '𐖳' 2928: {0x0526, 0x0527}, // 'Ԧ' => 'ԧ' 2929: {0x1058A, 0x105B1}, // '𐖊' => '𐖱' 2933: {0x10589, 0x105B0}, // '𐖉' => '𐖰' 2936: {0x0524, 0x0525}, // 'Ԥ' => 'ԥ' 2937: {0x10588, 0x105AF}, // '𐖈' => '𐖯' 2941: {0x10587, 0x105AE}, // '𐖇' => '𐖮' 2944: {0x0522, 0x0523}, // 'Ԣ' => 'ԣ' 2945: {0x10586, 0x105AD}, // '𐖆' => '𐖭' 2949: {0x10585, 0x105AC}, // '𐖅' => '𐖬' 2952: {0x0520, 0x0521}, // 'Ԡ' => 'ԡ' 2953: {0x10584, 0x105AB}, // '𐖄' => '𐖫' 2957: {0x10583, 0x105AA}, // '𐖃' => '𐖪' 2960: {0x051E, 0x051F}, // 'Ԟ' => 'ԟ' 2961: {0x10582, 0x105A9}, // '𐖂' => '𐖩' 2965: {0x10581, 0x105A8}, // '𐖁' => '𐖨' 2967: {0x051C, 0x051D}, // 'Ԝ' => 'ԝ' 2969: {0x10580, 0x105A7}, // '𐖀' => '𐖧' 2973: {0x1057F, 0x105A6}, // '𐕿' => '𐖦' 2975: {0x051A, 0x051B}, // 'Ԛ' => 'ԛ' 2977: {0x1057E, 0x105A5}, // '𐕾' => '𐖥' 2981: {0x1057D, 0x105A4}, // '𐕽' => '𐖤' 2983: {0x0518, 0x0519}, // 'Ԙ' => 'ԙ' 2985: {0x1057C, 0x105A3}, // '𐕼' => '𐖣' 2991: {0x0516, 0x0517}, // 'Ԗ' => 'ԗ' 2993: {0x1057A, 0x105A1}, // '𐕺' => '𐖡' 2997: {0x10579, 0x105A0}, // '𐕹' => '𐖠' 2999: {0x0514, 0x0515}, // 'Ԕ' => 'ԕ' 3001: {0x10578, 0x1059F}, // '𐕸' => '𐖟' 3005: {0x10577, 0x1059E}, // '𐕷' => '𐖞' 3007: {0x0512, 0x0513}, // 'Ԓ' => 'ԓ' 3009: {0x10576, 0x1059D}, // '𐕶' => '𐖝' 3013: {0x10575, 0x1059C}, // '𐕵' => '𐖜' 3015: {0x0510, 0x0511}, // 'Ԑ' => 'ԑ' 3017: {0x10574, 0x1059B}, // '𐕴' => '𐖛' 3021: {0x10573, 0x1059A}, // '𐕳' => '𐖚' 3023: {0x050E, 0x050F}, // 'Ԏ' => 'ԏ' 3025: {0x10572, 0x10599}, // '𐕲' => '𐖙' 3029: {0x10571, 0x10598}, // '𐕱' => '𐖘' 3031: {0x050C, 0x050D}, // 'Ԍ' => 'ԍ' 3033: {0x10570, 0x10597}, // '𐕰' => '𐖗' 3039: {0x050A, 0x050B}, // 'Ԋ' => 'ԋ' 3047: {0x0508, 0x0509}, // 'Ԉ' => 'ԉ' 3055: {0x0506, 0x0507}, // 'Ԇ' => 'ԇ' 3063: {0x0504, 0x0505}, // 'Ԅ' => 'ԅ' 3071: {0x0502, 0x0503}, // 'Ԃ' => 'ԃ' 3079: {0x0500, 0x0501}, // 'Ԁ' => 'ԁ' 3087: {0x04FE, 0x04FF}, // 'Ӿ' => 'ӿ' 3095: {0x04FC, 0x04FD}, // 'Ӽ' => 'ӽ' 3103: {0x04FA, 0x04FB}, // 'Ӻ' => 'ӻ' 3111: {0x04F8, 0x04F9}, // 'Ӹ' => 'ӹ' 3119: {0x04F6, 0x04F7}, // 'Ӷ' => 'ӷ' 3127: {0x04F4, 0x04F5}, // 'Ӵ' => 'ӵ' 3135: {0x04F2, 0x04F3}, // 'Ӳ' => 'ӳ' 3143: {0x04F0, 0x04F1}, // 'Ӱ' => 'ӱ' 3151: {0x04EE, 0x04EF}, // 'Ӯ' => 'ӯ' 3159: {0x04EC, 0x04ED}, // 'Ӭ' => 'ӭ' 3167: {0x04EA, 0x04EB}, // 'Ӫ' => 'ӫ' 3175: {0x04E8, 0x04E9}, // 'Ө' => 'ө' 3183: {0x04E6, 0x04E7}, // 'Ӧ' => 'ӧ' 3191: {0x04E4, 0x04E5}, // 'Ӥ' => 'ӥ' 3198: {0x2CF2, 0x2CF3}, // 'Ⳳ' => 'ⳳ' 3199: {0x04E2, 0x04E3}, // 'Ӣ' => 'ӣ' 3207: {0x04E0, 0x04E1}, // 'Ӡ' => 'ӡ' 3215: {0x04DE, 0x04DF}, // 'Ӟ' => 'ӟ' 3218: {0x2CED, 0x2CEE}, // 'Ⳮ' => 'ⳮ' 3223: {0x04DC, 0x04DD}, // 'Ӝ' => 'ӝ' 3226: {0x2CEB, 0x2CEC}, // 'Ⳬ' => 'ⳬ' 3231: {0x04DA, 0x04DB}, // 'Ӛ' => 'ӛ' 3239: {0x04D8, 0x04D9}, // 'Ә' => 'ә' 3247: {0x04D6, 0x04D7}, // 'Ӗ' => 'ӗ' 3255: {0x04D4, 0x04D5}, // 'Ӕ' => 'ӕ' 3262: {0x2CE2, 0x2CE3}, // 'Ⳣ' => 'ⳣ' 3263: {0x04D2, 0x04D3}, // 'Ӓ' => 'ӓ' 3270: {0x2CE0, 0x2CE1}, // 'Ⳡ' => 'ⳡ' 3271: {0x04D0, 0x04D1}, // 'Ӑ' => 'ӑ' 3278: {0x2CDE, 0x2CDF}, // 'Ⳟ' => 'ⳟ' 3283: {0x04CD, 0x04CE}, // 'Ӎ' => 'ӎ' 3286: {0x2CDC, 0x2CDD}, // 'Ⳝ' => 'ⳝ' 3291: {0x04CB, 0x04CC}, // 'Ӌ' => 'ӌ' 3294: {0x2CDA, 0x2CDB}, // 'Ⳛ' => 'ⳛ' 3299: {0x04C9, 0x04CA}, // 'Ӊ' => 'ӊ' 3302: {0x2CD8, 0x2CD9}, // 'Ⳙ' => 'ⳙ' 3307: {0x04C7, 0x04C8}, // 'Ӈ' => 'ӈ' 3310: {0x2CD6, 0x2CD7}, // 'Ⳗ' => 'ⳗ' 3315: {0x04C5, 0x04C6}, // 'Ӆ' => 'ӆ' 3318: {0x2CD4, 0x2CD5}, // 'Ⳕ' => 'ⳕ' 3323: {0x04C3, 0x04C4}, // 'Ӄ' => 'ӄ' 3325: {0x24CF, 0x24E9}, // 'Ⓩ' => 'ⓩ' 3326: {0x2CD2, 0x2CD3}, // 'Ⳓ' => 'ⳓ' 3329: {0x24CE, 0x24E8}, // 'Ⓨ' => 'ⓨ' 3331: {0x04C1, 0x04C2}, // 'Ӂ' => 'ӂ' 3333: {0x24CD, 0x24E7}, // 'Ⓧ' => 'ⓧ' 3334: {0x2CD0, 0x2CD1}, // 'Ⳑ' => 'ⳑ' 3335: {0x04C0, 0x04CF}, // 'Ӏ' => 'ӏ' 3337: {0x24CC, 0x24E6}, // 'Ⓦ' => 'ⓦ' 3341: {0x24CB, 0x24E5}, // 'Ⓥ' => 'ⓥ' 3342: {0x2CCE, 0x2CCF}, // 'Ⳏ' => 'ⳏ' 3343: {0x04BE, 0x04BF}, // 'Ҿ' => 'ҿ' 3345: {0x24CA, 0x24E4}, // 'Ⓤ' => 'ⓤ' 3349: {0x24C9, 0x24E3}, // 'Ⓣ' => 'ⓣ' 3350: {0x2CCC, 0x2CCD}, // 'Ⳍ' => 'ⳍ' 3351: {0x04BC, 0x04BD}, // 'Ҽ' => 'ҽ' 3353: {0x24C8, 0x24E2}, // 'Ⓢ' => 'ⓢ' 3357: {0x24C7, 0x24E1}, // 'Ⓡ' => 'ⓡ' 3358: {0x2CCA, 0x2CCB}, // 'Ⳋ' => 'ⳋ' 3359: {0x04BA, 0x04BB}, // 'Һ' => 'һ' 3361: {0x24C6, 0x24E0}, // 'Ⓠ' => 'ⓠ' 3365: {0x24C5, 0x24DF}, // 'Ⓟ' => 'ⓟ' 3366: {0x2CC8, 0x2CC9}, // 'Ⳉ' => 'ⳉ' 3367: {0x04B8, 0x04B9}, // 'Ҹ' => 'ҹ' 3369: {0x24C4, 0x24DE}, // 'Ⓞ' => 'ⓞ' 3373: {0x24C3, 0x24DD}, // 'Ⓝ' => 'ⓝ' 3374: {0x2CC6, 0x2CC7}, // 'Ⳇ' => 'ⳇ' 3375: {0x04B6, 0x04B7}, // 'Ҷ' => 'ҷ' 3376: {0x1CBF, 0x10FF}, // 'Ჿ' => 'ჿ' 3377: {0x24C2, 0x24DC}, // 'Ⓜ' => 'ⓜ' 3380: {0x1CBE, 0x10FE}, // 'Ჾ' => 'ჾ' 3381: {0x24C1, 0x24DB}, // 'Ⓛ' => 'ⓛ' 3382: {0x2CC4, 0x2CC5}, // 'Ⳅ' => 'ⳅ' 3383: {0x04B4, 0x04B5}, // 'Ҵ' => 'ҵ' 3384: {0x1CBD, 0x10FD}, // 'Ჽ' => 'ჽ' 3385: {0x24C0, 0x24DA}, // 'Ⓚ' => 'ⓚ' 3389: {0x24BF, 0x24D9}, // 'Ⓙ' => 'ⓙ' 3390: {0x2CC2, 0x2CC3}, // 'Ⳃ' => 'ⳃ' 3391: {0x04B2, 0x04B3}, // 'Ҳ' => 'ҳ' 3393: {0x24BE, 0x24D8}, // 'Ⓘ' => 'ⓘ' 3396: {0x1CBA, 0x10FA}, // 'Ჺ' => 'ჺ' 3397: {0x24BD, 0x24D7}, // 'Ⓗ' => 'ⓗ' 3398: {0x2CC0, 0x2CC1}, // 'Ⳁ' => 'ⳁ' 3399: {0x04B0, 0x04B1}, // 'Ұ' => 'ұ' 3400: {0x1CB9, 0x10F9}, // 'Ჹ' => 'ჹ' 3401: {0x24BC, 0x24D6}, // 'Ⓖ' => 'ⓖ' 3404: {0x1CB8, 0x10F8}, // 'Ჸ' => 'ჸ' 3405: {0x24BB, 0x24D5}, // 'Ⓕ' => 'ⓕ' 3406: {0x2CBE, 0x2CBF}, // 'Ⲿ' => 'ⲿ' 3407: {0x04AE, 0x04AF}, // 'Ү' => 'ү' 3408: {0x1CB7, 0x10F7}, // 'Ჷ' => 'ჷ' 3409: {0x24BA, 0x24D4}, // 'Ⓔ' => 'ⓔ' 3412: {0x1CB6, 0x10F6}, // 'Ჶ' => 'ჶ' 3413: {0x24B9, 0x24D3}, // 'Ⓓ' => 'ⓓ' 3414: {0x2CBC, 0x2CBD}, // 'Ⲽ' => 'ⲽ' 3415: {0x04AC, 0x04AD}, // 'Ҭ' => 'ҭ' 3416: {0x1CB5, 0x10F5}, // 'Ჵ' => 'ჵ' 3417: {0x24B8, 0x24D2}, // 'Ⓒ' => 'ⓒ' 3420: {0x1CB4, 0x10F4}, // 'Ჴ' => 'ჴ' 3421: {0x24B7, 0x24D1}, // 'Ⓑ' => 'ⓑ' 3422: {0x2CBA, 0x2CBB}, // 'Ⲻ' => 'ⲻ' 3423: {0x04AA, 0x04AB}, // 'Ҫ' => 'ҫ' 3424: {0x1CB3, 0x10F3}, // 'Ჳ' => 'ჳ' 3425: {0x24B6, 0x24D0}, // 'Ⓐ' => 'ⓐ' 3428: {0x1CB2, 0x10F2}, // 'Ჲ' => 'ჲ' 3430: {0x2CB8, 0x2CB9}, // 'Ⲹ' => 'ⲹ' 3431: {0x04A8, 0x04A9}, // 'Ҩ' => 'ҩ' 3432: {0x1CB1, 0x10F1}, // 'Ჱ' => 'ჱ' 3436: {0x1CB0, 0x10F0}, // 'Ჰ' => 'ჰ' 3437: {0x2CB6, 0x2CB7}, // 'Ⲷ' => 'ⲷ' 3439: {0x04A6, 0x04A7}, // 'Ҧ' => 'ҧ' 3440: {0x1CAF, 0x10EF}, // 'Ჯ' => 'ჯ' 3444: {0x1CAE, 0x10EE}, // 'Ხ' => 'ხ' 3445: {0x2CB4, 0x2CB5}, // 'Ⲵ' => 'ⲵ' 3447: {0x04A4, 0x04A5}, // 'Ҥ' => 'ҥ' 3448: {0x1CAD, 0x10ED}, // 'Ჭ' => 'ჭ' 3452: {0x1CAC, 0x10EC}, // 'Წ' => 'წ' 3453: {0x2CB2, 0x2CB3}, // 'Ⲳ' => 'ⲳ' 3455: {0x04A2, 0x04A3}, // 'Ң' => 'ң' 3456: {0x1CAB, 0x10EB}, // 'Ძ' => 'ძ' 3460: {0x1CAA, 0x10EA}, // 'Ც' => 'ც' 3461: {0x2CB0, 0x2CB1}, // 'Ⲱ' => 'ⲱ' 3463: {0x04A0, 0x04A1}, // 'Ҡ' => 'ҡ' 3464: {0x1CA9, 0x10E9}, // 'Ჩ' => 'ჩ' 3468: {0x1CA8, 0x10E8}, // 'Შ' => 'შ' 3469: {0x2CAE, 0x2CAF}, // 'Ⲯ' => 'ⲯ' 3471: {0x049E, 0x049F}, // 'Ҟ' => 'ҟ' 3472: {0x1CA7, 0x10E7}, // 'Ყ' => 'ყ' 3476: {0x1CA6, 0x10E6}, // 'Ღ' => 'ღ' 3477: {0x2CAC, 0x2CAD}, // 'Ⲭ' => 'ⲭ' 3479: {0x049C, 0x049D}, // 'Ҝ' => 'ҝ' 3480: {0x1CA5, 0x10E5}, // 'Ქ' => 'ქ' 3484: {0x1CA4, 0x10E4}, // 'Ფ' => 'ფ' 3485: {0x2CAA, 0x2CAB}, // 'Ⲫ' => 'ⲫ' 3487: {0x049A, 0x049B}, // 'Қ' => 'қ' 3488: {0x1CA3, 0x10E3}, // 'Უ' => 'უ' 3492: {0x1CA2, 0x10E2}, // 'Ტ' => 'ტ' 3493: {0x2CA8, 0x2CA9}, // 'Ⲩ' => 'ⲩ' 3495: {0x0498, 0x0499}, // 'Ҙ' => 'ҙ' 3496: {0x1CA1, 0x10E1}, // 'Ს' => 'ს' 3500: {0x1CA0, 0x10E0}, // 'Რ' => 'რ' 3501: {0x2CA6, 0x2CA7}, // 'Ⲧ' => 'ⲧ' 3503: {0x0496, 0x0497}, // 'Җ' => 'җ' 3504: {0x1C9F, 0x10DF}, // 'Ჟ' => 'ჟ' 3508: {0x1C9E, 0x10DE}, // 'Პ' => 'პ' 3509: {0x2CA4, 0x2CA5}, // 'Ⲥ' => 'ⲥ' 3511: {0x0494, 0x0495}, // 'Ҕ' => 'ҕ' 3512: {0x1C9D, 0x10DD}, // 'Ო' => 'ო' 3516: {0x1C9C, 0x10DC}, // 'Ნ' => 'ნ' 3517: {0x2CA2, 0x2CA3}, // 'Ⲣ' => 'ⲣ' 3519: {0x0492, 0x0493}, // 'Ғ' => 'ғ' 3520: {0x1C9B, 0x10DB}, // 'Მ' => 'მ' 3524: {0x1C9A, 0x10DA}, // 'Ლ' => 'ლ' 3525: {0x2CA0, 0x2CA1}, // 'Ⲡ' => 'ⲡ' 3527: {0x0490, 0x0491}, // 'Ґ' => 'ґ' 3528: {0x1C99, 0x10D9}, // 'Კ' => 'კ' 3532: {0x1C98, 0x10D8}, // 'Ი' => 'ი' 3533: {0x2C9E, 0x2C9F}, // 'Ⲟ' => 'ⲟ' 3535: {0x048E, 0x048F}, // 'Ҏ' => 'ҏ' 3536: {0x1C97, 0x10D7}, // 'Თ' => 'თ' 3540: {0x1C96, 0x10D6}, // 'Ზ' => 'ზ' 3541: {0x2C9C, 0x2C9D}, // 'Ⲝ' => 'ⲝ' 3543: {0x048C, 0x048D}, // 'Ҍ' => 'ҍ' 3544: {0x1C95, 0x10D5}, // 'Ვ' => 'ვ' 3548: {0x1C94, 0x10D4}, // 'Ე' => 'ე' 3549: {0x2C9A, 0x2C9B}, // 'Ⲛ' => 'ⲛ' 3551: {0x048A, 0x048B}, // 'Ҋ' => 'ҋ' 3552: {0x1C93, 0x10D3}, // 'Დ' => 'დ' 3556: {0x1C92, 0x10D2}, // 'Გ' => 'გ' 3557: {0x2C98, 0x2C99}, // 'Ⲙ' => 'ⲙ' 3560: {0x1C91, 0x10D1}, // 'Ბ' => 'ბ' 3564: {0x1C90, 0x10D0}, // 'Ა' => 'ა' 3565: {0x2C96, 0x2C97}, // 'Ⲗ' => 'ⲗ' 3573: {0x2C94, 0x2C95}, // 'Ⲕ' => 'ⲕ' 3581: {0x2C92, 0x2C93}, // 'Ⲓ' => 'ⲓ' 3589: {0x2C90, 0x2C91}, // 'Ⲑ' => 'ⲑ' 3591: {0x0480, 0x0481}, // 'Ҁ' => 'ҁ' 3596: {0x1C88, 0xA64B}, // 'ᲈ' => 'ꙋ' 3597: {0x2C8E, 0x2C8F}, // 'Ⲏ' => 'ⲏ' 3599: {0x047E, 0x047F}, // 'Ѿ' => 'ѿ' 3600: {0x1C87, 0x0463}, // 'ᲇ' => 'ѣ' 3604: {0x1C86, 0x044A}, // 'ᲆ' => 'ъ' 3605: {0x2C8C, 0x2C8D}, // 'Ⲍ' => 'ⲍ' 3607: {0x047C, 0x047D}, // 'Ѽ' => 'ѽ' 3608: {0x1C85, 0x0442}, // 'ᲅ' => 'т' 3612: {0x1C84, 0x0442}, // 'ᲄ' => 'т' 3613: {0x2C8A, 0x2C8B}, // 'Ⲋ' => 'ⲋ' 3615: {0x047A, 0x047B}, // 'Ѻ' => 'ѻ' 3616: {0x1C83, 0x0441}, // 'ᲃ' => 'с' 3620: {0x1C82, 0x043E}, // 'ᲂ' => 'о' 3621: {0x2C88, 0x2C89}, // 'Ⲉ' => 'ⲉ' 3622: {0x0478, 0x0479}, // 'Ѹ' => 'ѹ' 3624: {0x1C81, 0x0434}, // 'ᲁ' => 'д' 3628: {0x1C80, 0x0432}, // 'ᲀ' => 'в' 3629: {0x2C86, 0x2C87}, // 'Ⲇ' => 'ⲇ' 3630: {0x0476, 0x0477}, // 'Ѷ' => 'ѷ' 3637: {0x2C84, 0x2C85}, // 'Ⲅ' => 'ⲅ' 3638: {0x0474, 0x0475}, // 'Ѵ' => 'ѵ' 3645: {0x2C82, 0x2C83}, // 'Ⲃ' => 'ⲃ' 3646: {0x0472, 0x0473}, // 'Ѳ' => 'ѳ' 3653: {0x2C80, 0x2C81}, // 'Ⲁ' => 'ⲁ' 3654: {0x0470, 0x0471}, // 'Ѱ' => 'ѱ' 3657: {0x2C7F, 0x0240}, // 'Ɀ' => 'ɀ' 3660: {0x104D3, 0x104FB}, // '𐓓' => '𐓻' 3661: {0x2C7E, 0x023F}, // 'Ȿ' => 'ȿ' 3662: {0x046E, 0x046F}, // 'Ѯ' => 'ѯ' 3664: {0x104D2, 0x104FA}, // '𐓒' => '𐓺' 3668: {0x104D1, 0x104F9}, // '𐓑' => '𐓹' 3670: {0x046C, 0x046D}, // 'Ѭ' => 'ѭ' 3672: {0x104D0, 0x104F8}, // '𐓐' => '𐓸' 3676: {0x104CF, 0x104F7}, // '𐓏' => '𐓷' 3678: {0x046A, 0x046B}, // 'Ѫ' => 'ѫ' 3680: {0x104CE, 0x104F6}, // '𐓎' => '𐓶' 3684: {0x104CD, 0x104F5}, // '𐓍' => '𐓵' 3686: {0x0468, 0x0469}, // 'Ѩ' => 'ѩ' 3688: {0x104CC, 0x104F4}, // '𐓌' => '𐓴' 3692: {0x104CB, 0x104F3}, // '𐓋' => '𐓳' 3694: {0x0466, 0x0467}, // 'Ѧ' => 'ѧ' 3696: {0x104CA, 0x104F2}, // '𐓊' => '𐓲' 3697: {0x2C75, 0x2C76}, // 'Ⱶ' => 'ⱶ' 3700: {0x104C9, 0x104F1}, // '𐓉' => '𐓱' 3702: {0x0464, 0x0465}, // 'Ѥ' => 'ѥ' 3704: {0x104C8, 0x104F0}, // '𐓈' => '𐓰' 3708: {0x104C7, 0x104EF}, // '𐓇' => '𐓯' 3709: {0x2C72, 0x2C73}, // 'Ⱳ' => 'ⱳ' 3710: {0x0462, 0x0463}, // 'Ѣ' => 'ѣ' 3712: {0x104C6, 0x104EE}, // '𐓆' => '𐓮' 3716: {0x104C5, 0x104ED}, // '𐓅' => '𐓭' 3717: {0x2C70, 0x0252}, // 'Ɒ' => 'ɒ' 3718: {0x0460, 0x0461}, // 'Ѡ' => 'ѡ' 3720: {0x104C4, 0x104EC}, // '𐓄' => '𐓬' 3721: {0x2C6F, 0x0250}, // 'Ɐ' => 'ɐ' 3724: {0x104C3, 0x104EB}, // '𐓃' => '𐓫' 3725: {0x2C6E, 0x0271}, // 'Ɱ' => 'ɱ' 3728: {0x104C2, 0x104EA}, // '𐓂' => '𐓪' 3729: {0x2C6D, 0x0251}, // 'Ɑ' => 'ɑ' 3732: {0x104C1, 0x104E9}, // '𐓁' => '𐓩' 3736: {0x104C0, 0x104E8}, // '𐓀' => '𐓨' 3737: {0x2C6B, 0x2C6C}, // 'Ⱬ' => 'ⱬ' 3740: {0x104BF, 0x104E7}, // '𐒿' => '𐓧' 3744: {0x104BE, 0x104E6}, // '𐒾' => '𐓦' 3745: {0x2C69, 0x2C6A}, // 'Ⱪ' => 'ⱪ' 3748: {0x104BD, 0x104E5}, // '𐒽' => '𐓥' 3752: {0x104BC, 0x104E4}, // '𐒼' => '𐓤' 3753: {0x2C67, 0x2C68}, // 'Ⱨ' => 'ⱨ' 3756: {0x104BB, 0x104E3}, // '𐒻' => '𐓣' 3760: {0x104BA, 0x104E2}, // '𐒺' => '𐓢' 3764: {0x104B9, 0x104E1}, // '𐒹' => '𐓡' 3765: {0x2C64, 0x027D}, // 'Ɽ' => 'ɽ' 3768: {0x104B8, 0x104E0}, // '𐒸' => '𐓠' 3769: {0x2C63, 0x1D7D}, // 'Ᵽ' => 'ᵽ' 3772: {0x104B7, 0x104DF}, // '𐒷' => '𐓟' 3773: {0x2C62, 0x026B}, // 'Ɫ' => 'ɫ' 3776: {0x104B6, 0x104DE}, // '𐒶' => '𐓞' 3780: {0x104B5, 0x104DD}, // '𐒵' => '𐓝' 3781: {0x2C60, 0x2C61}, // 'Ⱡ' => 'ⱡ' 3784: {0x104B4, 0x104DC}, // '𐒴' => '𐓜' 3788: {0x104B3, 0x104DB}, // '𐒳' => '𐓛' 3792: {0x104B2, 0x104DA}, // '𐒲' => '𐓚' 3796: {0x104B1, 0x104D9}, // '𐒱' => '𐓙' 3800: {0x104B0, 0x104D8}, // '𐒰' => '𐓘' 3804: {0x10CB2, 0x10CF2}, // '𐲲' => '𐳲' 3808: {0x10CB1, 0x10CF1}, // '𐲱' => '𐳱' 3812: {0x10CB0, 0x10CF0}, // '𐲰' => '𐳰' 3816: {0x10CAF, 0x10CEF}, // '𐲯' => '𐳯' 3820: {0x10CAE, 0x10CEE}, // '𐲮' => '𐳮' 3824: {0x10CAD, 0x10CED}, // '𐲭' => '𐳭' 3828: {0x10CAC, 0x10CEC}, // '𐲬' => '𐳬' 3832: {0x10CAB, 0x10CEB}, // '𐲫' => '𐳫' 3836: {0x10CAA, 0x10CEA}, // '𐲪' => '𐳪' 3840: {0x10CA9, 0x10CE9}, // '𐲩' => '𐳩' 3844: {0x10CA8, 0x10CE8}, // '𐲨' => '𐳨' 3848: {0x10CA7, 0x10CE7}, // '𐲧' => '𐳧' 3852: {0x10CA6, 0x10CE6}, // '𐲦' => '𐳦' 3856: {0x10CA5, 0x10CE5}, // '𐲥' => '𐳥' 3860: {0x10CA4, 0x10CE4}, // '𐲤' => '𐳤' 3864: {0x10CA3, 0x10CE3}, // '𐲣' => '𐳣' 3868: {0x10CA2, 0x10CE2}, // '𐲢' => '𐳢' 3872: {0x10CA1, 0x10CE1}, // '𐲡' => '𐳡' 3876: {0x10CA0, 0x10CE0}, // '𐲠' => '𐳠' 3880: {0x10C9F, 0x10CDF}, // '𐲟' => '𐳟' 3884: {0x10C9E, 0x10CDE}, // '𐲞' => '𐳞' 3888: {0x10C9D, 0x10CDD}, // '𐲝' => '𐳝' 3892: {0x10C9C, 0x10CDC}, // '𐲜' => '𐳜' 3896: {0x10C9B, 0x10CDB}, // '𐲛' => '𐳛' 3900: {0x10C9A, 0x10CDA}, // '𐲚' => '𐳚' 3904: {0x10C99, 0x10CD9}, // '𐲙' => '𐳙' 3908: {0x10C98, 0x10CD8}, // '𐲘' => '𐳘' 3912: {0x10C97, 0x10CD7}, // '𐲗' => '𐳗' 3914: {0x042F, 0x044F}, // 'Я' => 'я' 3916: {0x10C96, 0x10CD6}, // '𐲖' => '𐳖' 3918: {0x042E, 0x044E}, // 'Ю' => 'ю' 3920: {0x10C95, 0x10CD5}, // '𐲕' => '𐳕' 3922: {0x042D, 0x044D}, // 'Э' => 'э' 3924: {0x10C94, 0x10CD4}, // '𐲔' => '𐳔' 3926: {0x042C, 0x044C}, // 'Ь' => 'ь' 3928: {0x10C93, 0x10CD3}, // '𐲓' => '𐳓' 3930: {0x042B, 0x044B}, // 'Ы' => 'ы' 3932: {0x10C92, 0x10CD2}, // '𐲒' => '𐳒' 3934: {0x042A, 0x044A}, // 'Ъ' => 'ъ' 3936: {0x10C91, 0x10CD1}, // '𐲑' => '𐳑' 3938: {0x0429, 0x0449}, // 'Щ' => 'щ' 3940: {0x10C90, 0x10CD0}, // '𐲐' => '𐳐' 3942: {0x0428, 0x0448}, // 'Ш' => 'ш' 3944: {0x10C8F, 0x10CCF}, // '𐲏' => '𐳏' 3946: {0x0427, 0x0447}, // 'Ч' => 'ч' 3948: {0x10C8E, 0x10CCE}, // '𐲎' => '𐳎' 3950: {0x0426, 0x0446}, // 'Ц' => 'ц' 3952: {0x10C8D, 0x10CCD}, // '𐲍' => '𐳍' 3954: {0x0425, 0x0445}, // 'Х' => 'х' 3956: {0x10C8C, 0x10CCC}, // '𐲌' => '𐳌' 3958: {0x0424, 0x0444}, // 'Ф' => 'ф' 3960: {0x10C8B, 0x10CCB}, // '𐲋' => '𐳋' 3962: {0x0423, 0x0443}, // 'У' => 'у' 3964: {0x10C8A, 0x10CCA}, // '𐲊' => '𐳊' 3966: {0x0422, 0x0442}, // 'Т' => 'т' 3968: {0x10C89, 0x10CC9}, // '𐲉' => '𐳉' 3970: {0x0421, 0x0441}, // 'С' => 'с' 3972: {0x10C88, 0x10CC8}, // '𐲈' => '𐳈' 3974: {0x0420, 0x0440}, // 'Р' => 'р' 3976: {0x10C87, 0x10CC7}, // '𐲇' => '𐳇' 3977: {0x2C2F, 0x2C5F}, // 'Ⱟ' => 'ⱟ' 3978: {0x041F, 0x043F}, // 'П' => 'п' 3980: {0x10C86, 0x10CC6}, // '𐲆' => '𐳆' 3981: {0x2C2E, 0x2C5E}, // 'Ⱞ' => 'ⱞ' 3982: {0x041E, 0x043E}, // 'О' => 'о' 3984: {0x10C85, 0x10CC5}, // '𐲅' => '𐳅' 3985: {0x2C2D, 0x2C5D}, // 'Ⱝ' => 'ⱝ' 3986: {0x041D, 0x043D}, // 'Н' => 'н' 3988: {0x10C84, 0x10CC4}, // '𐲄' => '𐳄' 3989: {0x2C2C, 0x2C5C}, // 'Ⱜ' => 'ⱜ' 3990: {0x041C, 0x043C}, // 'М' => 'м' 3992: {0x10C83, 0x10CC3}, // '𐲃' => '𐳃' 3993: {0x2C2B, 0x2C5B}, // 'Ⱛ' => 'ⱛ' 3994: {0x041B, 0x043B}, // 'Л' => 'л' 3996: {0x10C82, 0x10CC2}, // '𐲂' => '𐳂' 3997: {0x2C2A, 0x2C5A}, // 'Ⱚ' => 'ⱚ' 3998: {0x041A, 0x043A}, // 'К' => 'к' 4000: {0x10C81, 0x10CC1}, // '𐲁' => '𐳁' 4001: {0x2C29, 0x2C59}, // 'Ⱙ' => 'ⱙ' 4002: {0x0419, 0x0439}, // 'Й' => 'й' 4004: {0x10C80, 0x10CC0}, // '𐲀' => '𐳀' 4005: {0x2C28, 0x2C58}, // 'Ⱘ' => 'ⱘ' 4006: {0x0418, 0x0438}, // 'И' => 'и' 4009: {0x2C27, 0x2C57}, // 'Ⱗ' => 'ⱗ' 4010: {0x0417, 0x0437}, // 'З' => 'з' 4013: {0x2C26, 0x2C56}, // 'Ⱖ' => 'ⱖ' 4014: {0x0416, 0x0436}, // 'Ж' => 'ж' 4017: {0x2C25, 0x2C55}, // 'Ⱕ' => 'ⱕ' 4018: {0x0415, 0x0435}, // 'Е' => 'е' 4021: {0x2C24, 0x2C54}, // 'Ⱔ' => 'ⱔ' 4022: {0x0414, 0x0434}, // 'Д' => 'д' 4025: {0x2C23, 0x2C53}, // 'Ⱓ' => 'ⱓ' 4026: {0x0413, 0x0433}, // 'Г' => 'г' 4029: {0x2C22, 0x2C52}, // 'Ⱒ' => 'ⱒ' 4030: {0x0412, 0x0432}, // 'В' => 'в' 4033: {0x2C21, 0x2C51}, // 'Ⱑ' => 'ⱑ' 4034: {0x0411, 0x0431}, // 'Б' => 'б' 4037: {0x2C20, 0x2C50}, // 'Ⱐ' => 'ⱐ' 4038: {0x0410, 0x0430}, // 'А' => 'а' 4041: {0x2C1F, 0x2C4F}, // 'Ⱏ' => 'ⱏ' 4042: {0x040F, 0x045F}, // 'Џ' => 'џ' 4045: {0x2C1E, 0x2C4E}, // 'Ⱎ' => 'ⱎ' 4046: {0x040E, 0x045E}, // 'Ў' => 'ў' 4049: {0x2C1D, 0x2C4D}, // 'Ⱍ' => 'ⱍ' 4050: {0x040D, 0x045D}, // 'Ѝ' => 'ѝ' 4053: {0x2C1C, 0x2C4C}, // 'Ⱌ' => 'ⱌ' 4054: {0x040C, 0x045C}, // 'Ќ' => 'ќ' 4057: {0x2C1B, 0x2C4B}, // 'Ⱋ' => 'ⱋ' 4058: {0x040B, 0x045B}, // 'Ћ' => 'ћ' 4061: {0x2C1A, 0x2C4A}, // 'Ⱊ' => 'ⱊ' 4062: {0x040A, 0x045A}, // 'Њ' => 'њ' 4065: {0x2C19, 0x2C49}, // 'Ⱉ' => 'ⱉ' 4066: {0x0409, 0x0459}, // 'Љ' => 'љ' 4069: {0x2C18, 0x2C48}, // 'Ⱈ' => 'ⱈ' 4070: {0x0408, 0x0458}, // 'Ј' => 'ј' 4073: {0x2C17, 0x2C47}, // 'Ⱇ' => 'ⱇ' 4074: {0x0407, 0x0457}, // 'Ї' => 'ї' 4077: {0x2C16, 0x2C46}, // 'Ⱆ' => 'ⱆ' 4078: {0x0406, 0x0456}, // 'І' => 'і' 4081: {0x2C15, 0x2C45}, // 'Ⱅ' => 'ⱅ' 4082: {0x0405, 0x0455}, // 'Ѕ' => 'ѕ' 4085: {0x2C14, 0x2C44}, // 'Ⱄ' => 'ⱄ' 4086: {0x0404, 0x0454}, // 'Є' => 'є' 4088: {0x2C13, 0x2C43}, // 'Ⱃ' => 'ⱃ' 4090: {0x0403, 0x0453}, // 'Ѓ' => 'ѓ' 4092: {0x2C12, 0x2C42}, // 'Ⱂ' => 'ⱂ' 4094: {0x0402, 0x0452}, // 'Ђ' => 'ђ' 4096: {0x2C11, 0x2C41}, // 'Ⱁ' => 'ⱁ' 4098: {0x0401, 0x0451}, // 'Ё' => 'ё' 4100: {0x2C10, 0x2C40}, // 'Ⱀ' => 'ⱀ' 4102: {0x0400, 0x0450}, // 'Ѐ' => 'ѐ' 4104: {0x2C0F, 0x2C3F}, // 'Ⰿ' => 'ⰿ' 4106: {0x03FF, 0x037D}, // 'Ͽ' => 'ͽ' 4108: {0x2C0E, 0x2C3E}, // 'Ⰾ' => 'ⰾ' 4110: {0x03FE, 0x037C}, // 'Ͼ' => 'ͼ' 4112: {0x2C0D, 0x2C3D}, // 'Ⰽ' => 'ⰽ' 4114: {0x03FD, 0x037B}, // 'Ͻ' => 'ͻ' 4116: {0x2C0C, 0x2C3C}, // 'Ⰼ' => 'ⰼ' 4120: {0x2C0B, 0x2C3B}, // 'Ⰻ' => 'ⰻ' 4124: {0x2C0A, 0x2C3A}, // 'Ⰺ' => 'ⰺ' 4126: {0x03FA, 0x03FB}, // 'Ϻ' => 'ϻ' 4128: {0x2C09, 0x2C39}, // 'Ⰹ' => 'ⰹ' 4130: {0x03F9, 0x03F2}, // 'Ϲ' => 'ϲ' 4132: {0x2C08, 0x2C38}, // 'Ⰸ' => 'ⰸ' 4136: {0x2C07, 0x2C37}, // 'Ⰷ' => 'ⰷ' 4138: {0x03F7, 0x03F8}, // 'Ϸ' => 'ϸ' 4139: {0x13FD, 0x13F5}, // 'ᏽ' => 'Ᏽ' 4140: {0x2C06, 0x2C36}, // 'Ⰶ' => 'ⰶ' 4143: {0x13FC, 0x13F4}, // 'ᏼ' => 'Ᏼ' 4144: {0x2C05, 0x2C35}, // 'Ⰵ' => 'ⰵ' 4146: {0x03F5, 0x03B5}, // 'ϵ' => 'ε' 4147: {0x13FB, 0x13F3}, // 'ᏻ' => 'Ᏻ' 4148: {0x2C04, 0x2C34}, // 'Ⰴ' => 'ⰴ' 4150: {0x03F4, 0x03B8}, // 'ϴ' => 'θ' 4151: {0x13FA, 0x13F2}, // 'ᏺ' => 'Ᏺ' 4152: {0x2C03, 0x2C33}, // 'Ⰳ' => 'ⰳ' 4155: {0x13F9, 0x13F1}, // 'ᏹ' => 'Ᏹ' 4156: {0x2C02, 0x2C32}, // 'Ⰲ' => 'ⰲ' 4159: {0x13F8, 0x13F0}, // 'ᏸ' => 'Ᏸ' 4160: {0x2C01, 0x2C31}, // 'Ⰱ' => 'ⰱ' 4162: {0x03F1, 0x03C1}, // 'ϱ' => 'ρ' 4164: {0x2C00, 0x2C30}, // 'Ⰰ' => 'ⰰ' 4166: {0x03F0, 0x03BA}, // 'ϰ' => 'κ' 4174: {0x03EE, 0x03EF}, // 'Ϯ' => 'ϯ' 4182: {0x03EC, 0x03ED}, // 'Ϭ' => 'ϭ' 4190: {0x03EA, 0x03EB}, // 'Ϫ' => 'ϫ' 4198: {0x03E8, 0x03E9}, // 'Ϩ' => 'ϩ' 4206: {0x03E6, 0x03E7}, // 'Ϧ' => 'ϧ' 4214: {0x03E4, 0x03E5}, // 'Ϥ' => 'ϥ' 4222: {0x03E2, 0x03E3}, // 'Ϣ' => 'ϣ' 4230: {0x03E0, 0x03E1}, // 'Ϡ' => 'ϡ' 4238: {0x03DE, 0x03DF}, // 'Ϟ' => 'ϟ' 4246: {0x03DC, 0x03DD}, // 'Ϝ' => 'ϝ' 4254: {0x03DA, 0x03DB}, // 'Ϛ' => 'ϛ' 4262: {0x03D8, 0x03D9}, // 'Ϙ' => 'ϙ' 4270: {0x03D6, 0x03C0}, // 'ϖ' => 'π' 4273: {0x03D5, 0x03C6}, // 'ϕ' => 'φ' 4289: {0x03D1, 0x03B8}, // 'ϑ' => 'θ' 4293: {0x03D0, 0x03B2}, // 'ϐ' => 'β' 4297: {0x03CF, 0x03D7}, // 'Ϗ' => 'ϗ' 4347: {0x10427, 0x1044F}, // '𐐧' => '𐑏' 4349: {0x03C2, 0x03C3}, // 'ς' => 'σ' 4351: {0x10426, 0x1044E}, // '𐐦' => '𐑎' 4355: {0x10425, 0x1044D}, // '𐐥' => '𐑍' 4359: {0x10424, 0x1044C}, // '𐐤' => '𐑌' 4363: {0x10423, 0x1044B}, // '𐐣' => '𐑋' 4367: {0x10422, 0x1044A}, // '𐐢' => '𐑊' 4371: {0x10421, 0x10449}, // '𐐡' => '𐑉' 4375: {0x10420, 0x10448}, // '𐐠' => '𐑈' 4379: {0x1041F, 0x10447}, // '𐐟' => '𐑇' 4383: {0x1041E, 0x10446}, // '𐐞' => '𐑆' 4387: {0x1041D, 0x10445}, // '𐐝' => '𐑅' 4391: {0x1041C, 0x10444}, // '𐐜' => '𐑄' 4395: {0x1041B, 0x10443}, // '𐐛' => '𐑃' 4399: {0x1041A, 0x10442}, // '𐐚' => '𐑂' 4403: {0x10419, 0x10441}, // '𐐙' => '𐑁' 4407: {0x10418, 0x10440}, // '𐐘' => '𐑀' 4411: {0x10417, 0x1043F}, // '𐐗' => '𐐿' 4415: {0x10416, 0x1043E}, // '𐐖' => '𐐾' 4419: {0x10415, 0x1043D}, // '𐐕' => '𐐽' 4423: {0x10414, 0x1043C}, // '𐐔' => '𐐼' 4427: {0x10413, 0x1043B}, // '𐐓' => '𐐻' 4431: {0x10412, 0x1043A}, // '𐐒' => '𐐺' 4435: {0x10411, 0x10439}, // '𐐑' => '𐐹' 4439: {0x10410, 0x10438}, // '𐐐' => '𐐸' 4441: {0x03AB, 0x03CB}, // 'Ϋ' => 'ϋ' 4443: {0x1040F, 0x10437}, // '𐐏' => '𐐷' 4445: {0x03AA, 0x03CA}, // 'Ϊ' => 'ϊ' 4447: {0x1040E, 0x10436}, // '𐐎' => '𐐶' 4449: {0x03A9, 0x03C9}, // 'Ω' => 'ω' 4451: {0x1040D, 0x10435}, // '𐐍' => '𐐵' 4453: {0x03A8, 0x03C8}, // 'Ψ' => 'ψ' 4455: {0x1040C, 0x10434}, // '𐐌' => '𐐴' 4457: {0x03A7, 0x03C7}, // 'Χ' => 'χ' 4459: {0x1040B, 0x10433}, // '𐐋' => '𐐳' 4461: {0x03A6, 0x03C6}, // 'Φ' => 'φ' 4463: {0x1040A, 0x10432}, // '𐐊' => '𐐲' 4465: {0x03A5, 0x03C5}, // 'Υ' => 'υ' 4467: {0x10409, 0x10431}, // '𐐉' => '𐐱' 4469: {0x03A4, 0x03C4}, // 'Τ' => 'τ' 4471: {0x10408, 0x10430}, // '𐐈' => '𐐰' 4473: {0x03A3, 0x03C3}, // 'Σ' => 'σ' 4475: {0x10407, 0x1042F}, // '𐐇' => '𐐯' 4479: {0x10406, 0x1042E}, // '𐐆' => '𐐮' 4481: {0x03A1, 0x03C1}, // 'Ρ' => 'ρ' 4483: {0x10405, 0x1042D}, // '𐐅' => '𐐭' 4485: {0x03A0, 0x03C0}, // 'Π' => 'π' 4487: {0x10404, 0x1042C}, // '𐐄' => '𐐬' 4489: {0x039F, 0x03BF}, // 'Ο' => 'ο' 4491: {0x10403, 0x1042B}, // '𐐃' => '𐐫' 4493: {0x039E, 0x03BE}, // 'Ξ' => 'ξ' 4495: {0x10402, 0x1042A}, // '𐐂' => '𐐪' 4497: {0x039D, 0x03BD}, // 'Ν' => 'ν' 4499: {0x10401, 0x10429}, // '𐐁' => '𐐩' 4501: {0x039C, 0x03BC}, // 'Μ' => 'μ' 4503: {0x10400, 0x10428}, // '𐐀' => '𐐨' 4505: {0x039B, 0x03BB}, // 'Λ' => 'λ' 4509: {0x039A, 0x03BA}, // 'Κ' => 'κ' 4513: {0x0399, 0x03B9}, // 'Ι' => 'ι' 4517: {0x0398, 0x03B8}, // 'Θ' => 'θ' 4521: {0x0397, 0x03B7}, // 'Η' => 'η' 4525: {0x0396, 0x03B6}, // 'Ζ' => 'ζ' 4529: {0x0395, 0x03B5}, // 'Ε' => 'ε' 4533: {0x0394, 0x03B4}, // 'Δ' => 'δ' 4537: {0x0393, 0x03B3}, // 'Γ' => 'γ' 4541: {0x0392, 0x03B2}, // 'Β' => 'β' 4545: {0x0391, 0x03B1}, // 'Α' => 'α' 4553: {0x038F, 0x03CE}, // 'Ώ' => 'ώ' 4557: {0x038E, 0x03CD}, // 'Ύ' => 'ύ' 4565: {0x038C, 0x03CC}, // 'Ό' => 'ό' 4573: {0x038A, 0x03AF}, // 'Ί' => 'ί' 4577: {0x0389, 0x03AE}, // 'Ή' => 'ή' 4581: {0x0388, 0x03AD}, // 'Έ' => 'έ' 4589: {0x0386, 0x03AC}, // 'Ά' => 'ά' 4617: {0x037F, 0x03F3}, // 'Ϳ' => 'ϳ' 4624: {0xABBF, 0x13EF}, // 'ꮿ' => 'Ꮿ' 4628: {0xABBE, 0x13EE}, // 'ꮾ' => 'Ꮾ' 4632: {0xABBD, 0x13ED}, // 'ꮽ' => 'Ꮽ' 4636: {0xABBC, 0x13EC}, // 'ꮼ' => 'Ꮼ' 4640: {0xABBB, 0x13EB}, // 'ꮻ' => 'Ꮻ' 4644: {0xABBA, 0x13EA}, // 'ꮺ' => 'Ꮺ' 4648: {0xABB9, 0x13E9}, // 'ꮹ' => 'Ꮹ' 4652: {0xABB8, 0x13E8}, // 'ꮸ' => 'Ꮸ' 4653: {0x0376, 0x0377}, // 'Ͷ' => 'ͷ' 4656: {0xABB7, 0x13E7}, // 'ꮷ' => 'Ꮷ' 4660: {0xABB6, 0x13E6}, // 'ꮶ' => 'Ꮶ' 4664: {0xABB5, 0x13E5}, // 'ꮵ' => 'Ꮵ' 4668: {0xABB4, 0x13E4}, // 'ꮴ' => 'Ꮴ' 4669: {0x0372, 0x0373}, // 'Ͳ' => 'ͳ' 4672: {0xABB3, 0x13E3}, // 'ꮳ' => 'Ꮳ' 4676: {0xABB2, 0x13E2}, // 'ꮲ' => 'Ꮲ' 4677: {0x0370, 0x0371}, // 'Ͱ' => 'ͱ' 4680: {0xABB1, 0x13E1}, // 'ꮱ' => 'Ꮱ' 4684: {0xABB0, 0x13E0}, // 'ꮰ' => 'Ꮰ' 4688: {0xABAF, 0x13DF}, // 'ꮯ' => 'Ꮯ' 4692: {0xABAE, 0x13DE}, // 'ꮮ' => 'Ꮮ' 4696: {0xABAD, 0x13DD}, // 'ꮭ' => 'Ꮭ' 4700: {0xABAC, 0x13DC}, // 'ꮬ' => 'Ꮬ' 4704: {0xABAB, 0x13DB}, // 'ꮫ' => 'Ꮫ' 4708: {0xABAA, 0x13DA}, // 'ꮪ' => 'Ꮪ' 4712: {0xABA9, 0x13D9}, // 'ꮩ' => 'Ꮩ' 4716: {0xABA8, 0x13D8}, // 'ꮨ' => 'Ꮨ' 4720: {0xABA7, 0x13D7}, // 'ꮧ' => 'Ꮧ' 4724: {0xABA6, 0x13D6}, // 'ꮦ' => 'Ꮦ' 4728: {0xABA5, 0x13D5}, // 'ꮥ' => 'Ꮥ' 4732: {0xABA4, 0x13D4}, // 'ꮤ' => 'Ꮤ' 4736: {0xABA3, 0x13D3}, // 'ꮣ' => 'Ꮣ' 4740: {0xABA2, 0x13D2}, // 'ꮢ' => 'Ꮢ' 4744: {0xABA1, 0x13D1}, // 'ꮡ' => 'Ꮡ' 4748: {0xABA0, 0x13D0}, // 'ꮠ' => 'Ꮠ' 4752: {0xAB9F, 0x13CF}, // 'ꮟ' => 'Ꮟ' 4756: {0xAB9E, 0x13CE}, // 'ꮞ' => 'Ꮞ' 4760: {0xAB9D, 0x13CD}, // 'ꮝ' => 'Ꮝ' 4764: {0xAB9C, 0x13CC}, // 'ꮜ' => 'Ꮜ' 4768: {0xAB9B, 0x13CB}, // 'ꮛ' => 'Ꮛ' 4772: {0xAB9A, 0x13CA}, // 'ꮚ' => 'Ꮚ' 4776: {0xAB99, 0x13C9}, // 'ꮙ' => 'Ꮙ' 4780: {0xAB98, 0x13C8}, // 'ꮘ' => 'Ꮘ' 4784: {0xAB97, 0x13C7}, // 'ꮗ' => 'Ꮗ' 4788: {0xAB96, 0x13C6}, // 'ꮖ' => 'Ꮖ' 4792: {0xAB95, 0x13C5}, // 'ꮕ' => 'Ꮕ' 4796: {0xAB94, 0x13C4}, // 'ꮔ' => 'Ꮔ' 4800: {0xAB93, 0x13C3}, // 'ꮓ' => 'Ꮓ' 4804: {0xAB92, 0x13C2}, // 'ꮒ' => 'Ꮒ' 4808: {0xAB91, 0x13C1}, // 'ꮑ' => 'Ꮑ' 4812: {0xAB90, 0x13C0}, // 'ꮐ' => 'Ꮐ' 4816: {0xAB8F, 0x13BF}, // 'ꮏ' => 'Ꮏ' 4820: {0xAB8E, 0x13BE}, // 'ꮎ' => 'Ꮎ' 4824: {0xAB8D, 0x13BD}, // 'ꮍ' => 'Ꮍ' 4828: {0xAB8C, 0x13BC}, // 'ꮌ' => 'Ꮌ' 4832: {0xAB8B, 0x13BB}, // 'ꮋ' => 'Ꮋ' 4836: {0xAB8A, 0x13BA}, // 'ꮊ' => 'Ꮊ' 4840: {0xAB89, 0x13B9}, // 'ꮉ' => 'Ꮉ' 4844: {0xAB88, 0x13B8}, // 'ꮈ' => 'Ꮈ' 4848: {0xAB87, 0x13B7}, // 'ꮇ' => 'Ꮇ' 4849: {0x0345, 0x03B9}, // 'ͅ' => 'ι' 4852: {0xAB86, 0x13B6}, // 'ꮆ' => 'Ꮆ' 4856: {0xAB85, 0x13B5}, // 'ꮅ' => 'Ꮅ' 4860: {0xAB84, 0x13B4}, // 'ꮄ' => 'Ꮄ' 4864: {0xAB83, 0x13B3}, // 'ꮃ' => 'Ꮃ' 4868: {0xAB82, 0x13B2}, // 'ꮂ' => 'Ꮂ' 4872: {0xAB81, 0x13B1}, // 'ꮁ' => 'Ꮁ' 4876: {0xAB80, 0x13B0}, // 'ꮀ' => 'Ꮀ' 4880: {0xAB7F, 0x13AF}, // 'ꭿ' => 'Ꭿ' 4884: {0xAB7E, 0x13AE}, // 'ꭾ' => 'Ꭾ' 4888: {0xAB7D, 0x13AD}, // 'ꭽ' => 'Ꭽ' 4892: {0xAB7C, 0x13AC}, // 'ꭼ' => 'Ꭼ' 4896: {0xAB7B, 0x13AB}, // 'ꭻ' => 'Ꭻ' 4900: {0xAB7A, 0x13AA}, // 'ꭺ' => 'Ꭺ' 4904: {0xAB79, 0x13A9}, // 'ꭹ' => 'Ꭹ' 4908: {0xAB78, 0x13A8}, // 'ꭸ' => 'Ꭸ' 4912: {0xAB77, 0x13A7}, // 'ꭷ' => 'Ꭷ' 4916: {0xAB76, 0x13A6}, // 'ꭶ' => 'Ꭶ' 4920: {0xAB75, 0x13A5}, // 'ꭵ' => 'Ꭵ' 4924: {0xAB74, 0x13A4}, // 'ꭴ' => 'Ꭴ' 4928: {0xAB73, 0x13A3}, // 'ꭳ' => 'Ꭳ' 4932: {0xAB72, 0x13A2}, // 'ꭲ' => 'Ꭲ' 4936: {0xAB71, 0x13A1}, // 'ꭱ' => 'Ꭱ' 4940: {0xAB70, 0x13A0}, // 'ꭰ' => 'Ꭰ' 5835: {0x024E, 0x024F}, // 'Ɏ' => 'ɏ' 5843: {0x024C, 0x024D}, // 'Ɍ' => 'ɍ' 5851: {0x024A, 0x024B}, // 'Ɋ' => 'ɋ' 5859: {0x0248, 0x0249}, // 'Ɉ' => 'ɉ' 5867: {0x0246, 0x0247}, // 'Ɇ' => 'ɇ' 5871: {0x0245, 0x028C}, // 'Ʌ' => 'ʌ' 5875: {0x0244, 0x0289}, // 'Ʉ' => 'ʉ' 5879: {0x0243, 0x0180}, // 'Ƀ' => 'ƀ' 5887: {0x0241, 0x0242}, // 'Ɂ' => 'ɂ' 5899: {0x023E, 0x2C66}, // 'Ⱦ' => 'ⱦ' 5903: {0x023D, 0x019A}, // 'Ƚ' => 'ƚ' 5911: {0x023B, 0x023C}, // 'Ȼ' => 'ȼ' 5915: {0x023A, 0x2C65}, // 'Ⱥ' => 'ⱥ' 5947: {0x0232, 0x0233}, // 'Ȳ' => 'ȳ' 5955: {0x0230, 0x0231}, // 'Ȱ' => 'ȱ' 5963: {0x022E, 0x022F}, // 'Ȯ' => 'ȯ' 5971: {0x022C, 0x022D}, // 'Ȭ' => 'ȭ' 5979: {0x022A, 0x022B}, // 'Ȫ' => 'ȫ' 5987: {0x0228, 0x0229}, // 'Ȩ' => 'ȩ' 5995: {0x0226, 0x0227}, // 'Ȧ' => 'ȧ' 6003: {0x0224, 0x0225}, // 'Ȥ' => 'ȥ' 6011: {0x0222, 0x0223}, // 'Ȣ' => 'ȣ' 6019: {0x0220, 0x019E}, // 'Ƞ' => 'ƞ' 6027: {0x021E, 0x021F}, // 'Ȟ' => 'ȟ' 6035: {0x021C, 0x021D}, // 'Ȝ' => 'ȝ' 6043: {0x021A, 0x021B}, // 'Ț' => 'ț' 6051: {0x0218, 0x0219}, // 'Ș' => 'ș' 6059: {0x0216, 0x0217}, // 'Ȗ' => 'ȗ' 6067: {0x0214, 0x0215}, // 'Ȕ' => 'ȕ' 6075: {0x0212, 0x0213}, // 'Ȓ' => 'ȓ' 6083: {0x0210, 0x0211}, // 'Ȑ' => 'ȑ' 6091: {0x020E, 0x020F}, // 'Ȏ' => 'ȏ' 6099: {0x020C, 0x020D}, // 'Ȍ' => 'ȍ' 6107: {0x020A, 0x020B}, // 'Ȋ' => 'ȋ' 6115: {0x0208, 0x0209}, // 'Ȉ' => 'ȉ' 6123: {0x0206, 0x0207}, // 'Ȇ' => 'ȇ' 6131: {0x0204, 0x0205}, // 'Ȅ' => 'ȅ' 6139: {0x0202, 0x0203}, // 'Ȃ' => 'ȃ' 6147: {0x0200, 0x0201}, // 'Ȁ' => 'ȁ' 6155: {0x01FE, 0x01FF}, // 'Ǿ' => 'ǿ' 6163: {0x01FC, 0x01FD}, // 'Ǽ' => 'ǽ' 6171: {0x01FA, 0x01FB}, // 'Ǻ' => 'ǻ' 6179: {0x01F8, 0x01F9}, // 'Ǹ' => 'ǹ' 6183: {0x01F7, 0x01BF}, // 'Ƿ' => 'ƿ' 6187: {0x01F6, 0x0195}, // 'Ƕ' => 'ƕ' 6195: {0x01F4, 0x01F5}, // 'Ǵ' => 'ǵ' 6203: {0x01F2, 0x01F3}, // 'Dz' => 'dz' 6207: {0x01F1, 0x01F3}, // 'DZ' => 'dz' 6219: {0x01EE, 0x01EF}, // 'Ǯ' => 'ǯ' 6227: {0x01EC, 0x01ED}, // 'Ǭ' => 'ǭ' 6234: {0x01EA, 0x01EB}, // 'Ǫ' => 'ǫ' 6242: {0x01E8, 0x01E9}, // 'Ǩ' => 'ǩ' 6250: {0x01E6, 0x01E7}, // 'Ǧ' => 'ǧ' 6258: {0x01E4, 0x01E5}, // 'Ǥ' => 'ǥ' 6266: {0x01E2, 0x01E3}, // 'Ǣ' => 'ǣ' 6274: {0x01E0, 0x01E1}, // 'Ǡ' => 'ǡ' 6282: {0x01DE, 0x01DF}, // 'Ǟ' => 'ǟ' 6294: {0x01DB, 0x01DC}, // 'Ǜ' => 'ǜ' 6302: {0x01D9, 0x01DA}, // 'Ǚ' => 'ǚ' 6310: {0x01D7, 0x01D8}, // 'Ǘ' => 'ǘ' 6318: {0x01D5, 0x01D6}, // 'Ǖ' => 'ǖ' 6326: {0x01D3, 0x01D4}, // 'Ǔ' => 'ǔ' 6334: {0x01D1, 0x01D2}, // 'Ǒ' => 'ǒ' 6342: {0x01CF, 0x01D0}, // 'Ǐ' => 'ǐ' 6350: {0x01CD, 0x01CE}, // 'Ǎ' => 'ǎ' 6358: {0x01CB, 0x01CC}, // 'Nj' => 'nj' 6362: {0x01CA, 0x01CC}, // 'NJ' => 'nj' 6370: {0x01C8, 0x01C9}, // 'Lj' => 'lj' 6374: {0x01C7, 0x01C9}, // 'LJ' => 'lj' 6382: {0x01C5, 0x01C6}, // 'Dž' => 'dž' 6386: {0x01C4, 0x01C6}, // 'DŽ' => 'dž' 6418: {0x01BC, 0x01BD}, // 'Ƽ' => 'ƽ' 6434: {0x01B8, 0x01B9}, // 'Ƹ' => 'ƹ' 6438: {0x01B7, 0x0292}, // 'Ʒ' => 'ʒ' 6446: {0x01B5, 0x01B6}, // 'Ƶ' => 'ƶ' 6454: {0x01B3, 0x01B4}, // 'Ƴ' => 'ƴ' 6458: {0x01B2, 0x028B}, // 'Ʋ' => 'ʋ' 6462: {0x01B1, 0x028A}, // 'Ʊ' => 'ʊ' 6470: {0x01AF, 0x01B0}, // 'Ư' => 'ư' 6474: {0x01AE, 0x0288}, // 'Ʈ' => 'ʈ' 6482: {0x01AC, 0x01AD}, // 'Ƭ' => 'ƭ' 6494: {0x01A9, 0x0283}, // 'Ʃ' => 'ʃ' 6502: {0x01A7, 0x01A8}, // 'Ƨ' => 'ƨ' 6506: {0x01A6, 0x0280}, // 'Ʀ' => 'ʀ' 6514: {0x01A4, 0x01A5}, // 'Ƥ' => 'ƥ' 6522: {0x01A2, 0x01A3}, // 'Ƣ' => 'ƣ' 6530: {0x01A0, 0x01A1}, // 'Ơ' => 'ơ' 6534: {0x019F, 0x0275}, // 'Ɵ' => 'ɵ' 6542: {0x019D, 0x0272}, // 'Ɲ' => 'ɲ' 6546: {0x019C, 0x026F}, // 'Ɯ' => 'ɯ' 6562: {0x0198, 0x0199}, // 'Ƙ' => 'ƙ' 6566: {0x0197, 0x0268}, // 'Ɨ' => 'ɨ' 6570: {0x0196, 0x0269}, // 'Ɩ' => 'ɩ' 6578: {0x0194, 0x0263}, // 'Ɣ' => 'ɣ' 6582: {0x0193, 0x0260}, // 'Ɠ' => 'ɠ' 6590: {0x0191, 0x0192}, // 'Ƒ' => 'ƒ' 6594: {0x0190, 0x025B}, // 'Ɛ' => 'ɛ' 6598: {0x018F, 0x0259}, // 'Ə' => 'ə' 6602: {0x018E, 0x01DD}, // 'Ǝ' => 'ǝ' 6614: {0x018B, 0x018C}, // 'Ƌ' => 'ƌ' 6618: {0x018A, 0x0257}, // 'Ɗ' => 'ɗ' 6622: {0x0189, 0x0256}, // 'Ɖ' => 'ɖ' 6630: {0x0187, 0x0188}, // 'Ƈ' => 'ƈ' 6634: {0x0186, 0x0254}, // 'Ɔ' => 'ɔ' 6642: {0x0184, 0x0185}, // 'Ƅ' => 'ƅ' 6650: {0x0182, 0x0183}, // 'Ƃ' => 'ƃ' 6654: {0x0181, 0x0253}, // 'Ɓ' => 'ɓ' 6662: {0x017F, 0x0073}, // 'ſ' => 's' 6670: {0x017D, 0x017E}, // 'Ž' => 'ž' 6678: {0x017B, 0x017C}, // 'Ż' => 'ż' 6686: {0x0179, 0x017A}, // 'Ź' => 'ź' 6690: {0x0178, 0x00FF}, // 'Ÿ' => 'ÿ' 6696: {0x2183, 0x2184}, // 'Ↄ' => 'ↄ' 6698: {0x0176, 0x0177}, // 'Ŷ' => 'ŷ' 6706: {0x0174, 0x0175}, // 'Ŵ' => 'ŵ' 6714: {0x0172, 0x0173}, // 'Ų' => 'ų' 6722: {0x0170, 0x0171}, // 'Ű' => 'ű' 6730: {0x016E, 0x016F}, // 'Ů' => 'ů' 6738: {0x016C, 0x016D}, // 'Ŭ' => 'ŭ' 6746: {0x016A, 0x016B}, // 'Ū' => 'ū' 6754: {0x0168, 0x0169}, // 'Ũ' => 'ũ' 6762: {0x0166, 0x0167}, // 'Ŧ' => 'ŧ' 6770: {0x0164, 0x0165}, // 'Ť' => 'ť' 6776: {0x216F, 0x217F}, // 'Ⅿ' => 'ⅿ' 6778: {0x0162, 0x0163}, // 'Ţ' => 'ţ' 6780: {0x216E, 0x217E}, // 'Ⅾ' => 'ⅾ' 6784: {0x216D, 0x217D}, // 'Ⅽ' => 'ⅽ' 6786: {0x0160, 0x0161}, // 'Š' => 'š' 6788: {0x216C, 0x217C}, // 'Ⅼ' => 'ⅼ' 6792: {0x216B, 0x217B}, // 'Ⅻ' => 'ⅻ' 6794: {0x015E, 0x015F}, // 'Ş' => 'ş' 6796: {0x216A, 0x217A}, // 'Ⅺ' => 'ⅺ' 6800: {0x2169, 0x2179}, // 'Ⅹ' => 'ⅹ' 6802: {0x015C, 0x015D}, // 'Ŝ' => 'ŝ' 6804: {0x2168, 0x2178}, // 'Ⅸ' => 'ⅸ' 6808: {0x2167, 0x2177}, // 'Ⅷ' => 'ⅷ' 6810: {0x015A, 0x015B}, // 'Ś' => 'ś' 6812: {0x2166, 0x2176}, // 'Ⅶ' => 'ⅶ' 6816: {0x2165, 0x2175}, // 'Ⅵ' => 'ⅵ' 6818: {0x0158, 0x0159}, // 'Ř' => 'ř' 6820: {0x2164, 0x2174}, // 'Ⅴ' => 'ⅴ' 6824: {0x2163, 0x2173}, // 'Ⅳ' => 'ⅳ' 6826: {0x0156, 0x0157}, // 'Ŗ' => 'ŗ' 6828: {0x2162, 0x2172}, // 'Ⅲ' => 'ⅲ' 6832: {0x2161, 0x2171}, // 'Ⅱ' => 'ⅱ' 6834: {0x0154, 0x0155}, // 'Ŕ' => 'ŕ' 6836: {0x2160, 0x2170}, // 'Ⅰ' => 'ⅰ' 6842: {0x0152, 0x0153}, // 'Œ' => 'œ' 6850: {0x0150, 0x0151}, // 'Ő' => 'ő' 6858: {0x014E, 0x014F}, // 'Ŏ' => 'ŏ' 6866: {0x014C, 0x014D}, // 'Ō' => 'ō' 6874: {0x014A, 0x014B}, // 'Ŋ' => 'ŋ' 6885: {0x0147, 0x0148}, // 'Ň' => 'ň' 6893: {0x0145, 0x0146}, // 'Ņ' => 'ņ' 6901: {0x0143, 0x0144}, // 'Ń' => 'ń' 6909: {0x0141, 0x0142}, // 'Ł' => 'ł' 6917: {0x013F, 0x0140}, // 'Ŀ' => 'ŀ' 6925: {0x013D, 0x013E}, // 'Ľ' => 'ľ' 6933: {0x013B, 0x013C}, // 'Ļ' => 'ļ' 6941: {0x0139, 0x013A}, // 'Ĺ' => 'ĺ' 6953: {0x0136, 0x0137}, // 'Ķ' => 'ķ' 6961: {0x0134, 0x0135}, // 'Ĵ' => 'ĵ' 6969: {0x0132, 0x0133}, // 'IJ' => 'ij' 6985: {0x012E, 0x012F}, // 'Į' => 'į' 6993: {0x012C, 0x012D}, // 'Ĭ' => 'ĭ' 7001: {0x012A, 0x012B}, // 'Ī' => 'ī' 7009: {0x0128, 0x0129}, // 'Ĩ' => 'ĩ' 7017: {0x0126, 0x0127}, // 'Ħ' => 'ħ' 7019: {0x2132, 0x214E}, // 'Ⅎ' => 'ⅎ' 7025: {0x0124, 0x0125}, // 'Ĥ' => 'ĥ' 7033: {0x0122, 0x0123}, // 'Ģ' => 'ģ' 7041: {0x0120, 0x0121}, // 'Ġ' => 'ġ' 7047: {0x212B, 0x00E5}, // 'Å' => 'å' 7049: {0x011E, 0x011F}, // 'Ğ' => 'ğ' 7051: {0x212A, 0x006B}, // 'K' => 'k' 7057: {0x011C, 0x011D}, // 'Ĝ' => 'ĝ' 7065: {0x011A, 0x011B}, // 'Ě' => 'ě' 7067: {0x2126, 0x03C9}, // 'Ω' => 'ω' 7073: {0x0118, 0x0119}, // 'Ę' => 'ę' 7081: {0x0116, 0x0117}, // 'Ė' => 'ė' 7089: {0x0114, 0x0115}, // 'Ĕ' => 'ĕ' 7097: {0x0112, 0x0113}, // 'Ē' => 'ē' 7105: {0x0110, 0x0111}, // 'Đ' => 'đ' 7113: {0x010E, 0x010F}, // 'Ď' => 'ď' 7121: {0x010C, 0x010D}, // 'Č' => 'č' 7129: {0x010A, 0x010B}, // 'Ċ' => 'ċ' 7137: {0x0108, 0x0109}, // 'Ĉ' => 'ĉ' 7145: {0x0106, 0x0107}, // 'Ć' => 'ć' 7153: {0x0104, 0x0105}, // 'Ą' => 'ą' 7161: {0x0102, 0x0103}, // 'Ă' => 'ă' 7169: {0x0100, 0x0101}, // 'Ā' => 'ā' 7305: {0x00DE, 0x00FE}, // 'Þ' => 'þ' 7309: {0x00DD, 0x00FD}, // 'Ý' => 'ý' 7313: {0x00DC, 0x00FC}, // 'Ü' => 'ü' 7317: {0x00DB, 0x00FB}, // 'Û' => 'û' 7321: {0x00DA, 0x00FA}, // 'Ú' => 'ú' 7325: {0x00D9, 0x00F9}, // 'Ù' => 'ù' 7329: {0x00D8, 0x00F8}, // 'Ø' => 'ø' 7337: {0x00D6, 0x00F6}, // 'Ö' => 'ö' 7341: {0x00D5, 0x00F5}, // 'Õ' => 'õ' 7345: {0x00D4, 0x00F4}, // 'Ô' => 'ô' 7349: {0x00D3, 0x00F3}, // 'Ó' => 'ó' 7353: {0x00D2, 0x00F2}, // 'Ò' => 'ò' 7357: {0x00D1, 0x00F1}, // 'Ñ' => 'ñ' 7361: {0x00D0, 0x00F0}, // 'Ð' => 'ð' 7365: {0x00CF, 0x00EF}, // 'Ï' => 'ï' 7369: {0x00CE, 0x00EE}, // 'Î' => 'î' 7373: {0x00CD, 0x00ED}, // 'Í' => 'í' 7377: {0x00CC, 0x00EC}, // 'Ì' => 'ì' 7381: {0x00CB, 0x00EB}, // 'Ë' => 'ë' 7385: {0x00CA, 0x00EA}, // 'Ê' => 'ê' 7389: {0x00C9, 0x00E9}, // 'É' => 'é' 7393: {0x00C8, 0x00E8}, // 'È' => 'è' 7397: {0x00C7, 0x00E7}, // 'Ç' => 'ç' 7398: {0x10CD, 0x2D2D}, // 'Ⴭ' => 'ⴭ' 7401: {0x00C6, 0x00E6}, // 'Æ' => 'æ' 7405: {0x00C5, 0x00E5}, // 'Å' => 'å' 7409: {0x00C4, 0x00E4}, // 'Ä' => 'ä' 7413: {0x00C3, 0x00E3}, // 'Ã' => 'ã' 7417: {0x00C2, 0x00E2}, // 'Â' => 'â' 7421: {0x00C1, 0x00E1}, // 'Á' => 'á' 7422: {0x10C7, 0x2D27}, // 'Ⴧ' => 'ⴧ' 7425: {0x00C0, 0x00E0}, // 'À' => 'à' 7430: {0x10C5, 0x2D25}, // 'Ⴥ' => 'ⴥ' 7434: {0x10C4, 0x2D24}, // 'Ⴤ' => 'ⴤ' 7438: {0x10C3, 0x2D23}, // 'Ⴣ' => 'ⴣ' 7442: {0x10C2, 0x2D22}, // 'Ⴢ' => 'ⴢ' 7446: {0x10C1, 0x2D21}, // 'Ⴡ' => 'ⴡ' 7450: {0x10C0, 0x2D20}, // 'Ⴠ' => 'ⴠ' 7454: {0x10BF, 0x2D1F}, // 'Ⴟ' => 'ⴟ' 7458: {0x10BE, 0x2D1E}, // 'Ⴞ' => 'ⴞ' 7462: {0x10BD, 0x2D1D}, // 'Ⴝ' => 'ⴝ' 7466: {0x10BC, 0x2D1C}, // 'Ⴜ' => 'ⴜ' 7469: {0x00B5, 0x03BC}, // 'µ' => 'μ' 7470: {0x10BB, 0x2D1B}, // 'Ⴛ' => 'ⴛ' 7474: {0x10BA, 0x2D1A}, // 'Ⴚ' => 'ⴚ' 7478: {0x10B9, 0x2D19}, // 'Ⴙ' => 'ⴙ' 7482: {0x10B8, 0x2D18}, // 'Ⴘ' => 'ⴘ' 7486: {0x10B7, 0x2D17}, // 'Ⴗ' => 'ⴗ' 7490: {0x10B6, 0x2D16}, // 'Ⴖ' => 'ⴖ' 7494: {0x10B5, 0x2D15}, // 'Ⴕ' => 'ⴕ' 7498: {0x10B4, 0x2D14}, // 'Ⴔ' => 'ⴔ' 7502: {0x10B3, 0x2D13}, // 'Ⴓ' => 'ⴓ' 7506: {0x10B2, 0x2D12}, // 'Ⴒ' => 'ⴒ' 7510: {0x10B1, 0x2D11}, // 'Ⴑ' => 'ⴑ' 7514: {0x10B0, 0x2D10}, // 'Ⴐ' => 'ⴐ' 7518: {0x10AF, 0x2D0F}, // 'Ⴏ' => 'ⴏ' 7522: {0x10AE, 0x2D0E}, // 'Ⴎ' => 'ⴎ' 7526: {0x10AD, 0x2D0D}, // 'Ⴍ' => 'ⴍ' 7530: {0x10AC, 0x2D0C}, // 'Ⴌ' => 'ⴌ' 7534: {0x10AB, 0x2D0B}, // 'Ⴋ' => 'ⴋ' 7538: {0x10AA, 0x2D0A}, // 'Ⴊ' => 'ⴊ' 7542: {0x10A9, 0x2D09}, // 'Ⴉ' => 'ⴉ' 7546: {0x10A8, 0x2D08}, // 'Ⴈ' => 'ⴈ' 7550: {0x10A7, 0x2D07}, // 'Ⴇ' => 'ⴇ' 7554: {0x10A6, 0x2D06}, // 'Ⴆ' => 'ⴆ' 7558: {0x10A5, 0x2D05}, // 'Ⴅ' => 'ⴅ' 7562: {0x10A4, 0x2D04}, // 'Ⴄ' => 'ⴄ' 7566: {0x10A3, 0x2D03}, // 'Ⴃ' => 'ⴃ' 7570: {0x10A2, 0x2D02}, // 'Ⴂ' => 'ⴂ' 7574: {0x10A1, 0x2D01}, // 'Ⴁ' => 'ⴁ' 7578: {0x10A0, 0x2D00}, // 'Ⴀ' => 'ⴀ' 7801: {0x1E921, 0x1E943}, // '𞤡' => '𞥃' 7805: {0x1E920, 0x1E942}, // '𞤠' => '𞥂' 7809: {0x1E91F, 0x1E941}, // '𞤟' => '𞥁' 7813: {0x1E91E, 0x1E940}, // '𞤞' => '𞥀' 7817: {0x1E91D, 0x1E93F}, // '𞤝' => '𞤿' 7821: {0x1E91C, 0x1E93E}, // '𞤜' => '𞤾' 7825: {0x1E91B, 0x1E93D}, // '𞤛' => '𞤽' 7829: {0x1E91A, 0x1E93C}, // '𞤚' => '𞤼' 7832: {0x005A, 0x007A}, // 'Z' => 'z' 7833: {0x1E919, 0x1E93B}, // '𞤙' => '𞤻' 7836: {0x0059, 0x0079}, // 'Y' => 'y' 7837: {0x1E918, 0x1E93A}, // '𞤘' => '𞤺' 7840: {0x0058, 0x0078}, // 'X' => 'x' 7841: {0x1E917, 0x1E939}, // '𞤗' => '𞤹' 7844: {0x0057, 0x0077}, // 'W' => 'w' 7845: {0x1E916, 0x1E938}, // '𞤖' => '𞤸' 7848: {0x0056, 0x0076}, // 'V' => 'v' 7849: {0x1E915, 0x1E937}, // '𞤕' => '𞤷' 7852: {0x0055, 0x0075}, // 'U' => 'u' 7853: {0x1E914, 0x1E936}, // '𞤔' => '𞤶' 7856: {0x0054, 0x0074}, // 'T' => 't' 7857: {0x1E913, 0x1E935}, // '𞤓' => '𞤵' 7860: {0x0053, 0x0073}, // 'S' => 's' 7861: {0x1E912, 0x1E934}, // '𞤒' => '𞤴' 7864: {0x0052, 0x0072}, // 'R' => 'r' 7865: {0x1E911, 0x1E933}, // '𞤑' => '𞤳' 7867: {0x118BF, 0x118DF}, // '𑢿' => '𑣟' 7868: {0x0051, 0x0071}, // 'Q' => 'q' 7869: {0x1E910, 0x1E932}, // '𞤐' => '𞤲' 7871: {0x118BE, 0x118DE}, // '𑢾' => '𑣞' 7872: {0x0050, 0x0070}, // 'P' => 'p' 7873: {0x1E90F, 0x1E931}, // '𞤏' => '𞤱' 7875: {0x118BD, 0x118DD}, // '𑢽' => '𑣝' 7876: {0x004F, 0x006F}, // 'O' => 'o' 7877: {0x1E90E, 0x1E930}, // '𞤎' => '𞤰' 7879: {0x118BC, 0x118DC}, // '𑢼' => '𑣜' 7880: {0x004E, 0x006E}, // 'N' => 'n' 7881: {0x1E90D, 0x1E92F}, // '𞤍' => '𞤯' 7883: {0x118BB, 0x118DB}, // '𑢻' => '𑣛' 7884: {0x004D, 0x006D}, // 'M' => 'm' 7885: {0x1E90C, 0x1E92E}, // '𞤌' => '𞤮' 7887: {0x118BA, 0x118DA}, // '𑢺' => '𑣚' 7888: {0x004C, 0x006C}, // 'L' => 'l' 7889: {0x1E90B, 0x1E92D}, // '𞤋' => '𞤭' 7891: {0x118B9, 0x118D9}, // '𑢹' => '𑣙' 7892: {0x004B, 0x006B}, // 'K' => 'k' 7893: {0x1E90A, 0x1E92C}, // '𞤊' => '𞤬' 7895: {0x118B8, 0x118D8}, // '𑢸' => '𑣘' 7896: {0x004A, 0x006A}, // 'J' => 'j' 7897: {0x1E909, 0x1E92B}, // '𞤉' => '𞤫' 7899: {0x118B7, 0x118D7}, // '𑢷' => '𑣗' 7900: {0x0049, 0x0069}, // 'I' => 'i' 7901: {0x1E908, 0x1E92A}, // '𞤈' => '𞤪' 7903: {0x118B6, 0x118D6}, // '𑢶' => '𑣖' 7904: {0x0048, 0x0068}, // 'H' => 'h' 7905: {0x1E907, 0x1E929}, // '𞤇' => '𞤩' 7907: {0x118B5, 0x118D5}, // '𑢵' => '𑣕' 7908: {0x0047, 0x0067}, // 'G' => 'g' 7909: {0x1E906, 0x1E928}, // '𞤆' => '𞤨' 7911: {0x118B4, 0x118D4}, // '𑢴' => '𑣔' 7912: {0x0046, 0x0066}, // 'F' => 'f' 7913: {0x1E905, 0x1E927}, // '𞤅' => '𞤧' 7915: {0x118B3, 0x118D3}, // '𑢳' => '𑣓' 7916: {0x0045, 0x0065}, // 'E' => 'e' 7917: {0x1E904, 0x1E926}, // '𞤄' => '𞤦' 7919: {0x118B2, 0x118D2}, // '𑢲' => '𑣒' 7920: {0x0044, 0x0064}, // 'D' => 'd' 7921: {0x1E903, 0x1E925}, // '𞤃' => '𞤥' 7923: {0x118B1, 0x118D1}, // '𑢱' => '𑣑' 7924: {0x0043, 0x0063}, // 'C' => 'c' 7925: {0x1E902, 0x1E924}, // '𞤂' => '𞤤' 7927: {0x118B0, 0x118D0}, // '𑢰' => '𑣐' 7928: {0x0042, 0x0062}, // 'B' => 'b' 7929: {0x1E901, 0x1E923}, // '𞤁' => '𞤣' 7931: {0x118AF, 0x118CF}, // '𑢯' => '𑣏' 7932: {0x0041, 0x0061}, // 'A' => 'a' 7933: {0x1E900, 0x1E922}, // '𞤀' => '𞤢' 7935: {0x118AE, 0x118CE}, // '𑢮' => '𑣎' 7939: {0x118AD, 0x118CD}, // '𑢭' => '𑣍' 7943: {0x118AC, 0x118CC}, // '𑢬' => '𑣌' 7947: {0x118AB, 0x118CB}, // '𑢫' => '𑣋' 7951: {0x118AA, 0x118CA}, // '𑢪' => '𑣊' 7955: {0x118A9, 0x118C9}, // '𑢩' => '𑣉' 7959: {0x118A8, 0x118C8}, // '𑢨' => '𑣈' 7963: {0x118A7, 0x118C7}, // '𑢧' => '𑣇' 7967: {0x118A6, 0x118C6}, // '𑢦' => '𑣆' 7971: {0x118A5, 0x118C5}, // '𑢥' => '𑣅' 7975: {0x118A4, 0x118C4}, // '𑢤' => '𑣄' 7979: {0x118A3, 0x118C3}, // '𑢣' => '𑣃' 7983: {0x118A2, 0x118C2}, // '𑢢' => '𑣂' 7987: {0x118A1, 0x118C1}, // '𑢡' => '𑣁' 7991: {0x118A0, 0x118C0}, // '𑢠' => '𑣀' } const _UpperLowerSeed = 0x6AE7FD95 const _UpperLowerShift = 19 // _UpperLower stores upper/lower case pairs of Unicode code points. // This takes up more space than the stdlib's "unicode" package, but // is roughly ~4x faster. var _UpperLower = [8192][2]uint32{ 7648: {0x039C, 0x00B5}, // 'Μ' => 'µ' 7615: {0x00C0, 0x00E0}, // 'À' => 'à' 7612: {0x00C1, 0x00E1}, // 'Á' => 'á' 7609: {0x00C2, 0x00E2}, // 'Â' => 'â' 7606: {0x00C3, 0x00E3}, // 'Ã' => 'ã' 7603: {0x00C4, 0x00E4}, // 'Ä' => 'ä' 7600: {0x00C5, 0x00E5}, // 'Å' => 'å' 7597: {0x00C6, 0x00E6}, // 'Æ' => 'æ' 7594: {0x00C7, 0x00E7}, // 'Ç' => 'ç' 7591: {0x00C8, 0x00E8}, // 'È' => 'è' 7588: {0x00C9, 0x00E9}, // 'É' => 'é' 7585: {0x00CA, 0x00EA}, // 'Ê' => 'ê' 7582: {0x00CB, 0x00EB}, // 'Ë' => 'ë' 7579: {0x00CC, 0x00EC}, // 'Ì' => 'ì' 7576: {0x00CD, 0x00ED}, // 'Í' => 'í' 7573: {0x00CE, 0x00EE}, // 'Î' => 'î' 7570: {0x00CF, 0x00EF}, // 'Ï' => 'ï' 7567: {0x00D0, 0x00F0}, // 'Ð' => 'ð' 7564: {0x00D1, 0x00F1}, // 'Ñ' => 'ñ' 7561: {0x00D2, 0x00F2}, // 'Ò' => 'ò' 7558: {0x00D3, 0x00F3}, // 'Ó' => 'ó' 7555: {0x00D4, 0x00F4}, // 'Ô' => 'ô' 7552: {0x00D5, 0x00F5}, // 'Õ' => 'õ' 7549: {0x00D6, 0x00F6}, // 'Ö' => 'ö' 7543: {0x00D8, 0x00F8}, // 'Ø' => 'ø' 7540: {0x00D9, 0x00F9}, // 'Ù' => 'ù' 7537: {0x00DA, 0x00FA}, // 'Ú' => 'ú' 7534: {0x00DB, 0x00FB}, // 'Û' => 'û' 7531: {0x00DC, 0x00FC}, // 'Ü' => 'ü' 7528: {0x00DD, 0x00FD}, // 'Ý' => 'ý' 7525: {0x00DE, 0x00FE}, // 'Þ' => 'þ' 7519: {0x00C0, 0x00E0}, // 'À' => 'à' 7516: {0x00C1, 0x00E1}, // 'Á' => 'á' 7513: {0x00C2, 0x00E2}, // 'Â' => 'â' 7510: {0x00C3, 0x00E3}, // 'Ã' => 'ã' 7507: {0x00C4, 0x00E4}, // 'Ä' => 'ä' 7504: {0x00C5, 0x00E5}, // 'Å' => 'å' 7501: {0x00C6, 0x00E6}, // 'Æ' => 'æ' 7498: {0x00C7, 0x00E7}, // 'Ç' => 'ç' 7495: {0x00C8, 0x00E8}, // 'È' => 'è' 7492: {0x00C9, 0x00E9}, // 'É' => 'é' 7489: {0x00CA, 0x00EA}, // 'Ê' => 'ê' 7486: {0x00CB, 0x00EB}, // 'Ë' => 'ë' 7483: {0x00CC, 0x00EC}, // 'Ì' => 'ì' 7480: {0x00CD, 0x00ED}, // 'Í' => 'í' 7477: {0x00CE, 0x00EE}, // 'Î' => 'î' 7474: {0x00CF, 0x00EF}, // 'Ï' => 'ï' 7471: {0x00D0, 0x00F0}, // 'Ð' => 'ð' 7468: {0x00D1, 0x00F1}, // 'Ñ' => 'ñ' 7465: {0x00D2, 0x00F2}, // 'Ò' => 'ò' 7462: {0x00D3, 0x00F3}, // 'Ó' => 'ó' 7459: {0x00D4, 0x00F4}, // 'Ô' => 'ô' 7456: {0x00D5, 0x00F5}, // 'Õ' => 'õ' 7453: {0x00D6, 0x00F6}, // 'Ö' => 'ö' 7447: {0x00D8, 0x00F8}, // 'Ø' => 'ø' 7444: {0x00D9, 0x00F9}, // 'Ù' => 'ù' 7441: {0x00DA, 0x00FA}, // 'Ú' => 'ú' 7438: {0x00DB, 0x00FB}, // 'Û' => 'û' 7435: {0x00DC, 0x00FC}, // 'Ü' => 'ü' 7432: {0x00DD, 0x00FD}, // 'Ý' => 'ý' 7429: {0x00DE, 0x00FE}, // 'Þ' => 'þ' 7426: {0x0178, 0x00FF}, // 'Ÿ' => 'ÿ' 7423: {0x0100, 0x0101}, // 'Ā' => 'ā' 7420: {0x0100, 0x0101}, // 'Ā' => 'ā' 7417: {0x0102, 0x0103}, // 'Ă' => 'ă' 7414: {0x0102, 0x0103}, // 'Ă' => 'ă' 7411: {0x0104, 0x0105}, // 'Ą' => 'ą' 7408: {0x0104, 0x0105}, // 'Ą' => 'ą' 7405: {0x0106, 0x0107}, // 'Ć' => 'ć' 7402: {0x0106, 0x0107}, // 'Ć' => 'ć' 7399: {0x0108, 0x0109}, // 'Ĉ' => 'ĉ' 7396: {0x0108, 0x0109}, // 'Ĉ' => 'ĉ' 7393: {0x010A, 0x010B}, // 'Ċ' => 'ċ' 7390: {0x010A, 0x010B}, // 'Ċ' => 'ċ' 7387: {0x010C, 0x010D}, // 'Č' => 'č' 7384: {0x010C, 0x010D}, // 'Č' => 'č' 7381: {0x010E, 0x010F}, // 'Ď' => 'ď' 7378: {0x010E, 0x010F}, // 'Ď' => 'ď' 7375: {0x0110, 0x0111}, // 'Đ' => 'đ' 7372: {0x0110, 0x0111}, // 'Đ' => 'đ' 7369: {0x0112, 0x0113}, // 'Ē' => 'ē' 7366: {0x0112, 0x0113}, // 'Ē' => 'ē' 7363: {0x0114, 0x0115}, // 'Ĕ' => 'ĕ' 7360: {0x0114, 0x0115}, // 'Ĕ' => 'ĕ' 7357: {0x0116, 0x0117}, // 'Ė' => 'ė' 7354: {0x0116, 0x0117}, // 'Ė' => 'ė' 7351: {0x0118, 0x0119}, // 'Ę' => 'ę' 7348: {0x0118, 0x0119}, // 'Ę' => 'ę' 7345: {0x011A, 0x011B}, // 'Ě' => 'ě' 7342: {0x011A, 0x011B}, // 'Ě' => 'ě' 7339: {0x011C, 0x011D}, // 'Ĝ' => 'ĝ' 7336: {0x011C, 0x011D}, // 'Ĝ' => 'ĝ' 7333: {0x011E, 0x011F}, // 'Ğ' => 'ğ' 7330: {0x011E, 0x011F}, // 'Ğ' => 'ğ' 7327: {0x0120, 0x0121}, // 'Ġ' => 'ġ' 7324: {0x0120, 0x0121}, // 'Ġ' => 'ġ' 7321: {0x0122, 0x0123}, // 'Ģ' => 'ģ' 7318: {0x0122, 0x0123}, // 'Ģ' => 'ģ' 7315: {0x0124, 0x0125}, // 'Ĥ' => 'ĥ' 7312: {0x0124, 0x0125}, // 'Ĥ' => 'ĥ' 7309: {0x0126, 0x0127}, // 'Ħ' => 'ħ' 7306: {0x0126, 0x0127}, // 'Ħ' => 'ħ' 7303: {0x0128, 0x0129}, // 'Ĩ' => 'ĩ' 7300: {0x0128, 0x0129}, // 'Ĩ' => 'ĩ' 7297: {0x012A, 0x012B}, // 'Ī' => 'ī' 7294: {0x012A, 0x012B}, // 'Ī' => 'ī' 7291: {0x012C, 0x012D}, // 'Ĭ' => 'ĭ' 7288: {0x012C, 0x012D}, // 'Ĭ' => 'ĭ' 7285: {0x012E, 0x012F}, // 'Į' => 'į' 7282: {0x012E, 0x012F}, // 'Į' => 'į' 7279: {0x0130, 0x0069}, // 'İ' => 'i' 7276: {0x0049, 0x0131}, // 'I' => 'ı' 7273: {0x0132, 0x0133}, // 'IJ' => 'ij' 7270: {0x0132, 0x0133}, // 'IJ' => 'ij' 7267: {0x0134, 0x0135}, // 'Ĵ' => 'ĵ' 7264: {0x0134, 0x0135}, // 'Ĵ' => 'ĵ' 7261: {0x0136, 0x0137}, // 'Ķ' => 'ķ' 7258: {0x0136, 0x0137}, // 'Ķ' => 'ķ' 7252: {0x0139, 0x013A}, // 'Ĺ' => 'ĺ' 7249: {0x0139, 0x013A}, // 'Ĺ' => 'ĺ' 7246: {0x013B, 0x013C}, // 'Ļ' => 'ļ' 7243: {0x013B, 0x013C}, // 'Ļ' => 'ļ' 7240: {0x013D, 0x013E}, // 'Ľ' => 'ľ' 7237: {0x013D, 0x013E}, // 'Ľ' => 'ľ' 7234: {0x013F, 0x0140}, // 'Ŀ' => 'ŀ' 7231: {0x013F, 0x0140}, // 'Ŀ' => 'ŀ' 7228: {0x0141, 0x0142}, // 'Ł' => 'ł' 7225: {0x0141, 0x0142}, // 'Ł' => 'ł' 7222: {0x0143, 0x0144}, // 'Ń' => 'ń' 7219: {0x0143, 0x0144}, // 'Ń' => 'ń' 7216: {0x0145, 0x0146}, // 'Ņ' => 'ņ' 7213: {0x0145, 0x0146}, // 'Ņ' => 'ņ' 7210: {0x0147, 0x0148}, // 'Ň' => 'ň' 7207: {0x0147, 0x0148}, // 'Ň' => 'ň' 7201: {0x014A, 0x014B}, // 'Ŋ' => 'ŋ' 7198: {0x014A, 0x014B}, // 'Ŋ' => 'ŋ' 7195: {0x014C, 0x014D}, // 'Ō' => 'ō' 7192: {0x014C, 0x014D}, // 'Ō' => 'ō' 7189: {0x014E, 0x014F}, // 'Ŏ' => 'ŏ' 7186: {0x014E, 0x014F}, // 'Ŏ' => 'ŏ' 7183: {0x0150, 0x0151}, // 'Ő' => 'ő' 7180: {0x0150, 0x0151}, // 'Ő' => 'ő' 7177: {0x0152, 0x0153}, // 'Œ' => 'œ' 7174: {0x0152, 0x0153}, // 'Œ' => 'œ' 7171: {0x0154, 0x0155}, // 'Ŕ' => 'ŕ' 7168: {0x0154, 0x0155}, // 'Ŕ' => 'ŕ' 7165: {0x0156, 0x0157}, // 'Ŗ' => 'ŗ' 7162: {0x0156, 0x0157}, // 'Ŗ' => 'ŗ' 7159: {0x0158, 0x0159}, // 'Ř' => 'ř' 7156: {0x0158, 0x0159}, // 'Ř' => 'ř' 7153: {0x015A, 0x015B}, // 'Ś' => 'ś' 7150: {0x015A, 0x015B}, // 'Ś' => 'ś' 7147: {0x015C, 0x015D}, // 'Ŝ' => 'ŝ' 7144: {0x015C, 0x015D}, // 'Ŝ' => 'ŝ' 7141: {0x015E, 0x015F}, // 'Ş' => 'ş' 7138: {0x015E, 0x015F}, // 'Ş' => 'ş' 7135: {0x0160, 0x0161}, // 'Š' => 'š' 7132: {0x0160, 0x0161}, // 'Š' => 'š' 7129: {0x0162, 0x0163}, // 'Ţ' => 'ţ' 7126: {0x0162, 0x0163}, // 'Ţ' => 'ţ' 7123: {0x0164, 0x0165}, // 'Ť' => 'ť' 7120: {0x0164, 0x0165}, // 'Ť' => 'ť' 7117: {0x0166, 0x0167}, // 'Ŧ' => 'ŧ' 7114: {0x0166, 0x0167}, // 'Ŧ' => 'ŧ' 7111: {0x0168, 0x0169}, // 'Ũ' => 'ũ' 7108: {0x0168, 0x0169}, // 'Ũ' => 'ũ' 7105: {0x016A, 0x016B}, // 'Ū' => 'ū' 7102: {0x016A, 0x016B}, // 'Ū' => 'ū' 7099: {0x016C, 0x016D}, // 'Ŭ' => 'ŭ' 7096: {0x016C, 0x016D}, // 'Ŭ' => 'ŭ' 7093: {0x016E, 0x016F}, // 'Ů' => 'ů' 7090: {0x016E, 0x016F}, // 'Ů' => 'ů' 7087: {0x0170, 0x0171}, // 'Ű' => 'ű' 7084: {0x0170, 0x0171}, // 'Ű' => 'ű' 7081: {0x0172, 0x0173}, // 'Ų' => 'ų' 7078: {0x0172, 0x0173}, // 'Ų' => 'ų' 7075: {0x0174, 0x0175}, // 'Ŵ' => 'ŵ' 7072: {0x0174, 0x0175}, // 'Ŵ' => 'ŵ' 7069: {0x0176, 0x0177}, // 'Ŷ' => 'ŷ' 7066: {0x0176, 0x0177}, // 'Ŷ' => 'ŷ' 7063: {0x0178, 0x00FF}, // 'Ÿ' => 'ÿ' 7060: {0x0179, 0x017A}, // 'Ź' => 'ź' 7057: {0x0179, 0x017A}, // 'Ź' => 'ź' 7054: {0x017B, 0x017C}, // 'Ż' => 'ż' 7051: {0x017B, 0x017C}, // 'Ż' => 'ż' 7048: {0x017D, 0x017E}, // 'Ž' => 'ž' 7045: {0x017D, 0x017E}, // 'Ž' => 'ž' 7042: {0x0053, 0x017F}, // 'S' => 'ſ' 7039: {0x0243, 0x0180}, // 'Ƀ' => 'ƀ' 7036: {0x0181, 0x0253}, // 'Ɓ' => 'ɓ' 7033: {0x0182, 0x0183}, // 'Ƃ' => 'ƃ' 7030: {0x0182, 0x0183}, // 'Ƃ' => 'ƃ' 7027: {0x0184, 0x0185}, // 'Ƅ' => 'ƅ' 7024: {0x0184, 0x0185}, // 'Ƅ' => 'ƅ' 7021: {0x0186, 0x0254}, // 'Ɔ' => 'ɔ' 7018: {0x0187, 0x0188}, // 'Ƈ' => 'ƈ' 7015: {0x0187, 0x0188}, // 'Ƈ' => 'ƈ' 7012: {0x0189, 0x0256}, // 'Ɖ' => 'ɖ' 7009: {0x018A, 0x0257}, // 'Ɗ' => 'ɗ' 7006: {0x018B, 0x018C}, // 'Ƌ' => 'ƌ' 7003: {0x018B, 0x018C}, // 'Ƌ' => 'ƌ' 6997: {0x018E, 0x01DD}, // 'Ǝ' => 'ǝ' 6994: {0x018F, 0x0259}, // 'Ə' => 'ə' 6991: {0x0190, 0x025B}, // 'Ɛ' => 'ɛ' 6988: {0x0191, 0x0192}, // 'Ƒ' => 'ƒ' 6985: {0x0191, 0x0192}, // 'Ƒ' => 'ƒ' 6982: {0x0193, 0x0260}, // 'Ɠ' => 'ɠ' 6979: {0x0194, 0x0263}, // 'Ɣ' => 'ɣ' 6976: {0x01F6, 0x0195}, // 'Ƕ' => 'ƕ' 6973: {0x0196, 0x0269}, // 'Ɩ' => 'ɩ' 6970: {0x0197, 0x0268}, // 'Ɨ' => 'ɨ' 6967: {0x0198, 0x0199}, // 'Ƙ' => 'ƙ' 6964: {0x0198, 0x0199}, // 'Ƙ' => 'ƙ' 6961: {0x023D, 0x019A}, // 'Ƚ' => 'ƚ' 6955: {0x019C, 0x026F}, // 'Ɯ' => 'ɯ' 6952: {0x019D, 0x0272}, // 'Ɲ' => 'ɲ' 6949: {0x0220, 0x019E}, // 'Ƞ' => 'ƞ' 6946: {0x019F, 0x0275}, // 'Ɵ' => 'ɵ' 6943: {0x01A0, 0x01A1}, // 'Ơ' => 'ơ' 6940: {0x01A0, 0x01A1}, // 'Ơ' => 'ơ' 6937: {0x01A2, 0x01A3}, // 'Ƣ' => 'ƣ' 6934: {0x01A2, 0x01A3}, // 'Ƣ' => 'ƣ' 6931: {0x01A4, 0x01A5}, // 'Ƥ' => 'ƥ' 6928: {0x01A4, 0x01A5}, // 'Ƥ' => 'ƥ' 6925: {0x01A6, 0x0280}, // 'Ʀ' => 'ʀ' 6922: {0x01A7, 0x01A8}, // 'Ƨ' => 'ƨ' 6919: {0x01A7, 0x01A8}, // 'Ƨ' => 'ƨ' 6916: {0x01A9, 0x0283}, // 'Ʃ' => 'ʃ' 6907: {0x01AC, 0x01AD}, // 'Ƭ' => 'ƭ' 6904: {0x01AC, 0x01AD}, // 'Ƭ' => 'ƭ' 6901: {0x01AE, 0x0288}, // 'Ʈ' => 'ʈ' 6898: {0x01AF, 0x01B0}, // 'Ư' => 'ư' 6895: {0x01AF, 0x01B0}, // 'Ư' => 'ư' 6892: {0x01B1, 0x028A}, // 'Ʊ' => 'ʊ' 6889: {0x01B2, 0x028B}, // 'Ʋ' => 'ʋ' 6886: {0x01B3, 0x01B4}, // 'Ƴ' => 'ƴ' 6883: {0x01B3, 0x01B4}, // 'Ƴ' => 'ƴ' 6880: {0x01B5, 0x01B6}, // 'Ƶ' => 'ƶ' 6877: {0x01B5, 0x01B6}, // 'Ƶ' => 'ƶ' 6874: {0x01B7, 0x0292}, // 'Ʒ' => 'ʒ' 6871: {0x01B8, 0x01B9}, // 'Ƹ' => 'ƹ' 6868: {0x01B8, 0x01B9}, // 'Ƹ' => 'ƹ' 6859: {0x01BC, 0x01BD}, // 'Ƽ' => 'ƽ' 6856: {0x01BC, 0x01BD}, // 'Ƽ' => 'ƽ' 6850: {0x01F7, 0x01BF}, // 'Ƿ' => 'ƿ' 6835: {0x01C4, 0x01C6}, // 'DŽ' => 'dž' 6829: {0x01C4, 0x01C6}, // 'DŽ' => 'dž' 6826: {0x01C7, 0x01C9}, // 'LJ' => 'lj' 6820: {0x01C7, 0x01C9}, // 'LJ' => 'lj' 6817: {0x01CA, 0x01CC}, // 'NJ' => 'nj' 6811: {0x01CA, 0x01CC}, // 'NJ' => 'nj' 6808: {0x01CD, 0x01CE}, // 'Ǎ' => 'ǎ' 6805: {0x01CD, 0x01CE}, // 'Ǎ' => 'ǎ' 6802: {0x01CF, 0x01D0}, // 'Ǐ' => 'ǐ' 6799: {0x01CF, 0x01D0}, // 'Ǐ' => 'ǐ' 6796: {0x01D1, 0x01D2}, // 'Ǒ' => 'ǒ' 6793: {0x01D1, 0x01D2}, // 'Ǒ' => 'ǒ' 6790: {0x01D3, 0x01D4}, // 'Ǔ' => 'ǔ' 6787: {0x01D3, 0x01D4}, // 'Ǔ' => 'ǔ' 6784: {0x01D5, 0x01D6}, // 'Ǖ' => 'ǖ' 6781: {0x01D5, 0x01D6}, // 'Ǖ' => 'ǖ' 6778: {0x01D7, 0x01D8}, // 'Ǘ' => 'ǘ' 6775: {0x01D7, 0x01D8}, // 'Ǘ' => 'ǘ' 6772: {0x01D9, 0x01DA}, // 'Ǚ' => 'ǚ' 6769: {0x01D9, 0x01DA}, // 'Ǚ' => 'ǚ' 6766: {0x01DB, 0x01DC}, // 'Ǜ' => 'ǜ' 6763: {0x01DB, 0x01DC}, // 'Ǜ' => 'ǜ' 6760: {0x018E, 0x01DD}, // 'Ǝ' => 'ǝ' 6757: {0x01DE, 0x01DF}, // 'Ǟ' => 'ǟ' 6754: {0x01DE, 0x01DF}, // 'Ǟ' => 'ǟ' 6751: {0x01E0, 0x01E1}, // 'Ǡ' => 'ǡ' 6748: {0x01E0, 0x01E1}, // 'Ǡ' => 'ǡ' 6745: {0x01E2, 0x01E3}, // 'Ǣ' => 'ǣ' 6742: {0x01E2, 0x01E3}, // 'Ǣ' => 'ǣ' 6739: {0x01E4, 0x01E5}, // 'Ǥ' => 'ǥ' 6736: {0x01E4, 0x01E5}, // 'Ǥ' => 'ǥ' 6733: {0x01E6, 0x01E7}, // 'Ǧ' => 'ǧ' 6730: {0x01E6, 0x01E7}, // 'Ǧ' => 'ǧ' 6727: {0x01E8, 0x01E9}, // 'Ǩ' => 'ǩ' 6724: {0x01E8, 0x01E9}, // 'Ǩ' => 'ǩ' 6721: {0x01EA, 0x01EB}, // 'Ǫ' => 'ǫ' 6718: {0x01EA, 0x01EB}, // 'Ǫ' => 'ǫ' 6715: {0x01EC, 0x01ED}, // 'Ǭ' => 'ǭ' 6712: {0x01EC, 0x01ED}, // 'Ǭ' => 'ǭ' 6709: {0x01EE, 0x01EF}, // 'Ǯ' => 'ǯ' 6706: {0x01EE, 0x01EF}, // 'Ǯ' => 'ǯ' 6700: {0x01F1, 0x01F3}, // 'DZ' => 'dz' 6694: {0x01F1, 0x01F3}, // 'DZ' => 'dz' 6691: {0x01F4, 0x01F5}, // 'Ǵ' => 'ǵ' 6688: {0x01F4, 0x01F5}, // 'Ǵ' => 'ǵ' 6685: {0x01F6, 0x0195}, // 'Ƕ' => 'ƕ' 6682: {0x01F7, 0x01BF}, // 'Ƿ' => 'ƿ' 6679: {0x01F8, 0x01F9}, // 'Ǹ' => 'ǹ' 6676: {0x01F8, 0x01F9}, // 'Ǹ' => 'ǹ' 6673: {0x01FA, 0x01FB}, // 'Ǻ' => 'ǻ' 6670: {0x01FA, 0x01FB}, // 'Ǻ' => 'ǻ' 6667: {0x01FC, 0x01FD}, // 'Ǽ' => 'ǽ' 6664: {0x01FC, 0x01FD}, // 'Ǽ' => 'ǽ' 6661: {0x01FE, 0x01FF}, // 'Ǿ' => 'ǿ' 6658: {0x01FE, 0x01FF}, // 'Ǿ' => 'ǿ' 6655: {0x0200, 0x0201}, // 'Ȁ' => 'ȁ' 6652: {0x0200, 0x0201}, // 'Ȁ' => 'ȁ' 6649: {0x0202, 0x0203}, // 'Ȃ' => 'ȃ' 6646: {0x0202, 0x0203}, // 'Ȃ' => 'ȃ' 6643: {0x0204, 0x0205}, // 'Ȅ' => 'ȅ' 6640: {0x0204, 0x0205}, // 'Ȅ' => 'ȅ' 6637: {0x0206, 0x0207}, // 'Ȇ' => 'ȇ' 6634: {0x0206, 0x0207}, // 'Ȇ' => 'ȇ' 6631: {0x0208, 0x0209}, // 'Ȉ' => 'ȉ' 6628: {0x0208, 0x0209}, // 'Ȉ' => 'ȉ' 6625: {0x020A, 0x020B}, // 'Ȋ' => 'ȋ' 6622: {0x020A, 0x020B}, // 'Ȋ' => 'ȋ' 6619: {0x020C, 0x020D}, // 'Ȍ' => 'ȍ' 6616: {0x020C, 0x020D}, // 'Ȍ' => 'ȍ' 6613: {0x020E, 0x020F}, // 'Ȏ' => 'ȏ' 6610: {0x020E, 0x020F}, // 'Ȏ' => 'ȏ' 6607: {0x0210, 0x0211}, // 'Ȑ' => 'ȑ' 6604: {0x0210, 0x0211}, // 'Ȑ' => 'ȑ' 6601: {0x0212, 0x0213}, // 'Ȓ' => 'ȓ' 6598: {0x0212, 0x0213}, // 'Ȓ' => 'ȓ' 6595: {0x0214, 0x0215}, // 'Ȕ' => 'ȕ' 6592: {0x0214, 0x0215}, // 'Ȕ' => 'ȕ' 6589: {0x0216, 0x0217}, // 'Ȗ' => 'ȗ' 6586: {0x0216, 0x0217}, // 'Ȗ' => 'ȗ' 6583: {0x0218, 0x0219}, // 'Ș' => 'ș' 6580: {0x0218, 0x0219}, // 'Ș' => 'ș' 6577: {0x021A, 0x021B}, // 'Ț' => 'ț' 6574: {0x021A, 0x021B}, // 'Ț' => 'ț' 6571: {0x021C, 0x021D}, // 'Ȝ' => 'ȝ' 6568: {0x021C, 0x021D}, // 'Ȝ' => 'ȝ' 6565: {0x021E, 0x021F}, // 'Ȟ' => 'ȟ' 6562: {0x021E, 0x021F}, // 'Ȟ' => 'ȟ' 6559: {0x0220, 0x019E}, // 'Ƞ' => 'ƞ' 6553: {0x0222, 0x0223}, // 'Ȣ' => 'ȣ' 6550: {0x0222, 0x0223}, // 'Ȣ' => 'ȣ' 6547: {0x0224, 0x0225}, // 'Ȥ' => 'ȥ' 6544: {0x0224, 0x0225}, // 'Ȥ' => 'ȥ' 6541: {0x0226, 0x0227}, // 'Ȧ' => 'ȧ' 6538: {0x0226, 0x0227}, // 'Ȧ' => 'ȧ' 6535: {0x0228, 0x0229}, // 'Ȩ' => 'ȩ' 6532: {0x0228, 0x0229}, // 'Ȩ' => 'ȩ' 6529: {0x022A, 0x022B}, // 'Ȫ' => 'ȫ' 6526: {0x022A, 0x022B}, // 'Ȫ' => 'ȫ' 6523: {0x022C, 0x022D}, // 'Ȭ' => 'ȭ' 6520: {0x022C, 0x022D}, // 'Ȭ' => 'ȭ' 6517: {0x022E, 0x022F}, // 'Ȯ' => 'ȯ' 6514: {0x022E, 0x022F}, // 'Ȯ' => 'ȯ' 6511: {0x0230, 0x0231}, // 'Ȱ' => 'ȱ' 6508: {0x0230, 0x0231}, // 'Ȱ' => 'ȱ' 6505: {0x0232, 0x0233}, // 'Ȳ' => 'ȳ' 6502: {0x0232, 0x0233}, // 'Ȳ' => 'ȳ' 6481: {0x023A, 0x2C65}, // 'Ⱥ' => 'ⱥ' 6478: {0x023B, 0x023C}, // 'Ȼ' => 'ȼ' 6475: {0x023B, 0x023C}, // 'Ȼ' => 'ȼ' 6472: {0x023D, 0x019A}, // 'Ƚ' => 'ƚ' 6469: {0x023E, 0x2C66}, // 'Ⱦ' => 'ⱦ' 6466: {0x2C7E, 0x023F}, // 'Ȿ' => 'ȿ' 6463: {0x2C7F, 0x0240}, // 'Ɀ' => 'ɀ' 6460: {0x0241, 0x0242}, // 'Ɂ' => 'ɂ' 6457: {0x0241, 0x0242}, // 'Ɂ' => 'ɂ' 6454: {0x0243, 0x0180}, // 'Ƀ' => 'ƀ' 6451: {0x0244, 0x0289}, // 'Ʉ' => 'ʉ' 6448: {0x0245, 0x028C}, // 'Ʌ' => 'ʌ' 6445: {0x0246, 0x0247}, // 'Ɇ' => 'ɇ' 6442: {0x0246, 0x0247}, // 'Ɇ' => 'ɇ' 6439: {0x0248, 0x0249}, // 'Ɉ' => 'ɉ' 6436: {0x0248, 0x0249}, // 'Ɉ' => 'ɉ' 6433: {0x024A, 0x024B}, // 'Ɋ' => 'ɋ' 6430: {0x024A, 0x024B}, // 'Ɋ' => 'ɋ' 6427: {0x024C, 0x024D}, // 'Ɍ' => 'ɍ' 6424: {0x024C, 0x024D}, // 'Ɍ' => 'ɍ' 6421: {0x024E, 0x024F}, // 'Ɏ' => 'ɏ' 6418: {0x024E, 0x024F}, // 'Ɏ' => 'ɏ' 6415: {0x2C6F, 0x0250}, // 'Ɐ' => 'ɐ' 6412: {0x2C6D, 0x0251}, // 'Ɑ' => 'ɑ' 6409: {0x2C70, 0x0252}, // 'Ɒ' => 'ɒ' 6406: {0x0181, 0x0253}, // 'Ɓ' => 'ɓ' 6403: {0x0186, 0x0254}, // 'Ɔ' => 'ɔ' 6397: {0x0189, 0x0256}, // 'Ɖ' => 'ɖ' 6394: {0x018A, 0x0257}, // 'Ɗ' => 'ɗ' 6388: {0x018F, 0x0259}, // 'Ə' => 'ə' 6382: {0x0190, 0x025B}, // 'Ɛ' => 'ɛ' 6379: {0xA7AB, 0x025C}, // 'Ɜ' => 'ɜ' 6367: {0x0193, 0x0260}, // 'Ɠ' => 'ɠ' 6364: {0xA7AC, 0x0261}, // 'Ɡ' => 'ɡ' 6358: {0x0194, 0x0263}, // 'Ɣ' => 'ɣ' 6352: {0xA78D, 0x0265}, // 'Ɥ' => 'ɥ' 6349: {0xA7AA, 0x0266}, // 'Ɦ' => 'ɦ' 6343: {0x0197, 0x0268}, // 'Ɨ' => 'ɨ' 6340: {0x0196, 0x0269}, // 'Ɩ' => 'ɩ' 6337: {0xA7AE, 0x026A}, // 'Ɪ' => 'ɪ' 6334: {0x2C62, 0x026B}, // 'Ɫ' => 'ɫ' 6331: {0xA7AD, 0x026C}, // 'Ɬ' => 'ɬ' 6322: {0x019C, 0x026F}, // 'Ɯ' => 'ɯ' 6316: {0x2C6E, 0x0271}, // 'Ɱ' => 'ɱ' 6313: {0x019D, 0x0272}, // 'Ɲ' => 'ɲ' 6304: {0x019F, 0x0275}, // 'Ɵ' => 'ɵ' 6280: {0x2C64, 0x027D}, // 'Ɽ' => 'ɽ' 6271: {0x01A6, 0x0280}, // 'Ʀ' => 'ʀ' 6265: {0xA7C5, 0x0282}, // 'Ʂ' => 'ʂ' 6262: {0x01A9, 0x0283}, // 'Ʃ' => 'ʃ' 6250: {0xA7B1, 0x0287}, // 'Ʇ' => 'ʇ' 6247: {0x01AE, 0x0288}, // 'Ʈ' => 'ʈ' 6244: {0x0244, 0x0289}, // 'Ʉ' => 'ʉ' 6241: {0x01B1, 0x028A}, // 'Ʊ' => 'ʊ' 6238: {0x01B2, 0x028B}, // 'Ʋ' => 'ʋ' 6235: {0x0245, 0x028C}, // 'Ʌ' => 'ʌ' 6217: {0x01B7, 0x0292}, // 'Ʒ' => 'ʒ' 6184: {0xA7B2, 0x029D}, // 'Ʝ' => 'ʝ' 6181: {0xA7B0, 0x029E}, // 'Ʞ' => 'ʞ' 5680: {0x0399, 0x0345}, // 'Ι' => 'ͅ' 5550: {0x0370, 0x0371}, // 'Ͱ' => 'ͱ' 5547: {0x0370, 0x0371}, // 'Ͱ' => 'ͱ' 5544: {0x0372, 0x0373}, // 'Ͳ' => 'ͳ' 5541: {0x0372, 0x0373}, // 'Ͳ' => 'ͳ' 5532: {0x0376, 0x0377}, // 'Ͷ' => 'ͷ' 5529: {0x0376, 0x0377}, // 'Ͷ' => 'ͷ' 5517: {0x03FD, 0x037B}, // 'Ͻ' => 'ͻ' 5514: {0x03FE, 0x037C}, // 'Ͼ' => 'ͼ' 5511: {0x03FF, 0x037D}, // 'Ͽ' => 'ͽ' 5505: {0x037F, 0x03F3}, // 'Ϳ' => 'ϳ' 5484: {0x0386, 0x03AC}, // 'Ά' => 'ά' 5478: {0x0388, 0x03AD}, // 'Έ' => 'έ' 5475: {0x0389, 0x03AE}, // 'Ή' => 'ή' 5472: {0x038A, 0x03AF}, // 'Ί' => 'ί' 5466: {0x038C, 0x03CC}, // 'Ό' => 'ό' 5460: {0x038E, 0x03CD}, // 'Ύ' => 'ύ' 5457: {0x038F, 0x03CE}, // 'Ώ' => 'ώ' 5451: {0x0391, 0x03B1}, // 'Α' => 'α' 5448: {0x0392, 0x03B2}, // 'Β' => 'β' 5445: {0x0393, 0x03B3}, // 'Γ' => 'γ' 5442: {0x0394, 0x03B4}, // 'Δ' => 'δ' 5439: {0x0395, 0x03B5}, // 'Ε' => 'ε' 5436: {0x0396, 0x03B6}, // 'Ζ' => 'ζ' 5433: {0x0397, 0x03B7}, // 'Η' => 'η' 5430: {0x0398, 0x03B8}, // 'Θ' => 'θ' 5427: {0x0399, 0x03B9}, // 'Ι' => 'ι' 5424: {0x039A, 0x03BA}, // 'Κ' => 'κ' 5421: {0x039B, 0x03BB}, // 'Λ' => 'λ' 5418: {0x039C, 0x03BC}, // 'Μ' => 'μ' 5415: {0x039D, 0x03BD}, // 'Ν' => 'ν' 5412: {0x039E, 0x03BE}, // 'Ξ' => 'ξ' 5409: {0x039F, 0x03BF}, // 'Ο' => 'ο' 5406: {0x03A0, 0x03C0}, // 'Π' => 'π' 5403: {0x03A1, 0x03C1}, // 'Ρ' => 'ρ' 5397: {0x03A3, 0x03C3}, // 'Σ' => 'σ' 5394: {0x03A4, 0x03C4}, // 'Τ' => 'τ' 5391: {0x03A5, 0x03C5}, // 'Υ' => 'υ' 5388: {0x03A6, 0x03C6}, // 'Φ' => 'φ' 5385: {0x03A7, 0x03C7}, // 'Χ' => 'χ' 5382: {0x03A8, 0x03C8}, // 'Ψ' => 'ψ' 5379: {0x03A9, 0x03C9}, // 'Ω' => 'ω' 5376: {0x03AA, 0x03CA}, // 'Ϊ' => 'ϊ' 5373: {0x03AB, 0x03CB}, // 'Ϋ' => 'ϋ' 5370: {0x0386, 0x03AC}, // 'Ά' => 'ά' 5367: {0x0388, 0x03AD}, // 'Έ' => 'έ' 5364: {0x0389, 0x03AE}, // 'Ή' => 'ή' 5361: {0x038A, 0x03AF}, // 'Ί' => 'ί' 5355: {0x0391, 0x03B1}, // 'Α' => 'α' 5352: {0x0392, 0x03B2}, // 'Β' => 'β' 5349: {0x0393, 0x03B3}, // 'Γ' => 'γ' 5346: {0x0394, 0x03B4}, // 'Δ' => 'δ' 5343: {0x0395, 0x03B5}, // 'Ε' => 'ε' 5340: {0x0396, 0x03B6}, // 'Ζ' => 'ζ' 5337: {0x0397, 0x03B7}, // 'Η' => 'η' 5334: {0x0398, 0x03B8}, // 'Θ' => 'θ' 5331: {0x0399, 0x03B9}, // 'Ι' => 'ι' 5328: {0x039A, 0x03BA}, // 'Κ' => 'κ' 5325: {0x039B, 0x03BB}, // 'Λ' => 'λ' 5322: {0x039C, 0x03BC}, // 'Μ' => 'μ' 5319: {0x039D, 0x03BD}, // 'Ν' => 'ν' 5316: {0x039E, 0x03BE}, // 'Ξ' => 'ξ' 5313: {0x039F, 0x03BF}, // 'Ο' => 'ο' 5310: {0x03A0, 0x03C0}, // 'Π' => 'π' 5307: {0x03A1, 0x03C1}, // 'Ρ' => 'ρ' 5304: {0x03A3, 0x03C2}, // 'Σ' => 'ς' 5301: {0x03A3, 0x03C3}, // 'Σ' => 'σ' 5298: {0x03A4, 0x03C4}, // 'Τ' => 'τ' 5295: {0x03A5, 0x03C5}, // 'Υ' => 'υ' 5292: {0x03A6, 0x03C6}, // 'Φ' => 'φ' 5289: {0x03A7, 0x03C7}, // 'Χ' => 'χ' 5286: {0x03A8, 0x03C8}, // 'Ψ' => 'ψ' 5283: {0x03A9, 0x03C9}, // 'Ω' => 'ω' 5280: {0x03AA, 0x03CA}, // 'Ϊ' => 'ϊ' 5277: {0x03AB, 0x03CB}, // 'Ϋ' => 'ϋ' 5274: {0x038C, 0x03CC}, // 'Ό' => 'ό' 5271: {0x038E, 0x03CD}, // 'Ύ' => 'ύ' 5268: {0x038F, 0x03CE}, // 'Ώ' => 'ώ' 5265: {0x03CF, 0x03D7}, // 'Ϗ' => 'ϗ' 5262: {0x0392, 0x03D0}, // 'Β' => 'ϐ' 5259: {0x0398, 0x03D1}, // 'Θ' => 'ϑ' 5247: {0x03A6, 0x03D5}, // 'Φ' => 'ϕ' 5244: {0x03A0, 0x03D6}, // 'Π' => 'ϖ' 5241: {0x03CF, 0x03D7}, // 'Ϗ' => 'ϗ' 5238: {0x03D8, 0x03D9}, // 'Ϙ' => 'ϙ' 5235: {0x03D8, 0x03D9}, // 'Ϙ' => 'ϙ' 5232: {0x03DA, 0x03DB}, // 'Ϛ' => 'ϛ' 5229: {0x03DA, 0x03DB}, // 'Ϛ' => 'ϛ' 5226: {0x03DC, 0x03DD}, // 'Ϝ' => 'ϝ' 5223: {0x03DC, 0x03DD}, // 'Ϝ' => 'ϝ' 5220: {0x03DE, 0x03DF}, // 'Ϟ' => 'ϟ' 5217: {0x03DE, 0x03DF}, // 'Ϟ' => 'ϟ' 5214: {0x03E0, 0x03E1}, // 'Ϡ' => 'ϡ' 5211: {0x03E0, 0x03E1}, // 'Ϡ' => 'ϡ' 5208: {0x03E2, 0x03E3}, // 'Ϣ' => 'ϣ' 5205: {0x03E2, 0x03E3}, // 'Ϣ' => 'ϣ' 5202: {0x03E4, 0x03E5}, // 'Ϥ' => 'ϥ' 5199: {0x03E4, 0x03E5}, // 'Ϥ' => 'ϥ' 5196: {0x03E6, 0x03E7}, // 'Ϧ' => 'ϧ' 5193: {0x03E6, 0x03E7}, // 'Ϧ' => 'ϧ' 5190: {0x03E8, 0x03E9}, // 'Ϩ' => 'ϩ' 5187: {0x03E8, 0x03E9}, // 'Ϩ' => 'ϩ' 5184: {0x03EA, 0x03EB}, // 'Ϫ' => 'ϫ' 5181: {0x03EA, 0x03EB}, // 'Ϫ' => 'ϫ' 5178: {0x03EC, 0x03ED}, // 'Ϭ' => 'ϭ' 5175: {0x03EC, 0x03ED}, // 'Ϭ' => 'ϭ' 5172: {0x03EE, 0x03EF}, // 'Ϯ' => 'ϯ' 5169: {0x03EE, 0x03EF}, // 'Ϯ' => 'ϯ' 5166: {0x039A, 0x03F0}, // 'Κ' => 'ϰ' 5163: {0x03A1, 0x03F1}, // 'Ρ' => 'ϱ' 5160: {0x03F9, 0x03F2}, // 'Ϲ' => 'ϲ' 5157: {0x037F, 0x03F3}, // 'Ϳ' => 'ϳ' 5154: {0x03F4, 0x03B8}, // 'ϴ' => 'θ' 5151: {0x0395, 0x03F5}, // 'Ε' => 'ϵ' 5145: {0x03F7, 0x03F8}, // 'Ϸ' => 'ϸ' 5142: {0x03F7, 0x03F8}, // 'Ϸ' => 'ϸ' 5139: {0x03F9, 0x03F2}, // 'Ϲ' => 'ϲ' 5136: {0x03FA, 0x03FB}, // 'Ϻ' => 'ϻ' 5133: {0x03FA, 0x03FB}, // 'Ϻ' => 'ϻ' 5127: {0x03FD, 0x037B}, // 'Ͻ' => 'ͻ' 5124: {0x03FE, 0x037C}, // 'Ͼ' => 'ͼ' 5121: {0x03FF, 0x037D}, // 'Ͽ' => 'ͽ' 5118: {0x0400, 0x0450}, // 'Ѐ' => 'ѐ' 5115: {0x0401, 0x0451}, // 'Ё' => 'ё' 5112: {0x0402, 0x0452}, // 'Ђ' => 'ђ' 5109: {0x0403, 0x0453}, // 'Ѓ' => 'ѓ' 5106: {0x0404, 0x0454}, // 'Є' => 'є' 5103: {0x0405, 0x0455}, // 'Ѕ' => 'ѕ' 5100: {0x0406, 0x0456}, // 'І' => 'і' 5097: {0x0407, 0x0457}, // 'Ї' => 'ї' 5094: {0x0408, 0x0458}, // 'Ј' => 'ј' 5091: {0x0409, 0x0459}, // 'Љ' => 'љ' 5088: {0x040A, 0x045A}, // 'Њ' => 'њ' 5085: {0x040B, 0x045B}, // 'Ћ' => 'ћ' 5082: {0x040C, 0x045C}, // 'Ќ' => 'ќ' 5079: {0x040D, 0x045D}, // 'Ѝ' => 'ѝ' 5076: {0x040E, 0x045E}, // 'Ў' => 'ў' 5073: {0x040F, 0x045F}, // 'Џ' => 'џ' 5070: {0x0410, 0x0430}, // 'А' => 'а' 5067: {0x0411, 0x0431}, // 'Б' => 'б' 5064: {0x0412, 0x0432}, // 'В' => 'в' 5061: {0x0413, 0x0433}, // 'Г' => 'г' 5058: {0x0414, 0x0434}, // 'Д' => 'д' 5055: {0x0415, 0x0435}, // 'Е' => 'е' 5052: {0x0416, 0x0436}, // 'Ж' => 'ж' 5049: {0x0417, 0x0437}, // 'З' => 'з' 5046: {0x0418, 0x0438}, // 'И' => 'и' 5043: {0x0419, 0x0439}, // 'Й' => 'й' 5040: {0x041A, 0x043A}, // 'К' => 'к' 5037: {0x041B, 0x043B}, // 'Л' => 'л' 5034: {0x041C, 0x043C}, // 'М' => 'м' 5031: {0x041D, 0x043D}, // 'Н' => 'н' 5028: {0x041E, 0x043E}, // 'О' => 'о' 5025: {0x041F, 0x043F}, // 'П' => 'п' 5022: {0x0420, 0x0440}, // 'Р' => 'р' 5019: {0x0421, 0x0441}, // 'С' => 'с' 5016: {0x0422, 0x0442}, // 'Т' => 'т' 5013: {0x0423, 0x0443}, // 'У' => 'у' 5010: {0x0424, 0x0444}, // 'Ф' => 'ф' 5007: {0x0425, 0x0445}, // 'Х' => 'х' 5004: {0x0426, 0x0446}, // 'Ц' => 'ц' 5001: {0x0427, 0x0447}, // 'Ч' => 'ч' 4998: {0x0428, 0x0448}, // 'Ш' => 'ш' 4995: {0x0429, 0x0449}, // 'Щ' => 'щ' 4992: {0x042A, 0x044A}, // 'Ъ' => 'ъ' 4989: {0x042B, 0x044B}, // 'Ы' => 'ы' 4986: {0x042C, 0x044C}, // 'Ь' => 'ь' 4983: {0x042D, 0x044D}, // 'Э' => 'э' 4980: {0x042E, 0x044E}, // 'Ю' => 'ю' 4977: {0x042F, 0x044F}, // 'Я' => 'я' 4974: {0x0410, 0x0430}, // 'А' => 'а' 4971: {0x0411, 0x0431}, // 'Б' => 'б' 4968: {0x0412, 0x0432}, // 'В' => 'в' 4965: {0x0413, 0x0433}, // 'Г' => 'г' 4962: {0x0414, 0x0434}, // 'Д' => 'д' 4959: {0x0415, 0x0435}, // 'Е' => 'е' 4956: {0x0416, 0x0436}, // 'Ж' => 'ж' 4953: {0x0417, 0x0437}, // 'З' => 'з' 4950: {0x0418, 0x0438}, // 'И' => 'и' 4947: {0x0419, 0x0439}, // 'Й' => 'й' 4944: {0x041A, 0x043A}, // 'К' => 'к' 4941: {0x041B, 0x043B}, // 'Л' => 'л' 4938: {0x041C, 0x043C}, // 'М' => 'м' 4935: {0x041D, 0x043D}, // 'Н' => 'н' 4932: {0x041E, 0x043E}, // 'О' => 'о' 4929: {0x041F, 0x043F}, // 'П' => 'п' 4926: {0x0420, 0x0440}, // 'Р' => 'р' 4923: {0x0421, 0x0441}, // 'С' => 'с' 4920: {0x0422, 0x0442}, // 'Т' => 'т' 4917: {0x0423, 0x0443}, // 'У' => 'у' 4914: {0x0424, 0x0444}, // 'Ф' => 'ф' 4911: {0x0425, 0x0445}, // 'Х' => 'х' 4908: {0x0426, 0x0446}, // 'Ц' => 'ц' 4905: {0x0427, 0x0447}, // 'Ч' => 'ч' 4902: {0x0428, 0x0448}, // 'Ш' => 'ш' 4899: {0x0429, 0x0449}, // 'Щ' => 'щ' 4896: {0x042A, 0x044A}, // 'Ъ' => 'ъ' 4893: {0x042B, 0x044B}, // 'Ы' => 'ы' 4890: {0x042C, 0x044C}, // 'Ь' => 'ь' 4887: {0x042D, 0x044D}, // 'Э' => 'э' 4884: {0x042E, 0x044E}, // 'Ю' => 'ю' 4881: {0x042F, 0x044F}, // 'Я' => 'я' 4878: {0x0400, 0x0450}, // 'Ѐ' => 'ѐ' 4875: {0x0401, 0x0451}, // 'Ё' => 'ё' 4872: {0x0402, 0x0452}, // 'Ђ' => 'ђ' 4869: {0x0403, 0x0453}, // 'Ѓ' => 'ѓ' 4866: {0x0404, 0x0454}, // 'Є' => 'є' 4863: {0x0405, 0x0455}, // 'Ѕ' => 'ѕ' 4860: {0x0406, 0x0456}, // 'І' => 'і' 4857: {0x0407, 0x0457}, // 'Ї' => 'ї' 4854: {0x0408, 0x0458}, // 'Ј' => 'ј' 4851: {0x0409, 0x0459}, // 'Љ' => 'љ' 4848: {0x040A, 0x045A}, // 'Њ' => 'њ' 4845: {0x040B, 0x045B}, // 'Ћ' => 'ћ' 4842: {0x040C, 0x045C}, // 'Ќ' => 'ќ' 4839: {0x040D, 0x045D}, // 'Ѝ' => 'ѝ' 4836: {0x040E, 0x045E}, // 'Ў' => 'ў' 4833: {0x040F, 0x045F}, // 'Џ' => 'џ' 4830: {0x0460, 0x0461}, // 'Ѡ' => 'ѡ' 4827: {0x0460, 0x0461}, // 'Ѡ' => 'ѡ' 4824: {0x0462, 0x0463}, // 'Ѣ' => 'ѣ' 4821: {0x0462, 0x0463}, // 'Ѣ' => 'ѣ' 4818: {0x0464, 0x0465}, // 'Ѥ' => 'ѥ' 4815: {0x0464, 0x0465}, // 'Ѥ' => 'ѥ' 4812: {0x0466, 0x0467}, // 'Ѧ' => 'ѧ' 4809: {0x0466, 0x0467}, // 'Ѧ' => 'ѧ' 4806: {0x0468, 0x0469}, // 'Ѩ' => 'ѩ' 4803: {0x0468, 0x0469}, // 'Ѩ' => 'ѩ' 4800: {0x046A, 0x046B}, // 'Ѫ' => 'ѫ' 4797: {0x046A, 0x046B}, // 'Ѫ' => 'ѫ' 4794: {0x046C, 0x046D}, // 'Ѭ' => 'ѭ' 4791: {0x046C, 0x046D}, // 'Ѭ' => 'ѭ' 4788: {0x046E, 0x046F}, // 'Ѯ' => 'ѯ' 4785: {0x046E, 0x046F}, // 'Ѯ' => 'ѯ' 4782: {0x0470, 0x0471}, // 'Ѱ' => 'ѱ' 4779: {0x0470, 0x0471}, // 'Ѱ' => 'ѱ' 4776: {0x0472, 0x0473}, // 'Ѳ' => 'ѳ' 4773: {0x0472, 0x0473}, // 'Ѳ' => 'ѳ' 4770: {0x0474, 0x0475}, // 'Ѵ' => 'ѵ' 4767: {0x0474, 0x0475}, // 'Ѵ' => 'ѵ' 4764: {0x0476, 0x0477}, // 'Ѷ' => 'ѷ' 4761: {0x0476, 0x0477}, // 'Ѷ' => 'ѷ' 4758: {0x0478, 0x0479}, // 'Ѹ' => 'ѹ' 4755: {0x0478, 0x0479}, // 'Ѹ' => 'ѹ' 4752: {0x047A, 0x047B}, // 'Ѻ' => 'ѻ' 4749: {0x047A, 0x047B}, // 'Ѻ' => 'ѻ' 4746: {0x047C, 0x047D}, // 'Ѽ' => 'ѽ' 4743: {0x047C, 0x047D}, // 'Ѽ' => 'ѽ' 4740: {0x047E, 0x047F}, // 'Ѿ' => 'ѿ' 4737: {0x047E, 0x047F}, // 'Ѿ' => 'ѿ' 4734: {0x0480, 0x0481}, // 'Ҁ' => 'ҁ' 4731: {0x0480, 0x0481}, // 'Ҁ' => 'ҁ' 4704: {0x048A, 0x048B}, // 'Ҋ' => 'ҋ' 4701: {0x048A, 0x048B}, // 'Ҋ' => 'ҋ' 4698: {0x048C, 0x048D}, // 'Ҍ' => 'ҍ' 4695: {0x048C, 0x048D}, // 'Ҍ' => 'ҍ' 4692: {0x048E, 0x048F}, // 'Ҏ' => 'ҏ' 4689: {0x048E, 0x048F}, // 'Ҏ' => 'ҏ' 4686: {0x0490, 0x0491}, // 'Ґ' => 'ґ' 4683: {0x0490, 0x0491}, // 'Ґ' => 'ґ' 4680: {0x0492, 0x0493}, // 'Ғ' => 'ғ' 4677: {0x0492, 0x0493}, // 'Ғ' => 'ғ' 4674: {0x0494, 0x0495}, // 'Ҕ' => 'ҕ' 4671: {0x0494, 0x0495}, // 'Ҕ' => 'ҕ' 4668: {0x0496, 0x0497}, // 'Җ' => 'җ' 4665: {0x0496, 0x0497}, // 'Җ' => 'җ' 4662: {0x0498, 0x0499}, // 'Ҙ' => 'ҙ' 4659: {0x0498, 0x0499}, // 'Ҙ' => 'ҙ' 4656: {0x049A, 0x049B}, // 'Қ' => 'қ' 4653: {0x049A, 0x049B}, // 'Қ' => 'қ' 4650: {0x049C, 0x049D}, // 'Ҝ' => 'ҝ' 4647: {0x049C, 0x049D}, // 'Ҝ' => 'ҝ' 4644: {0x049E, 0x049F}, // 'Ҟ' => 'ҟ' 4641: {0x049E, 0x049F}, // 'Ҟ' => 'ҟ' 4638: {0x04A0, 0x04A1}, // 'Ҡ' => 'ҡ' 4635: {0x04A0, 0x04A1}, // 'Ҡ' => 'ҡ' 4632: {0x04A2, 0x04A3}, // 'Ң' => 'ң' 4629: {0x04A2, 0x04A3}, // 'Ң' => 'ң' 4626: {0x04A4, 0x04A5}, // 'Ҥ' => 'ҥ' 4623: {0x04A4, 0x04A5}, // 'Ҥ' => 'ҥ' 4620: {0x04A6, 0x04A7}, // 'Ҧ' => 'ҧ' 4617: {0x04A6, 0x04A7}, // 'Ҧ' => 'ҧ' 4614: {0x04A8, 0x04A9}, // 'Ҩ' => 'ҩ' 4611: {0x04A8, 0x04A9}, // 'Ҩ' => 'ҩ' 4608: {0x04AA, 0x04AB}, // 'Ҫ' => 'ҫ' 4605: {0x04AA, 0x04AB}, // 'Ҫ' => 'ҫ' 4602: {0x04AC, 0x04AD}, // 'Ҭ' => 'ҭ' 4599: {0x04AC, 0x04AD}, // 'Ҭ' => 'ҭ' 4596: {0x04AE, 0x04AF}, // 'Ү' => 'ү' 4593: {0x04AE, 0x04AF}, // 'Ү' => 'ү' 4590: {0x04B0, 0x04B1}, // 'Ұ' => 'ұ' 4587: {0x04B0, 0x04B1}, // 'Ұ' => 'ұ' 4584: {0x04B2, 0x04B3}, // 'Ҳ' => 'ҳ' 4581: {0x04B2, 0x04B3}, // 'Ҳ' => 'ҳ' 4578: {0x04B4, 0x04B5}, // 'Ҵ' => 'ҵ' 4575: {0x04B4, 0x04B5}, // 'Ҵ' => 'ҵ' 4572: {0x04B6, 0x04B7}, // 'Ҷ' => 'ҷ' 4569: {0x04B6, 0x04B7}, // 'Ҷ' => 'ҷ' 4566: {0x04B8, 0x04B9}, // 'Ҹ' => 'ҹ' 4563: {0x04B8, 0x04B9}, // 'Ҹ' => 'ҹ' 4560: {0x04BA, 0x04BB}, // 'Һ' => 'һ' 4557: {0x04BA, 0x04BB}, // 'Һ' => 'һ' 4554: {0x04BC, 0x04BD}, // 'Ҽ' => 'ҽ' 4551: {0x04BC, 0x04BD}, // 'Ҽ' => 'ҽ' 4548: {0x04BE, 0x04BF}, // 'Ҿ' => 'ҿ' 4545: {0x04BE, 0x04BF}, // 'Ҿ' => 'ҿ' 4542: {0x04C0, 0x04CF}, // 'Ӏ' => 'ӏ' 4539: {0x04C1, 0x04C2}, // 'Ӂ' => 'ӂ' 4536: {0x04C1, 0x04C2}, // 'Ӂ' => 'ӂ' 4533: {0x04C3, 0x04C4}, // 'Ӄ' => 'ӄ' 4530: {0x04C3, 0x04C4}, // 'Ӄ' => 'ӄ' 4527: {0x04C5, 0x04C6}, // 'Ӆ' => 'ӆ' 4524: {0x04C5, 0x04C6}, // 'Ӆ' => 'ӆ' 4521: {0x04C7, 0x04C8}, // 'Ӈ' => 'ӈ' 4518: {0x04C7, 0x04C8}, // 'Ӈ' => 'ӈ' 4515: {0x04C9, 0x04CA}, // 'Ӊ' => 'ӊ' 4512: {0x04C9, 0x04CA}, // 'Ӊ' => 'ӊ' 4509: {0x04CB, 0x04CC}, // 'Ӌ' => 'ӌ' 4506: {0x04CB, 0x04CC}, // 'Ӌ' => 'ӌ' 4503: {0x04CD, 0x04CE}, // 'Ӎ' => 'ӎ' 4500: {0x04CD, 0x04CE}, // 'Ӎ' => 'ӎ' 4497: {0x04C0, 0x04CF}, // 'Ӏ' => 'ӏ' 4494: {0x04D0, 0x04D1}, // 'Ӑ' => 'ӑ' 4491: {0x04D0, 0x04D1}, // 'Ӑ' => 'ӑ' 4488: {0x04D2, 0x04D3}, // 'Ӓ' => 'ӓ' 4485: {0x04D2, 0x04D3}, // 'Ӓ' => 'ӓ' 4482: {0x04D4, 0x04D5}, // 'Ӕ' => 'ӕ' 4479: {0x04D4, 0x04D5}, // 'Ӕ' => 'ӕ' 4476: {0x04D6, 0x04D7}, // 'Ӗ' => 'ӗ' 4473: {0x04D6, 0x04D7}, // 'Ӗ' => 'ӗ' 4470: {0x04D8, 0x04D9}, // 'Ә' => 'ә' 4467: {0x04D8, 0x04D9}, // 'Ә' => 'ә' 4464: {0x04DA, 0x04DB}, // 'Ӛ' => 'ӛ' 4461: {0x04DA, 0x04DB}, // 'Ӛ' => 'ӛ' 4458: {0x04DC, 0x04DD}, // 'Ӝ' => 'ӝ' 4455: {0x04DC, 0x04DD}, // 'Ӝ' => 'ӝ' 4452: {0x04DE, 0x04DF}, // 'Ӟ' => 'ӟ' 4449: {0x04DE, 0x04DF}, // 'Ӟ' => 'ӟ' 4446: {0x04E0, 0x04E1}, // 'Ӡ' => 'ӡ' 4443: {0x04E0, 0x04E1}, // 'Ӡ' => 'ӡ' 4440: {0x04E2, 0x04E3}, // 'Ӣ' => 'ӣ' 4437: {0x04E2, 0x04E3}, // 'Ӣ' => 'ӣ' 4434: {0x04E4, 0x04E5}, // 'Ӥ' => 'ӥ' 4431: {0x04E4, 0x04E5}, // 'Ӥ' => 'ӥ' 4428: {0x04E6, 0x04E7}, // 'Ӧ' => 'ӧ' 4425: {0x04E6, 0x04E7}, // 'Ӧ' => 'ӧ' 4422: {0x04E8, 0x04E9}, // 'Ө' => 'ө' 4419: {0x04E8, 0x04E9}, // 'Ө' => 'ө' 4416: {0x04EA, 0x04EB}, // 'Ӫ' => 'ӫ' 4413: {0x04EA, 0x04EB}, // 'Ӫ' => 'ӫ' 4410: {0x04EC, 0x04ED}, // 'Ӭ' => 'ӭ' 4407: {0x04EC, 0x04ED}, // 'Ӭ' => 'ӭ' 4404: {0x04EE, 0x04EF}, // 'Ӯ' => 'ӯ' 4401: {0x04EE, 0x04EF}, // 'Ӯ' => 'ӯ' 4398: {0x04F0, 0x04F1}, // 'Ӱ' => 'ӱ' 4395: {0x04F0, 0x04F1}, // 'Ӱ' => 'ӱ' 4392: {0x04F2, 0x04F3}, // 'Ӳ' => 'ӳ' 4389: {0x04F2, 0x04F3}, // 'Ӳ' => 'ӳ' 4386: {0x04F4, 0x04F5}, // 'Ӵ' => 'ӵ' 4383: {0x04F4, 0x04F5}, // 'Ӵ' => 'ӵ' 4380: {0x04F6, 0x04F7}, // 'Ӷ' => 'ӷ' 4377: {0x04F6, 0x04F7}, // 'Ӷ' => 'ӷ' 4374: {0x04F8, 0x04F9}, // 'Ӹ' => 'ӹ' 4371: {0x04F8, 0x04F9}, // 'Ӹ' => 'ӹ' 4368: {0x04FA, 0x04FB}, // 'Ӻ' => 'ӻ' 4365: {0x04FA, 0x04FB}, // 'Ӻ' => 'ӻ' 4362: {0x04FC, 0x04FD}, // 'Ӽ' => 'ӽ' 4359: {0x04FC, 0x04FD}, // 'Ӽ' => 'ӽ' 4356: {0x04FE, 0x04FF}, // 'Ӿ' => 'ӿ' 4353: {0x04FE, 0x04FF}, // 'Ӿ' => 'ӿ' 4350: {0x0500, 0x0501}, // 'Ԁ' => 'ԁ' 4347: {0x0500, 0x0501}, // 'Ԁ' => 'ԁ' 4344: {0x0502, 0x0503}, // 'Ԃ' => 'ԃ' 4341: {0x0502, 0x0503}, // 'Ԃ' => 'ԃ' 4338: {0x0504, 0x0505}, // 'Ԅ' => 'ԅ' 4335: {0x0504, 0x0505}, // 'Ԅ' => 'ԅ' 4332: {0x0506, 0x0507}, // 'Ԇ' => 'ԇ' 4329: {0x0506, 0x0507}, // 'Ԇ' => 'ԇ' 4326: {0x0508, 0x0509}, // 'Ԉ' => 'ԉ' 4323: {0x0508, 0x0509}, // 'Ԉ' => 'ԉ' 4320: {0x050A, 0x050B}, // 'Ԋ' => 'ԋ' 4317: {0x050A, 0x050B}, // 'Ԋ' => 'ԋ' 4314: {0x050C, 0x050D}, // 'Ԍ' => 'ԍ' 4311: {0x050C, 0x050D}, // 'Ԍ' => 'ԍ' 4308: {0x050E, 0x050F}, // 'Ԏ' => 'ԏ' 4305: {0x050E, 0x050F}, // 'Ԏ' => 'ԏ' 4302: {0x0510, 0x0511}, // 'Ԑ' => 'ԑ' 4299: {0x0510, 0x0511}, // 'Ԑ' => 'ԑ' 4296: {0x0512, 0x0513}, // 'Ԓ' => 'ԓ' 4293: {0x0512, 0x0513}, // 'Ԓ' => 'ԓ' 4290: {0x0514, 0x0515}, // 'Ԕ' => 'ԕ' 4287: {0x0514, 0x0515}, // 'Ԕ' => 'ԕ' 4284: {0x0516, 0x0517}, // 'Ԗ' => 'ԗ' 4281: {0x0516, 0x0517}, // 'Ԗ' => 'ԗ' 4278: {0x0518, 0x0519}, // 'Ԙ' => 'ԙ' 4275: {0x0518, 0x0519}, // 'Ԙ' => 'ԙ' 4272: {0x051A, 0x051B}, // 'Ԛ' => 'ԛ' 4269: {0x051A, 0x051B}, // 'Ԛ' => 'ԛ' 4266: {0x051C, 0x051D}, // 'Ԝ' => 'ԝ' 4263: {0x051C, 0x051D}, // 'Ԝ' => 'ԝ' 4260: {0x051E, 0x051F}, // 'Ԟ' => 'ԟ' 4257: {0x051E, 0x051F}, // 'Ԟ' => 'ԟ' 4254: {0x0520, 0x0521}, // 'Ԡ' => 'ԡ' 4251: {0x0520, 0x0521}, // 'Ԡ' => 'ԡ' 4248: {0x0522, 0x0523}, // 'Ԣ' => 'ԣ' 4245: {0x0522, 0x0523}, // 'Ԣ' => 'ԣ' 4242: {0x0524, 0x0525}, // 'Ԥ' => 'ԥ' 4239: {0x0524, 0x0525}, // 'Ԥ' => 'ԥ' 4236: {0x0526, 0x0527}, // 'Ԧ' => 'ԧ' 4233: {0x0526, 0x0527}, // 'Ԧ' => 'ԧ' 4230: {0x0528, 0x0529}, // 'Ԩ' => 'ԩ' 4227: {0x0528, 0x0529}, // 'Ԩ' => 'ԩ' 4224: {0x052A, 0x052B}, // 'Ԫ' => 'ԫ' 4221: {0x052A, 0x052B}, // 'Ԫ' => 'ԫ' 4218: {0x052C, 0x052D}, // 'Ԭ' => 'ԭ' 4215: {0x052C, 0x052D}, // 'Ԭ' => 'ԭ' 4212: {0x052E, 0x052F}, // 'Ԯ' => 'ԯ' 4209: {0x052E, 0x052F}, // 'Ԯ' => 'ԯ' 4203: {0x0531, 0x0561}, // 'Ա' => 'ա' 4200: {0x0532, 0x0562}, // 'Բ' => 'բ' 4197: {0x0533, 0x0563}, // 'Գ' => 'գ' 4194: {0x0534, 0x0564}, // 'Դ' => 'դ' 4191: {0x0535, 0x0565}, // 'Ե' => 'ե' 4188: {0x0536, 0x0566}, // 'Զ' => 'զ' 4185: {0x0537, 0x0567}, // 'Է' => 'է' 4182: {0x0538, 0x0568}, // 'Ը' => 'ը' 4179: {0x0539, 0x0569}, // 'Թ' => 'թ' 4176: {0x053A, 0x056A}, // 'Ժ' => 'ժ' 4173: {0x053B, 0x056B}, // 'Ի' => 'ի' 4170: {0x053C, 0x056C}, // 'Լ' => 'լ' 4167: {0x053D, 0x056D}, // 'Խ' => 'խ' 4164: {0x053E, 0x056E}, // 'Ծ' => 'ծ' 4161: {0x053F, 0x056F}, // 'Կ' => 'կ' 4158: {0x0540, 0x0570}, // 'Հ' => 'հ' 4155: {0x0541, 0x0571}, // 'Ձ' => 'ձ' 4152: {0x0542, 0x0572}, // 'Ղ' => 'ղ' 4149: {0x0543, 0x0573}, // 'Ճ' => 'ճ' 4146: {0x0544, 0x0574}, // 'Մ' => 'մ' 4143: {0x0545, 0x0575}, // 'Յ' => 'յ' 4140: {0x0546, 0x0576}, // 'Ն' => 'ն' 4137: {0x0547, 0x0577}, // 'Շ' => 'շ' 4134: {0x0548, 0x0578}, // 'Ո' => 'ո' 4131: {0x0549, 0x0579}, // 'Չ' => 'չ' 4128: {0x054A, 0x057A}, // 'Պ' => 'պ' 4125: {0x054B, 0x057B}, // 'Ջ' => 'ջ' 4122: {0x054C, 0x057C}, // 'Ռ' => 'ռ' 4119: {0x054D, 0x057D}, // 'Ս' => 'ս' 4116: {0x054E, 0x057E}, // 'Վ' => 'վ' 4113: {0x054F, 0x057F}, // 'Տ' => 'տ' 4110: {0x0550, 0x0580}, // 'Ր' => 'ր' 4107: {0x0551, 0x0581}, // 'Ց' => 'ց' 4104: {0x0552, 0x0582}, // 'Ւ' => 'ւ' 4101: {0x0553, 0x0583}, // 'Փ' => 'փ' 4098: {0x0554, 0x0584}, // 'Ք' => 'ք' 4095: {0x0555, 0x0585}, // 'Օ' => 'օ' 4092: {0x0556, 0x0586}, // 'Ֆ' => 'ֆ' 4059: {0x0531, 0x0561}, // 'Ա' => 'ա' 4056: {0x0532, 0x0562}, // 'Բ' => 'բ' 4053: {0x0533, 0x0563}, // 'Գ' => 'գ' 4050: {0x0534, 0x0564}, // 'Դ' => 'դ' 4047: {0x0535, 0x0565}, // 'Ե' => 'ե' 4044: {0x0536, 0x0566}, // 'Զ' => 'զ' 4041: {0x0537, 0x0567}, // 'Է' => 'է' 4038: {0x0538, 0x0568}, // 'Ը' => 'ը' 4035: {0x0539, 0x0569}, // 'Թ' => 'թ' 4032: {0x053A, 0x056A}, // 'Ժ' => 'ժ' 4029: {0x053B, 0x056B}, // 'Ի' => 'ի' 4026: {0x053C, 0x056C}, // 'Լ' => 'լ' 4023: {0x053D, 0x056D}, // 'Խ' => 'խ' 4020: {0x053E, 0x056E}, // 'Ծ' => 'ծ' 4017: {0x053F, 0x056F}, // 'Կ' => 'կ' 4014: {0x0540, 0x0570}, // 'Հ' => 'հ' 4011: {0x0541, 0x0571}, // 'Ձ' => 'ձ' 4008: {0x0542, 0x0572}, // 'Ղ' => 'ղ' 4005: {0x0543, 0x0573}, // 'Ճ' => 'ճ' 4002: {0x0544, 0x0574}, // 'Մ' => 'մ' 3999: {0x0545, 0x0575}, // 'Յ' => 'յ' 3996: {0x0546, 0x0576}, // 'Ն' => 'ն' 3993: {0x0547, 0x0577}, // 'Շ' => 'շ' 3990: {0x0548, 0x0578}, // 'Ո' => 'ո' 3987: {0x0549, 0x0579}, // 'Չ' => 'չ' 3984: {0x054A, 0x057A}, // 'Պ' => 'պ' 3981: {0x054B, 0x057B}, // 'Ջ' => 'ջ' 3978: {0x054C, 0x057C}, // 'Ռ' => 'ռ' 3975: {0x054D, 0x057D}, // 'Ս' => 'ս' 3972: {0x054E, 0x057E}, // 'Վ' => 'վ' 3969: {0x054F, 0x057F}, // 'Տ' => 'տ' 3966: {0x0550, 0x0580}, // 'Ր' => 'ր' 3963: {0x0551, 0x0581}, // 'Ց' => 'ց' 3960: {0x0552, 0x0582}, // 'Ւ' => 'ւ' 3957: {0x0553, 0x0583}, // 'Փ' => 'փ' 3954: {0x0554, 0x0584}, // 'Ք' => 'ք' 3951: {0x0555, 0x0585}, // 'Օ' => 'օ' 3948: {0x0556, 0x0586}, // 'Ֆ' => 'ֆ' 3610: {0x10A0, 0x2D00}, // 'Ⴀ' => 'ⴀ' 3607: {0x10A1, 0x2D01}, // 'Ⴁ' => 'ⴁ' 3604: {0x10A2, 0x2D02}, // 'Ⴂ' => 'ⴂ' 3601: {0x10A3, 0x2D03}, // 'Ⴃ' => 'ⴃ' 3598: {0x10A4, 0x2D04}, // 'Ⴄ' => 'ⴄ' 3595: {0x10A5, 0x2D05}, // 'Ⴅ' => 'ⴅ' 3592: {0x10A6, 0x2D06}, // 'Ⴆ' => 'ⴆ' 3589: {0x10A7, 0x2D07}, // 'Ⴇ' => 'ⴇ' 3586: {0x10A8, 0x2D08}, // 'Ⴈ' => 'ⴈ' 3583: {0x10A9, 0x2D09}, // 'Ⴉ' => 'ⴉ' 3580: {0x10AA, 0x2D0A}, // 'Ⴊ' => 'ⴊ' 3577: {0x10AB, 0x2D0B}, // 'Ⴋ' => 'ⴋ' 3574: {0x10AC, 0x2D0C}, // 'Ⴌ' => 'ⴌ' 3571: {0x10AD, 0x2D0D}, // 'Ⴍ' => 'ⴍ' 3568: {0x10AE, 0x2D0E}, // 'Ⴎ' => 'ⴎ' 3565: {0x10AF, 0x2D0F}, // 'Ⴏ' => 'ⴏ' 3562: {0x10B0, 0x2D10}, // 'Ⴐ' => 'ⴐ' 3559: {0x10B1, 0x2D11}, // 'Ⴑ' => 'ⴑ' 3556: {0x10B2, 0x2D12}, // 'Ⴒ' => 'ⴒ' 3553: {0x10B3, 0x2D13}, // 'Ⴓ' => 'ⴓ' 3550: {0x10B4, 0x2D14}, // 'Ⴔ' => 'ⴔ' 3547: {0x10B5, 0x2D15}, // 'Ⴕ' => 'ⴕ' 3544: {0x10B6, 0x2D16}, // 'Ⴖ' => 'ⴖ' 3541: {0x10B7, 0x2D17}, // 'Ⴗ' => 'ⴗ' 3538: {0x10B8, 0x2D18}, // 'Ⴘ' => 'ⴘ' 3535: {0x10B9, 0x2D19}, // 'Ⴙ' => 'ⴙ' 3532: {0x10BA, 0x2D1A}, // 'Ⴚ' => 'ⴚ' 3529: {0x10BB, 0x2D1B}, // 'Ⴛ' => 'ⴛ' 3526: {0x10BC, 0x2D1C}, // 'Ⴜ' => 'ⴜ' 3523: {0x10BD, 0x2D1D}, // 'Ⴝ' => 'ⴝ' 3520: {0x10BE, 0x2D1E}, // 'Ⴞ' => 'ⴞ' 3517: {0x10BF, 0x2D1F}, // 'Ⴟ' => 'ⴟ' 3514: {0x10C0, 0x2D20}, // 'Ⴠ' => 'ⴠ' 3511: {0x10C1, 0x2D21}, // 'Ⴡ' => 'ⴡ' 3508: {0x10C2, 0x2D22}, // 'Ⴢ' => 'ⴢ' 3505: {0x10C3, 0x2D23}, // 'Ⴣ' => 'ⴣ' 3502: {0x10C4, 0x2D24}, // 'Ⴤ' => 'ⴤ' 3499: {0x10C5, 0x2D25}, // 'Ⴥ' => 'ⴥ' 3493: {0x10C7, 0x2D27}, // 'Ⴧ' => 'ⴧ' 3475: {0x10CD, 0x2D2D}, // 'Ⴭ' => 'ⴭ' 3466: {0x1C90, 0x10D0}, // 'Ა' => 'ა' 3463: {0x1C91, 0x10D1}, // 'Ბ' => 'ბ' 3460: {0x1C92, 0x10D2}, // 'Გ' => 'გ' 3457: {0x1C93, 0x10D3}, // 'Დ' => 'დ' 3454: {0x1C94, 0x10D4}, // 'Ე' => 'ე' 3451: {0x1C95, 0x10D5}, // 'Ვ' => 'ვ' 3448: {0x1C96, 0x10D6}, // 'Ზ' => 'ზ' 3445: {0x1C97, 0x10D7}, // 'Თ' => 'თ' 3442: {0x1C98, 0x10D8}, // 'Ი' => 'ი' 3439: {0x1C99, 0x10D9}, // 'Კ' => 'კ' 3436: {0x1C9A, 0x10DA}, // 'Ლ' => 'ლ' 3433: {0x1C9B, 0x10DB}, // 'Მ' => 'მ' 3430: {0x1C9C, 0x10DC}, // 'Ნ' => 'ნ' 3427: {0x1C9D, 0x10DD}, // 'Ო' => 'ო' 3424: {0x1C9E, 0x10DE}, // 'Პ' => 'პ' 3421: {0x1C9F, 0x10DF}, // 'Ჟ' => 'ჟ' 3418: {0x1CA0, 0x10E0}, // 'Რ' => 'რ' 3415: {0x1CA1, 0x10E1}, // 'Ს' => 'ს' 3412: {0x1CA2, 0x10E2}, // 'Ტ' => 'ტ' 3409: {0x1CA3, 0x10E3}, // 'Უ' => 'უ' 3406: {0x1CA4, 0x10E4}, // 'Ფ' => 'ფ' 3403: {0x1CA5, 0x10E5}, // 'Ქ' => 'ქ' 3400: {0x1CA6, 0x10E6}, // 'Ღ' => 'ღ' 3397: {0x1CA7, 0x10E7}, // 'Ყ' => 'ყ' 3394: {0x1CA8, 0x10E8}, // 'Შ' => 'შ' 3391: {0x1CA9, 0x10E9}, // 'Ჩ' => 'ჩ' 3388: {0x1CAA, 0x10EA}, // 'Ც' => 'ც' 3385: {0x1CAB, 0x10EB}, // 'Ძ' => 'ძ' 3382: {0x1CAC, 0x10EC}, // 'Წ' => 'წ' 3379: {0x1CAD, 0x10ED}, // 'Ჭ' => 'ჭ' 3376: {0x1CAE, 0x10EE}, // 'Ხ' => 'ხ' 3373: {0x1CAF, 0x10EF}, // 'Ჯ' => 'ჯ' 3370: {0x1CB0, 0x10F0}, // 'Ჰ' => 'ჰ' 3367: {0x1CB1, 0x10F1}, // 'Ჱ' => 'ჱ' 3364: {0x1CB2, 0x10F2}, // 'Ჲ' => 'ჲ' 3361: {0x1CB3, 0x10F3}, // 'Ჳ' => 'ჳ' 3358: {0x1CB4, 0x10F4}, // 'Ჴ' => 'ჴ' 3355: {0x1CB5, 0x10F5}, // 'Ჵ' => 'ჵ' 3352: {0x1CB6, 0x10F6}, // 'Ჶ' => 'ჶ' 3349: {0x1CB7, 0x10F7}, // 'Ჷ' => 'ჷ' 3346: {0x1CB8, 0x10F8}, // 'Ჸ' => 'ჸ' 3343: {0x1CB9, 0x10F9}, // 'Ჹ' => 'ჹ' 3340: {0x1CBA, 0x10FA}, // 'Ჺ' => 'ჺ' 3331: {0x1CBD, 0x10FD}, // 'Ჽ' => 'ჽ' 3328: {0x1CBE, 0x10FE}, // 'Ჾ' => 'ჾ' 3325: {0x1CBF, 0x10FF}, // 'Ჿ' => 'ჿ' 1306: {0x13A0, 0xAB70}, // 'Ꭰ' => 'ꭰ' 1303: {0x13A1, 0xAB71}, // 'Ꭱ' => 'ꭱ' 1300: {0x13A2, 0xAB72}, // 'Ꭲ' => 'ꭲ' 1297: {0x13A3, 0xAB73}, // 'Ꭳ' => 'ꭳ' 1294: {0x13A4, 0xAB74}, // 'Ꭴ' => 'ꭴ' 1291: {0x13A5, 0xAB75}, // 'Ꭵ' => 'ꭵ' 1288: {0x13A6, 0xAB76}, // 'Ꭶ' => 'ꭶ' 1285: {0x13A7, 0xAB77}, // 'Ꭷ' => 'ꭷ' 1282: {0x13A8, 0xAB78}, // 'Ꭸ' => 'ꭸ' 1279: {0x13A9, 0xAB79}, // 'Ꭹ' => 'ꭹ' 1276: {0x13AA, 0xAB7A}, // 'Ꭺ' => 'ꭺ' 1273: {0x13AB, 0xAB7B}, // 'Ꭻ' => 'ꭻ' 1270: {0x13AC, 0xAB7C}, // 'Ꭼ' => 'ꭼ' 1267: {0x13AD, 0xAB7D}, // 'Ꭽ' => 'ꭽ' 1264: {0x13AE, 0xAB7E}, // 'Ꭾ' => 'ꭾ' 1261: {0x13AF, 0xAB7F}, // 'Ꭿ' => 'ꭿ' 1258: {0x13B0, 0xAB80}, // 'Ꮀ' => 'ꮀ' 1255: {0x13B1, 0xAB81}, // 'Ꮁ' => 'ꮁ' 1252: {0x13B2, 0xAB82}, // 'Ꮂ' => 'ꮂ' 1249: {0x13B3, 0xAB83}, // 'Ꮃ' => 'ꮃ' 1246: {0x13B4, 0xAB84}, // 'Ꮄ' => 'ꮄ' 1243: {0x13B5, 0xAB85}, // 'Ꮅ' => 'ꮅ' 1240: {0x13B6, 0xAB86}, // 'Ꮆ' => 'ꮆ' 1237: {0x13B7, 0xAB87}, // 'Ꮇ' => 'ꮇ' 1234: {0x13B8, 0xAB88}, // 'Ꮈ' => 'ꮈ' 1231: {0x13B9, 0xAB89}, // 'Ꮉ' => 'ꮉ' 1228: {0x13BA, 0xAB8A}, // 'Ꮊ' => 'ꮊ' 1225: {0x13BB, 0xAB8B}, // 'Ꮋ' => 'ꮋ' 1222: {0x13BC, 0xAB8C}, // 'Ꮌ' => 'ꮌ' 1219: {0x13BD, 0xAB8D}, // 'Ꮍ' => 'ꮍ' 1216: {0x13BE, 0xAB8E}, // 'Ꮎ' => 'ꮎ' 1213: {0x13BF, 0xAB8F}, // 'Ꮏ' => 'ꮏ' 1210: {0x13C0, 0xAB90}, // 'Ꮐ' => 'ꮐ' 1207: {0x13C1, 0xAB91}, // 'Ꮑ' => 'ꮑ' 1204: {0x13C2, 0xAB92}, // 'Ꮒ' => 'ꮒ' 1201: {0x13C3, 0xAB93}, // 'Ꮓ' => 'ꮓ' 1198: {0x13C4, 0xAB94}, // 'Ꮔ' => 'ꮔ' 1195: {0x13C5, 0xAB95}, // 'Ꮕ' => 'ꮕ' 1192: {0x13C6, 0xAB96}, // 'Ꮖ' => 'ꮖ' 1189: {0x13C7, 0xAB97}, // 'Ꮗ' => 'ꮗ' 1186: {0x13C8, 0xAB98}, // 'Ꮘ' => 'ꮘ' 1183: {0x13C9, 0xAB99}, // 'Ꮙ' => 'ꮙ' 1180: {0x13CA, 0xAB9A}, // 'Ꮚ' => 'ꮚ' 1177: {0x13CB, 0xAB9B}, // 'Ꮛ' => 'ꮛ' 1174: {0x13CC, 0xAB9C}, // 'Ꮜ' => 'ꮜ' 1171: {0x13CD, 0xAB9D}, // 'Ꮝ' => 'ꮝ' 1168: {0x13CE, 0xAB9E}, // 'Ꮞ' => 'ꮞ' 1165: {0x13CF, 0xAB9F}, // 'Ꮟ' => 'ꮟ' 1162: {0x13D0, 0xABA0}, // 'Ꮠ' => 'ꮠ' 1159: {0x13D1, 0xABA1}, // 'Ꮡ' => 'ꮡ' 1156: {0x13D2, 0xABA2}, // 'Ꮢ' => 'ꮢ' 1153: {0x13D3, 0xABA3}, // 'Ꮣ' => 'ꮣ' 1150: {0x13D4, 0xABA4}, // 'Ꮤ' => 'ꮤ' 1147: {0x13D5, 0xABA5}, // 'Ꮥ' => 'ꮥ' 1144: {0x13D6, 0xABA6}, // 'Ꮦ' => 'ꮦ' 1141: {0x13D7, 0xABA7}, // 'Ꮧ' => 'ꮧ' 1138: {0x13D8, 0xABA8}, // 'Ꮨ' => 'ꮨ' 1135: {0x13D9, 0xABA9}, // 'Ꮩ' => 'ꮩ' 1131: {0x13DA, 0xABAA}, // 'Ꮪ' => 'ꮪ' 1128: {0x13DB, 0xABAB}, // 'Ꮫ' => 'ꮫ' 1125: {0x13DC, 0xABAC}, // 'Ꮬ' => 'ꮬ' 1122: {0x13DD, 0xABAD}, // 'Ꮭ' => 'ꮭ' 1119: {0x13DE, 0xABAE}, // 'Ꮮ' => 'ꮮ' 1116: {0x13DF, 0xABAF}, // 'Ꮯ' => 'ꮯ' 1113: {0x13E0, 0xABB0}, // 'Ꮰ' => 'ꮰ' 1110: {0x13E1, 0xABB1}, // 'Ꮱ' => 'ꮱ' 1107: {0x13E2, 0xABB2}, // 'Ꮲ' => 'ꮲ' 1104: {0x13E3, 0xABB3}, // 'Ꮳ' => 'ꮳ' 1101: {0x13E4, 0xABB4}, // 'Ꮴ' => 'ꮴ' 1098: {0x13E5, 0xABB5}, // 'Ꮵ' => 'ꮵ' 1095: {0x13E6, 0xABB6}, // 'Ꮶ' => 'ꮶ' 1092: {0x13E7, 0xABB7}, // 'Ꮷ' => 'ꮷ' 1089: {0x13E8, 0xABB8}, // 'Ꮸ' => 'ꮸ' 1086: {0x13E9, 0xABB9}, // 'Ꮹ' => 'ꮹ' 1083: {0x13EA, 0xABBA}, // 'Ꮺ' => 'ꮺ' 1080: {0x13EB, 0xABBB}, // 'Ꮻ' => 'ꮻ' 1077: {0x13EC, 0xABBC}, // 'Ꮼ' => 'ꮼ' 1074: {0x13ED, 0xABBD}, // 'Ꮽ' => 'ꮽ' 1071: {0x13EE, 0xABBE}, // 'Ꮾ' => 'ꮾ' 1068: {0x13EF, 0xABBF}, // 'Ꮿ' => 'ꮿ' 1065: {0x13F0, 0x13F8}, // 'Ᏸ' => 'ᏸ' 1062: {0x13F1, 0x13F9}, // 'Ᏹ' => 'ᏹ' 1059: {0x13F2, 0x13FA}, // 'Ᏺ' => 'ᏺ' 1056: {0x13F3, 0x13FB}, // 'Ᏻ' => 'ᏻ' 1053: {0x13F4, 0x13FC}, // 'Ᏼ' => 'ᏼ' 1050: {0x13F5, 0x13FD}, // 'Ᏽ' => 'ᏽ' 1041: {0x13F0, 0x13F8}, // 'Ᏸ' => 'ᏸ' 1038: {0x13F1, 0x13F9}, // 'Ᏹ' => 'ᏹ' 1035: {0x13F2, 0x13FA}, // 'Ᏺ' => 'ᏺ' 1032: {0x13F3, 0x13FB}, // 'Ᏻ' => 'ᏻ' 1029: {0x13F4, 0x13FC}, // 'Ᏼ' => 'ᏼ' 1026: {0x13F5, 0x13FD}, // 'Ᏽ' => 'ᏽ' 2679: {0x0412, 0x1C80}, // 'В' => 'ᲀ' 2676: {0x0414, 0x1C81}, // 'Д' => 'ᲁ' 2673: {0x041E, 0x1C82}, // 'О' => 'ᲂ' 2670: {0x0421, 0x1C83}, // 'С' => 'ᲃ' 2667: {0x0422, 0x1C84}, // 'Т' => 'ᲄ' 2664: {0x0422, 0x1C85}, // 'Т' => 'ᲅ' 2661: {0x042A, 0x1C86}, // 'Ъ' => 'ᲆ' 2658: {0x0462, 0x1C87}, // 'Ѣ' => 'ᲇ' 2655: {0xA64A, 0x1C88}, // 'Ꙋ' => 'ᲈ' 2631: {0x1C90, 0x10D0}, // 'Ა' => 'ა' 2628: {0x1C91, 0x10D1}, // 'Ბ' => 'ბ' 2625: {0x1C92, 0x10D2}, // 'Გ' => 'გ' 2622: {0x1C93, 0x10D3}, // 'Დ' => 'დ' 2619: {0x1C94, 0x10D4}, // 'Ე' => 'ე' 2616: {0x1C95, 0x10D5}, // 'Ვ' => 'ვ' 2613: {0x1C96, 0x10D6}, // 'Ზ' => 'ზ' 2610: {0x1C97, 0x10D7}, // 'Თ' => 'თ' 2607: {0x1C98, 0x10D8}, // 'Ი' => 'ი' 2604: {0x1C99, 0x10D9}, // 'Კ' => 'კ' 2601: {0x1C9A, 0x10DA}, // 'Ლ' => 'ლ' 2598: {0x1C9B, 0x10DB}, // 'Მ' => 'მ' 2595: {0x1C9C, 0x10DC}, // 'Ნ' => 'ნ' 2592: {0x1C9D, 0x10DD}, // 'Ო' => 'ო' 2589: {0x1C9E, 0x10DE}, // 'Პ' => 'პ' 2586: {0x1C9F, 0x10DF}, // 'Ჟ' => 'ჟ' 2583: {0x1CA0, 0x10E0}, // 'Რ' => 'რ' 2580: {0x1CA1, 0x10E1}, // 'Ს' => 'ს' 2577: {0x1CA2, 0x10E2}, // 'Ტ' => 'ტ' 2574: {0x1CA3, 0x10E3}, // 'Უ' => 'უ' 2571: {0x1CA4, 0x10E4}, // 'Ფ' => 'ფ' 2568: {0x1CA5, 0x10E5}, // 'Ქ' => 'ქ' 2565: {0x1CA6, 0x10E6}, // 'Ღ' => 'ღ' 2562: {0x1CA7, 0x10E7}, // 'Ყ' => 'ყ' 2559: {0x1CA8, 0x10E8}, // 'Შ' => 'შ' 2556: {0x1CA9, 0x10E9}, // 'Ჩ' => 'ჩ' 2553: {0x1CAA, 0x10EA}, // 'Ც' => 'ც' 2550: {0x1CAB, 0x10EB}, // 'Ძ' => 'ძ' 2547: {0x1CAC, 0x10EC}, // 'Წ' => 'წ' 2544: {0x1CAD, 0x10ED}, // 'Ჭ' => 'ჭ' 2541: {0x1CAE, 0x10EE}, // 'Ხ' => 'ხ' 2538: {0x1CAF, 0x10EF}, // 'Ჯ' => 'ჯ' 2535: {0x1CB0, 0x10F0}, // 'Ჰ' => 'ჰ' 2532: {0x1CB1, 0x10F1}, // 'Ჱ' => 'ჱ' 2529: {0x1CB2, 0x10F2}, // 'Ჲ' => 'ჲ' 2526: {0x1CB3, 0x10F3}, // 'Ჳ' => 'ჳ' 2523: {0x1CB4, 0x10F4}, // 'Ჴ' => 'ჴ' 2520: {0x1CB5, 0x10F5}, // 'Ჵ' => 'ჵ' 2517: {0x1CB6, 0x10F6}, // 'Ჶ' => 'ჶ' 2514: {0x1CB7, 0x10F7}, // 'Ჷ' => 'ჷ' 2511: {0x1CB8, 0x10F8}, // 'Ჸ' => 'ჸ' 2508: {0x1CB9, 0x10F9}, // 'Ჹ' => 'ჹ' 2505: {0x1CBA, 0x10FA}, // 'Ჺ' => 'ჺ' 2496: {0x1CBD, 0x10FD}, // 'Ჽ' => 'ჽ' 2493: {0x1CBE, 0x10FE}, // 'Ჾ' => 'ჾ' 2490: {0x1CBF, 0x10FF}, // 'Ჿ' => 'ჿ' 1932: {0xA77D, 0x1D79}, // 'Ᵹ' => 'ᵹ' 1920: {0x2C63, 0x1D7D}, // 'Ᵽ' => 'ᵽ' 1869: {0xA7C6, 0x1D8E}, // 'Ᶎ' => 'ᶎ' 1526: {0x1E00, 0x1E01}, // 'Ḁ' => 'ḁ' 1523: {0x1E00, 0x1E01}, // 'Ḁ' => 'ḁ' 1520: {0x1E02, 0x1E03}, // 'Ḃ' => 'ḃ' 1517: {0x1E02, 0x1E03}, // 'Ḃ' => 'ḃ' 1514: {0x1E04, 0x1E05}, // 'Ḅ' => 'ḅ' 1511: {0x1E04, 0x1E05}, // 'Ḅ' => 'ḅ' 1508: {0x1E06, 0x1E07}, // 'Ḇ' => 'ḇ' 1505: {0x1E06, 0x1E07}, // 'Ḇ' => 'ḇ' 1502: {0x1E08, 0x1E09}, // 'Ḉ' => 'ḉ' 1499: {0x1E08, 0x1E09}, // 'Ḉ' => 'ḉ' 1496: {0x1E0A, 0x1E0B}, // 'Ḋ' => 'ḋ' 1493: {0x1E0A, 0x1E0B}, // 'Ḋ' => 'ḋ' 1490: {0x1E0C, 0x1E0D}, // 'Ḍ' => 'ḍ' 1487: {0x1E0C, 0x1E0D}, // 'Ḍ' => 'ḍ' 1484: {0x1E0E, 0x1E0F}, // 'Ḏ' => 'ḏ' 1481: {0x1E0E, 0x1E0F}, // 'Ḏ' => 'ḏ' 1478: {0x1E10, 0x1E11}, // 'Ḑ' => 'ḑ' 1475: {0x1E10, 0x1E11}, // 'Ḑ' => 'ḑ' 1472: {0x1E12, 0x1E13}, // 'Ḓ' => 'ḓ' 1469: {0x1E12, 0x1E13}, // 'Ḓ' => 'ḓ' 1466: {0x1E14, 0x1E15}, // 'Ḕ' => 'ḕ' 1463: {0x1E14, 0x1E15}, // 'Ḕ' => 'ḕ' 1460: {0x1E16, 0x1E17}, // 'Ḗ' => 'ḗ' 1457: {0x1E16, 0x1E17}, // 'Ḗ' => 'ḗ' 1454: {0x1E18, 0x1E19}, // 'Ḙ' => 'ḙ' 1451: {0x1E18, 0x1E19}, // 'Ḙ' => 'ḙ' 1448: {0x1E1A, 0x1E1B}, // 'Ḛ' => 'ḛ' 1445: {0x1E1A, 0x1E1B}, // 'Ḛ' => 'ḛ' 1442: {0x1E1C, 0x1E1D}, // 'Ḝ' => 'ḝ' 1439: {0x1E1C, 0x1E1D}, // 'Ḝ' => 'ḝ' 1436: {0x1E1E, 0x1E1F}, // 'Ḟ' => 'ḟ' 1433: {0x1E1E, 0x1E1F}, // 'Ḟ' => 'ḟ' 1430: {0x1E20, 0x1E21}, // 'Ḡ' => 'ḡ' 1427: {0x1E20, 0x1E21}, // 'Ḡ' => 'ḡ' 1424: {0x1E22, 0x1E23}, // 'Ḣ' => 'ḣ' 1421: {0x1E22, 0x1E23}, // 'Ḣ' => 'ḣ' 1418: {0x1E24, 0x1E25}, // 'Ḥ' => 'ḥ' 1415: {0x1E24, 0x1E25}, // 'Ḥ' => 'ḥ' 1412: {0x1E26, 0x1E27}, // 'Ḧ' => 'ḧ' 1409: {0x1E26, 0x1E27}, // 'Ḧ' => 'ḧ' 1406: {0x1E28, 0x1E29}, // 'Ḩ' => 'ḩ' 1403: {0x1E28, 0x1E29}, // 'Ḩ' => 'ḩ' 1400: {0x1E2A, 0x1E2B}, // 'Ḫ' => 'ḫ' 1397: {0x1E2A, 0x1E2B}, // 'Ḫ' => 'ḫ' 1394: {0x1E2C, 0x1E2D}, // 'Ḭ' => 'ḭ' 1391: {0x1E2C, 0x1E2D}, // 'Ḭ' => 'ḭ' 1388: {0x1E2E, 0x1E2F}, // 'Ḯ' => 'ḯ' 1385: {0x1E2E, 0x1E2F}, // 'Ḯ' => 'ḯ' 1382: {0x1E30, 0x1E31}, // 'Ḱ' => 'ḱ' 1379: {0x1E30, 0x1E31}, // 'Ḱ' => 'ḱ' 1376: {0x1E32, 0x1E33}, // 'Ḳ' => 'ḳ' 1373: {0x1E32, 0x1E33}, // 'Ḳ' => 'ḳ' 1370: {0x1E34, 0x1E35}, // 'Ḵ' => 'ḵ' 1367: {0x1E34, 0x1E35}, // 'Ḵ' => 'ḵ' 1364: {0x1E36, 0x1E37}, // 'Ḷ' => 'ḷ' 1361: {0x1E36, 0x1E37}, // 'Ḷ' => 'ḷ' 1358: {0x1E38, 0x1E39}, // 'Ḹ' => 'ḹ' 1355: {0x1E38, 0x1E39}, // 'Ḹ' => 'ḹ' 1352: {0x1E3A, 0x1E3B}, // 'Ḻ' => 'ḻ' 1349: {0x1E3A, 0x1E3B}, // 'Ḻ' => 'ḻ' 1346: {0x1E3C, 0x1E3D}, // 'Ḽ' => 'ḽ' 1343: {0x1E3C, 0x1E3D}, // 'Ḽ' => 'ḽ' 1340: {0x1E3E, 0x1E3F}, // 'Ḿ' => 'ḿ' 1337: {0x1E3E, 0x1E3F}, // 'Ḿ' => 'ḿ' 1334: {0x1E40, 0x1E41}, // 'Ṁ' => 'ṁ' 1331: {0x1E40, 0x1E41}, // 'Ṁ' => 'ṁ' 1328: {0x1E42, 0x1E43}, // 'Ṃ' => 'ṃ' 1325: {0x1E42, 0x1E43}, // 'Ṃ' => 'ṃ' 1322: {0x1E44, 0x1E45}, // 'Ṅ' => 'ṅ' 1319: {0x1E44, 0x1E45}, // 'Ṅ' => 'ṅ' 1316: {0x1E46, 0x1E47}, // 'Ṇ' => 'ṇ' 1313: {0x1E46, 0x1E47}, // 'Ṇ' => 'ṇ' 1310: {0x1E48, 0x1E49}, // 'Ṉ' => 'ṉ' 1307: {0x1E48, 0x1E49}, // 'Ṉ' => 'ṉ' 1304: {0x1E4A, 0x1E4B}, // 'Ṋ' => 'ṋ' 1301: {0x1E4A, 0x1E4B}, // 'Ṋ' => 'ṋ' 1298: {0x1E4C, 0x1E4D}, // 'Ṍ' => 'ṍ' 1295: {0x1E4C, 0x1E4D}, // 'Ṍ' => 'ṍ' 1292: {0x1E4E, 0x1E4F}, // 'Ṏ' => 'ṏ' 1289: {0x1E4E, 0x1E4F}, // 'Ṏ' => 'ṏ' 1286: {0x1E50, 0x1E51}, // 'Ṑ' => 'ṑ' 1283: {0x1E50, 0x1E51}, // 'Ṑ' => 'ṑ' 1280: {0x1E52, 0x1E53}, // 'Ṓ' => 'ṓ' 1277: {0x1E52, 0x1E53}, // 'Ṓ' => 'ṓ' 1274: {0x1E54, 0x1E55}, // 'Ṕ' => 'ṕ' 1271: {0x1E54, 0x1E55}, // 'Ṕ' => 'ṕ' 1268: {0x1E56, 0x1E57}, // 'Ṗ' => 'ṗ' 1265: {0x1E56, 0x1E57}, // 'Ṗ' => 'ṗ' 1262: {0x1E58, 0x1E59}, // 'Ṙ' => 'ṙ' 1259: {0x1E58, 0x1E59}, // 'Ṙ' => 'ṙ' 1256: {0x1E5A, 0x1E5B}, // 'Ṛ' => 'ṛ' 1253: {0x1E5A, 0x1E5B}, // 'Ṛ' => 'ṛ' 1250: {0x1E5C, 0x1E5D}, // 'Ṝ' => 'ṝ' 1247: {0x1E5C, 0x1E5D}, // 'Ṝ' => 'ṝ' 1244: {0x1E5E, 0x1E5F}, // 'Ṟ' => 'ṟ' 1241: {0x1E5E, 0x1E5F}, // 'Ṟ' => 'ṟ' 1238: {0x1E60, 0x1E61}, // 'Ṡ' => 'ṡ' 1235: {0x1E60, 0x1E61}, // 'Ṡ' => 'ṡ' 1232: {0x1E62, 0x1E63}, // 'Ṣ' => 'ṣ' 1229: {0x1E62, 0x1E63}, // 'Ṣ' => 'ṣ' 1226: {0x1E64, 0x1E65}, // 'Ṥ' => 'ṥ' 1223: {0x1E64, 0x1E65}, // 'Ṥ' => 'ṥ' 1220: {0x1E66, 0x1E67}, // 'Ṧ' => 'ṧ' 1217: {0x1E66, 0x1E67}, // 'Ṧ' => 'ṧ' 1214: {0x1E68, 0x1E69}, // 'Ṩ' => 'ṩ' 1211: {0x1E68, 0x1E69}, // 'Ṩ' => 'ṩ' 1208: {0x1E6A, 0x1E6B}, // 'Ṫ' => 'ṫ' 1205: {0x1E6A, 0x1E6B}, // 'Ṫ' => 'ṫ' 1202: {0x1E6C, 0x1E6D}, // 'Ṭ' => 'ṭ' 1199: {0x1E6C, 0x1E6D}, // 'Ṭ' => 'ṭ' 1196: {0x1E6E, 0x1E6F}, // 'Ṯ' => 'ṯ' 1193: {0x1E6E, 0x1E6F}, // 'Ṯ' => 'ṯ' 1190: {0x1E70, 0x1E71}, // 'Ṱ' => 'ṱ' 1187: {0x1E70, 0x1E71}, // 'Ṱ' => 'ṱ' 1184: {0x1E72, 0x1E73}, // 'Ṳ' => 'ṳ' 1181: {0x1E72, 0x1E73}, // 'Ṳ' => 'ṳ' 1178: {0x1E74, 0x1E75}, // 'Ṵ' => 'ṵ' 1175: {0x1E74, 0x1E75}, // 'Ṵ' => 'ṵ' 1172: {0x1E76, 0x1E77}, // 'Ṷ' => 'ṷ' 1169: {0x1E76, 0x1E77}, // 'Ṷ' => 'ṷ' 1166: {0x1E78, 0x1E79}, // 'Ṹ' => 'ṹ' 1163: {0x1E78, 0x1E79}, // 'Ṹ' => 'ṹ' 1160: {0x1E7A, 0x1E7B}, // 'Ṻ' => 'ṻ' 1157: {0x1E7A, 0x1E7B}, // 'Ṻ' => 'ṻ' 1154: {0x1E7C, 0x1E7D}, // 'Ṽ' => 'ṽ' 1151: {0x1E7C, 0x1E7D}, // 'Ṽ' => 'ṽ' 1148: {0x1E7E, 0x1E7F}, // 'Ṿ' => 'ṿ' 1145: {0x1E7E, 0x1E7F}, // 'Ṿ' => 'ṿ' 1142: {0x1E80, 0x1E81}, // 'Ẁ' => 'ẁ' 1139: {0x1E80, 0x1E81}, // 'Ẁ' => 'ẁ' 1136: {0x1E82, 0x1E83}, // 'Ẃ' => 'ẃ' 1133: {0x1E82, 0x1E83}, // 'Ẃ' => 'ẃ' 1130: {0x1E84, 0x1E85}, // 'Ẅ' => 'ẅ' 1127: {0x1E84, 0x1E85}, // 'Ẅ' => 'ẅ' 1124: {0x1E86, 0x1E87}, // 'Ẇ' => 'ẇ' 1121: {0x1E86, 0x1E87}, // 'Ẇ' => 'ẇ' 1118: {0x1E88, 0x1E89}, // 'Ẉ' => 'ẉ' 1115: {0x1E88, 0x1E89}, // 'Ẉ' => 'ẉ' 1112: {0x1E8A, 0x1E8B}, // 'Ẋ' => 'ẋ' 1109: {0x1E8A, 0x1E8B}, // 'Ẋ' => 'ẋ' 1106: {0x1E8C, 0x1E8D}, // 'Ẍ' => 'ẍ' 1103: {0x1E8C, 0x1E8D}, // 'Ẍ' => 'ẍ' 1100: {0x1E8E, 0x1E8F}, // 'Ẏ' => 'ẏ' 1097: {0x1E8E, 0x1E8F}, // 'Ẏ' => 'ẏ' 1094: {0x1E90, 0x1E91}, // 'Ẑ' => 'ẑ' 1091: {0x1E90, 0x1E91}, // 'Ẑ' => 'ẑ' 1088: {0x1E92, 0x1E93}, // 'Ẓ' => 'ẓ' 1085: {0x1E92, 0x1E93}, // 'Ẓ' => 'ẓ' 1082: {0x1E94, 0x1E95}, // 'Ẕ' => 'ẕ' 1079: {0x1E94, 0x1E95}, // 'Ẕ' => 'ẕ' 1061: {0x1E60, 0x1E9B}, // 'Ṡ' => 'ẛ' 1052: {0x1E9E, 0x00DF}, // 'ẞ' => 'ß' 1046: {0x1EA0, 0x1EA1}, // 'Ạ' => 'ạ' 1043: {0x1EA0, 0x1EA1}, // 'Ạ' => 'ạ' 1040: {0x1EA2, 0x1EA3}, // 'Ả' => 'ả' 1037: {0x1EA2, 0x1EA3}, // 'Ả' => 'ả' 1034: {0x1EA4, 0x1EA5}, // 'Ấ' => 'ấ' 1031: {0x1EA4, 0x1EA5}, // 'Ấ' => 'ấ' 1028: {0x1EA6, 0x1EA7}, // 'Ầ' => 'ầ' 1025: {0x1EA6, 0x1EA7}, // 'Ầ' => 'ầ' 1022: {0x1EA8, 0x1EA9}, // 'Ẩ' => 'ẩ' 1019: {0x1EA8, 0x1EA9}, // 'Ẩ' => 'ẩ' 1016: {0x1EAA, 0x1EAB}, // 'Ẫ' => 'ẫ' 1013: {0x1EAA, 0x1EAB}, // 'Ẫ' => 'ẫ' 1010: {0x1EAC, 0x1EAD}, // 'Ậ' => 'ậ' 1007: {0x1EAC, 0x1EAD}, // 'Ậ' => 'ậ' 1004: {0x1EAE, 0x1EAF}, // 'Ắ' => 'ắ' 1001: {0x1EAE, 0x1EAF}, // 'Ắ' => 'ắ' 998: {0x1EB0, 0x1EB1}, // 'Ằ' => 'ằ' 995: {0x1EB0, 0x1EB1}, // 'Ằ' => 'ằ' 992: {0x1EB2, 0x1EB3}, // 'Ẳ' => 'ẳ' 989: {0x1EB2, 0x1EB3}, // 'Ẳ' => 'ẳ' 986: {0x1EB4, 0x1EB5}, // 'Ẵ' => 'ẵ' 983: {0x1EB4, 0x1EB5}, // 'Ẵ' => 'ẵ' 980: {0x1EB6, 0x1EB7}, // 'Ặ' => 'ặ' 977: {0x1EB6, 0x1EB7}, // 'Ặ' => 'ặ' 974: {0x1EB8, 0x1EB9}, // 'Ẹ' => 'ẹ' 971: {0x1EB8, 0x1EB9}, // 'Ẹ' => 'ẹ' 968: {0x1EBA, 0x1EBB}, // 'Ẻ' => 'ẻ' 965: {0x1EBA, 0x1EBB}, // 'Ẻ' => 'ẻ' 962: {0x1EBC, 0x1EBD}, // 'Ẽ' => 'ẽ' 959: {0x1EBC, 0x1EBD}, // 'Ẽ' => 'ẽ' 956: {0x1EBE, 0x1EBF}, // 'Ế' => 'ế' 953: {0x1EBE, 0x1EBF}, // 'Ế' => 'ế' 950: {0x1EC0, 0x1EC1}, // 'Ề' => 'ề' 947: {0x1EC0, 0x1EC1}, // 'Ề' => 'ề' 944: {0x1EC2, 0x1EC3}, // 'Ể' => 'ể' 941: {0x1EC2, 0x1EC3}, // 'Ể' => 'ể' 938: {0x1EC4, 0x1EC5}, // 'Ễ' => 'ễ' 935: {0x1EC4, 0x1EC5}, // 'Ễ' => 'ễ' 932: {0x1EC6, 0x1EC7}, // 'Ệ' => 'ệ' 929: {0x1EC6, 0x1EC7}, // 'Ệ' => 'ệ' 926: {0x1EC8, 0x1EC9}, // 'Ỉ' => 'ỉ' 923: {0x1EC8, 0x1EC9}, // 'Ỉ' => 'ỉ' 920: {0x1ECA, 0x1ECB}, // 'Ị' => 'ị' 917: {0x1ECA, 0x1ECB}, // 'Ị' => 'ị' 914: {0x1ECC, 0x1ECD}, // 'Ọ' => 'ọ' 911: {0x1ECC, 0x1ECD}, // 'Ọ' => 'ọ' 908: {0x1ECE, 0x1ECF}, // 'Ỏ' => 'ỏ' 905: {0x1ECE, 0x1ECF}, // 'Ỏ' => 'ỏ' 902: {0x1ED0, 0x1ED1}, // 'Ố' => 'ố' 899: {0x1ED0, 0x1ED1}, // 'Ố' => 'ố' 896: {0x1ED2, 0x1ED3}, // 'Ồ' => 'ồ' 893: {0x1ED2, 0x1ED3}, // 'Ồ' => 'ồ' 890: {0x1ED4, 0x1ED5}, // 'Ổ' => 'ổ' 887: {0x1ED4, 0x1ED5}, // 'Ổ' => 'ổ' 884: {0x1ED6, 0x1ED7}, // 'Ỗ' => 'ỗ' 881: {0x1ED6, 0x1ED7}, // 'Ỗ' => 'ỗ' 878: {0x1ED8, 0x1ED9}, // 'Ộ' => 'ộ' 875: {0x1ED8, 0x1ED9}, // 'Ộ' => 'ộ' 872: {0x1EDA, 0x1EDB}, // 'Ớ' => 'ớ' 869: {0x1EDA, 0x1EDB}, // 'Ớ' => 'ớ' 866: {0x1EDC, 0x1EDD}, // 'Ờ' => 'ờ' 863: {0x1EDC, 0x1EDD}, // 'Ờ' => 'ờ' 860: {0x1EDE, 0x1EDF}, // 'Ở' => 'ở' 857: {0x1EDE, 0x1EDF}, // 'Ở' => 'ở' 854: {0x1EE0, 0x1EE1}, // 'Ỡ' => 'ỡ' 851: {0x1EE0, 0x1EE1}, // 'Ỡ' => 'ỡ' 848: {0x1EE2, 0x1EE3}, // 'Ợ' => 'ợ' 845: {0x1EE2, 0x1EE3}, // 'Ợ' => 'ợ' 842: {0x1EE4, 0x1EE5}, // 'Ụ' => 'ụ' 839: {0x1EE4, 0x1EE5}, // 'Ụ' => 'ụ' 836: {0x1EE6, 0x1EE7}, // 'Ủ' => 'ủ' 833: {0x1EE6, 0x1EE7}, // 'Ủ' => 'ủ' 830: {0x1EE8, 0x1EE9}, // 'Ứ' => 'ứ' 827: {0x1EE8, 0x1EE9}, // 'Ứ' => 'ứ' 824: {0x1EEA, 0x1EEB}, // 'Ừ' => 'ừ' 821: {0x1EEA, 0x1EEB}, // 'Ừ' => 'ừ' 818: {0x1EEC, 0x1EED}, // 'Ử' => 'ử' 815: {0x1EEC, 0x1EED}, // 'Ử' => 'ử' 812: {0x1EEE, 0x1EEF}, // 'Ữ' => 'ữ' 809: {0x1EEE, 0x1EEF}, // 'Ữ' => 'ữ' 806: {0x1EF0, 0x1EF1}, // 'Ự' => 'ự' 803: {0x1EF0, 0x1EF1}, // 'Ự' => 'ự' 800: {0x1EF2, 0x1EF3}, // 'Ỳ' => 'ỳ' 797: {0x1EF2, 0x1EF3}, // 'Ỳ' => 'ỳ' 794: {0x1EF4, 0x1EF5}, // 'Ỵ' => 'ỵ' 791: {0x1EF4, 0x1EF5}, // 'Ỵ' => 'ỵ' 788: {0x1EF6, 0x1EF7}, // 'Ỷ' => 'ỷ' 785: {0x1EF6, 0x1EF7}, // 'Ỷ' => 'ỷ' 782: {0x1EF8, 0x1EF9}, // 'Ỹ' => 'ỹ' 779: {0x1EF8, 0x1EF9}, // 'Ỹ' => 'ỹ' 776: {0x1EFA, 0x1EFB}, // 'Ỻ' => 'ỻ' 773: {0x1EFA, 0x1EFB}, // 'Ỻ' => 'ỻ' 770: {0x1EFC, 0x1EFD}, // 'Ỽ' => 'ỽ' 767: {0x1EFC, 0x1EFD}, // 'Ỽ' => 'ỽ' 764: {0x1EFE, 0x1EFF}, // 'Ỿ' => 'ỿ' 761: {0x1EFE, 0x1EFF}, // 'Ỿ' => 'ỿ' 758: {0x1F08, 0x1F00}, // 'Ἀ' => 'ἀ' 755: {0x1F09, 0x1F01}, // 'Ἁ' => 'ἁ' 752: {0x1F0A, 0x1F02}, // 'Ἂ' => 'ἂ' 749: {0x1F0B, 0x1F03}, // 'Ἃ' => 'ἃ' 746: {0x1F0C, 0x1F04}, // 'Ἄ' => 'ἄ' 743: {0x1F0D, 0x1F05}, // 'Ἅ' => 'ἅ' 740: {0x1F0E, 0x1F06}, // 'Ἆ' => 'ἆ' 737: {0x1F0F, 0x1F07}, // 'Ἇ' => 'ἇ' 734: {0x1F08, 0x1F00}, // 'Ἀ' => 'ἀ' 731: {0x1F09, 0x1F01}, // 'Ἁ' => 'ἁ' 728: {0x1F0A, 0x1F02}, // 'Ἂ' => 'ἂ' 725: {0x1F0B, 0x1F03}, // 'Ἃ' => 'ἃ' 722: {0x1F0C, 0x1F04}, // 'Ἄ' => 'ἄ' 719: {0x1F0D, 0x1F05}, // 'Ἅ' => 'ἅ' 716: {0x1F0E, 0x1F06}, // 'Ἆ' => 'ἆ' 713: {0x1F0F, 0x1F07}, // 'Ἇ' => 'ἇ' 710: {0x1F18, 0x1F10}, // 'Ἐ' => 'ἐ' 707: {0x1F19, 0x1F11}, // 'Ἑ' => 'ἑ' 704: {0x1F1A, 0x1F12}, // 'Ἒ' => 'ἒ' 701: {0x1F1B, 0x1F13}, // 'Ἓ' => 'ἓ' 698: {0x1F1C, 0x1F14}, // 'Ἔ' => 'ἔ' 695: {0x1F1D, 0x1F15}, // 'Ἕ' => 'ἕ' 686: {0x1F18, 0x1F10}, // 'Ἐ' => 'ἐ' 683: {0x1F19, 0x1F11}, // 'Ἑ' => 'ἑ' 680: {0x1F1A, 0x1F12}, // 'Ἒ' => 'ἒ' 677: {0x1F1B, 0x1F13}, // 'Ἓ' => 'ἓ' 674: {0x1F1C, 0x1F14}, // 'Ἔ' => 'ἔ' 671: {0x1F1D, 0x1F15}, // 'Ἕ' => 'ἕ' 662: {0x1F28, 0x1F20}, // 'Ἠ' => 'ἠ' 659: {0x1F29, 0x1F21}, // 'Ἡ' => 'ἡ' 656: {0x1F2A, 0x1F22}, // 'Ἢ' => 'ἢ' 653: {0x1F2B, 0x1F23}, // 'Ἣ' => 'ἣ' 650: {0x1F2C, 0x1F24}, // 'Ἤ' => 'ἤ' 647: {0x1F2D, 0x1F25}, // 'Ἥ' => 'ἥ' 644: {0x1F2E, 0x1F26}, // 'Ἦ' => 'ἦ' 641: {0x1F2F, 0x1F27}, // 'Ἧ' => 'ἧ' 638: {0x1F28, 0x1F20}, // 'Ἠ' => 'ἠ' 635: {0x1F29, 0x1F21}, // 'Ἡ' => 'ἡ' 632: {0x1F2A, 0x1F22}, // 'Ἢ' => 'ἢ' 629: {0x1F2B, 0x1F23}, // 'Ἣ' => 'ἣ' 626: {0x1F2C, 0x1F24}, // 'Ἤ' => 'ἤ' 623: {0x1F2D, 0x1F25}, // 'Ἥ' => 'ἥ' 620: {0x1F2E, 0x1F26}, // 'Ἦ' => 'ἦ' 617: {0x1F2F, 0x1F27}, // 'Ἧ' => 'ἧ' 614: {0x1F38, 0x1F30}, // 'Ἰ' => 'ἰ' 611: {0x1F39, 0x1F31}, // 'Ἱ' => 'ἱ' 608: {0x1F3A, 0x1F32}, // 'Ἲ' => 'ἲ' 605: {0x1F3B, 0x1F33}, // 'Ἳ' => 'ἳ' 602: {0x1F3C, 0x1F34}, // 'Ἴ' => 'ἴ' 599: {0x1F3D, 0x1F35}, // 'Ἵ' => 'ἵ' 596: {0x1F3E, 0x1F36}, // 'Ἶ' => 'ἶ' 593: {0x1F3F, 0x1F37}, // 'Ἷ' => 'ἷ' 590: {0x1F38, 0x1F30}, // 'Ἰ' => 'ἰ' 587: {0x1F39, 0x1F31}, // 'Ἱ' => 'ἱ' 584: {0x1F3A, 0x1F32}, // 'Ἲ' => 'ἲ' 581: {0x1F3B, 0x1F33}, // 'Ἳ' => 'ἳ' 578: {0x1F3C, 0x1F34}, // 'Ἴ' => 'ἴ' 575: {0x1F3D, 0x1F35}, // 'Ἵ' => 'ἵ' 572: {0x1F3E, 0x1F36}, // 'Ἶ' => 'ἶ' 569: {0x1F3F, 0x1F37}, // 'Ἷ' => 'ἷ' 566: {0x1F48, 0x1F40}, // 'Ὀ' => 'ὀ' 563: {0x1F49, 0x1F41}, // 'Ὁ' => 'ὁ' 560: {0x1F4A, 0x1F42}, // 'Ὂ' => 'ὂ' 557: {0x1F4B, 0x1F43}, // 'Ὃ' => 'ὃ' 554: {0x1F4C, 0x1F44}, // 'Ὄ' => 'ὄ' 551: {0x1F4D, 0x1F45}, // 'Ὅ' => 'ὅ' 542: {0x1F48, 0x1F40}, // 'Ὀ' => 'ὀ' 539: {0x1F49, 0x1F41}, // 'Ὁ' => 'ὁ' 536: {0x1F4A, 0x1F42}, // 'Ὂ' => 'ὂ' 533: {0x1F4B, 0x1F43}, // 'Ὃ' => 'ὃ' 530: {0x1F4C, 0x1F44}, // 'Ὄ' => 'ὄ' 527: {0x1F4D, 0x1F45}, // 'Ὅ' => 'ὅ' 515: {0x1F59, 0x1F51}, // 'Ὑ' => 'ὑ' 509: {0x1F5B, 0x1F53}, // 'Ὓ' => 'ὓ' 503: {0x1F5D, 0x1F55}, // 'Ὕ' => 'ὕ' 497: {0x1F5F, 0x1F57}, // 'Ὗ' => 'ὗ' 491: {0x1F59, 0x1F51}, // 'Ὑ' => 'ὑ' 485: {0x1F5B, 0x1F53}, // 'Ὓ' => 'ὓ' 479: {0x1F5D, 0x1F55}, // 'Ὕ' => 'ὕ' 473: {0x1F5F, 0x1F57}, // 'Ὗ' => 'ὗ' 470: {0x1F68, 0x1F60}, // 'Ὠ' => 'ὠ' 467: {0x1F69, 0x1F61}, // 'Ὡ' => 'ὡ' 464: {0x1F6A, 0x1F62}, // 'Ὢ' => 'ὢ' 461: {0x1F6B, 0x1F63}, // 'Ὣ' => 'ὣ' 458: {0x1F6C, 0x1F64}, // 'Ὤ' => 'ὤ' 455: {0x1F6D, 0x1F65}, // 'Ὥ' => 'ὥ' 452: {0x1F6E, 0x1F66}, // 'Ὦ' => 'ὦ' 449: {0x1F6F, 0x1F67}, // 'Ὧ' => 'ὧ' 446: {0x1F68, 0x1F60}, // 'Ὠ' => 'ὠ' 443: {0x1F69, 0x1F61}, // 'Ὡ' => 'ὡ' 440: {0x1F6A, 0x1F62}, // 'Ὢ' => 'ὢ' 437: {0x1F6B, 0x1F63}, // 'Ὣ' => 'ὣ' 434: {0x1F6C, 0x1F64}, // 'Ὤ' => 'ὤ' 431: {0x1F6D, 0x1F65}, // 'Ὥ' => 'ὥ' 428: {0x1F6E, 0x1F66}, // 'Ὦ' => 'ὦ' 425: {0x1F6F, 0x1F67}, // 'Ὧ' => 'ὧ' 422: {0x1FBA, 0x1F70}, // 'Ὰ' => 'ὰ' 419: {0x1FBB, 0x1F71}, // 'Ά' => 'ά' 416: {0x1FC8, 0x1F72}, // 'Ὲ' => 'ὲ' 413: {0x1FC9, 0x1F73}, // 'Έ' => 'έ' 410: {0x1FCA, 0x1F74}, // 'Ὴ' => 'ὴ' 407: {0x1FCB, 0x1F75}, // 'Ή' => 'ή' 404: {0x1FDA, 0x1F76}, // 'Ὶ' => 'ὶ' 401: {0x1FDB, 0x1F77}, // 'Ί' => 'ί' 398: {0x1FF8, 0x1F78}, // 'Ὸ' => 'ὸ' 395: {0x1FF9, 0x1F79}, // 'Ό' => 'ό' 392: {0x1FEA, 0x1F7A}, // 'Ὺ' => 'ὺ' 389: {0x1FEB, 0x1F7B}, // 'Ύ' => 'ύ' 386: {0x1FFA, 0x1F7C}, // 'Ὼ' => 'ὼ' 383: {0x1FFB, 0x1F7D}, // 'Ώ' => 'ώ' 374: {0x1F88, 0x1F80}, // 'ᾈ' => 'ᾀ' 371: {0x1F89, 0x1F81}, // 'ᾉ' => 'ᾁ' 368: {0x1F8A, 0x1F82}, // 'ᾊ' => 'ᾂ' 365: {0x1F8B, 0x1F83}, // 'ᾋ' => 'ᾃ' 362: {0x1F8C, 0x1F84}, // 'ᾌ' => 'ᾄ' 359: {0x1F8D, 0x1F85}, // 'ᾍ' => 'ᾅ' 356: {0x1F8E, 0x1F86}, // 'ᾎ' => 'ᾆ' 353: {0x1F8F, 0x1F87}, // 'ᾏ' => 'ᾇ' 350: {0x1F88, 0x1F80}, // 'ᾈ' => 'ᾀ' 347: {0x1F89, 0x1F81}, // 'ᾉ' => 'ᾁ' 344: {0x1F8A, 0x1F82}, // 'ᾊ' => 'ᾂ' 341: {0x1F8B, 0x1F83}, // 'ᾋ' => 'ᾃ' 338: {0x1F8C, 0x1F84}, // 'ᾌ' => 'ᾄ' 335: {0x1F8D, 0x1F85}, // 'ᾍ' => 'ᾅ' 332: {0x1F8E, 0x1F86}, // 'ᾎ' => 'ᾆ' 329: {0x1F8F, 0x1F87}, // 'ᾏ' => 'ᾇ' 326: {0x1F98, 0x1F90}, // 'ᾘ' => 'ᾐ' 323: {0x1F99, 0x1F91}, // 'ᾙ' => 'ᾑ' 320: {0x1F9A, 0x1F92}, // 'ᾚ' => 'ᾒ' 317: {0x1F9B, 0x1F93}, // 'ᾛ' => 'ᾓ' 314: {0x1F9C, 0x1F94}, // 'ᾜ' => 'ᾔ' 311: {0x1F9D, 0x1F95}, // 'ᾝ' => 'ᾕ' 308: {0x1F9E, 0x1F96}, // 'ᾞ' => 'ᾖ' 305: {0x1F9F, 0x1F97}, // 'ᾟ' => 'ᾗ' 302: {0x1F98, 0x1F90}, // 'ᾘ' => 'ᾐ' 299: {0x1F99, 0x1F91}, // 'ᾙ' => 'ᾑ' 296: {0x1F9A, 0x1F92}, // 'ᾚ' => 'ᾒ' 293: {0x1F9B, 0x1F93}, // 'ᾛ' => 'ᾓ' 290: {0x1F9C, 0x1F94}, // 'ᾜ' => 'ᾔ' 287: {0x1F9D, 0x1F95}, // 'ᾝ' => 'ᾕ' 284: {0x1F9E, 0x1F96}, // 'ᾞ' => 'ᾖ' 281: {0x1F9F, 0x1F97}, // 'ᾟ' => 'ᾗ' 278: {0x1FA8, 0x1FA0}, // 'ᾨ' => 'ᾠ' 275: {0x1FA9, 0x1FA1}, // 'ᾩ' => 'ᾡ' 272: {0x1FAA, 0x1FA2}, // 'ᾪ' => 'ᾢ' 269: {0x1FAB, 0x1FA3}, // 'ᾫ' => 'ᾣ' 266: {0x1FAC, 0x1FA4}, // 'ᾬ' => 'ᾤ' 263: {0x1FAD, 0x1FA5}, // 'ᾭ' => 'ᾥ' 260: {0x1FAE, 0x1FA6}, // 'ᾮ' => 'ᾦ' 257: {0x1FAF, 0x1FA7}, // 'ᾯ' => 'ᾧ' 254: {0x1FA8, 0x1FA0}, // 'ᾨ' => 'ᾠ' 251: {0x1FA9, 0x1FA1}, // 'ᾩ' => 'ᾡ' 248: {0x1FAA, 0x1FA2}, // 'ᾪ' => 'ᾢ' 245: {0x1FAB, 0x1FA3}, // 'ᾫ' => 'ᾣ' 242: {0x1FAC, 0x1FA4}, // 'ᾬ' => 'ᾤ' 239: {0x1FAD, 0x1FA5}, // 'ᾭ' => 'ᾥ' 236: {0x1FAE, 0x1FA6}, // 'ᾮ' => 'ᾦ' 233: {0x1FAF, 0x1FA7}, // 'ᾯ' => 'ᾧ' 230: {0x1FB8, 0x1FB0}, // 'Ᾰ' => 'ᾰ' 227: {0x1FB9, 0x1FB1}, // 'Ᾱ' => 'ᾱ' 221: {0x1FBC, 0x1FB3}, // 'ᾼ' => 'ᾳ' 206: {0x1FB8, 0x1FB0}, // 'Ᾰ' => 'ᾰ' 203: {0x1FB9, 0x1FB1}, // 'Ᾱ' => 'ᾱ' 200: {0x1FBA, 0x1F70}, // 'Ὰ' => 'ὰ' 197: {0x1FBB, 0x1F71}, // 'Ά' => 'ά' 194: {0x1FBC, 0x1FB3}, // 'ᾼ' => 'ᾳ' 188: {0x0399, 0x1FBE}, // 'Ι' => 'ι' 173: {0x1FCC, 0x1FC3}, // 'ῌ' => 'ῃ' 158: {0x1FC8, 0x1F72}, // 'Ὲ' => 'ὲ' 155: {0x1FC9, 0x1F73}, // 'Έ' => 'έ' 152: {0x1FCA, 0x1F74}, // 'Ὴ' => 'ὴ' 149: {0x1FCB, 0x1F75}, // 'Ή' => 'ή' 146: {0x1FCC, 0x1FC3}, // 'ῌ' => 'ῃ' 134: {0x1FD8, 0x1FD0}, // 'Ῐ' => 'ῐ' 131: {0x1FD9, 0x1FD1}, // 'Ῑ' => 'ῑ' 110: {0x1FD8, 0x1FD0}, // 'Ῐ' => 'ῐ' 107: {0x1FD9, 0x1FD1}, // 'Ῑ' => 'ῑ' 104: {0x1FDA, 0x1F76}, // 'Ὶ' => 'ὶ' 101: {0x1FDB, 0x1F77}, // 'Ί' => 'ί' 86: {0x1FE8, 0x1FE0}, // 'Ῠ' => 'ῠ' 83: {0x1FE9, 0x1FE1}, // 'Ῡ' => 'ῡ' 71: {0x1FEC, 0x1FE5}, // 'Ῥ' => 'ῥ' 62: {0x1FE8, 0x1FE0}, // 'Ῠ' => 'ῠ' 59: {0x1FE9, 0x1FE1}, // 'Ῡ' => 'ῡ' 56: {0x1FEA, 0x1F7A}, // 'Ὺ' => 'ὺ' 53: {0x1FEB, 0x1F7B}, // 'Ύ' => 'ύ' 50: {0x1FEC, 0x1FE5}, // 'Ῥ' => 'ῥ' 29: {0x1FFC, 0x1FF3}, // 'ῼ' => 'ῳ' 14: {0x1FF8, 0x1F78}, // 'Ὸ' => 'ὸ' 11: {0x1FF9, 0x1F79}, // 'Ό' => 'ό' 8: {0x1FFA, 0x1F7C}, // 'Ὼ' => 'ὼ' 5: {0x1FFB, 0x1F7D}, // 'Ώ' => 'ώ' 2: {0x1FFC, 0x1FF3}, // 'ῼ' => 'ῳ' 7299: {0x2126, 0x03C9}, // 'Ω' => 'ω' 7287: {0x212A, 0x006B}, // 'K' => 'k' 7284: {0x212B, 0x00E5}, // 'Å' => 'å' 7263: {0x2132, 0x214E}, // 'Ⅎ' => 'ⅎ' 7179: {0x2132, 0x214E}, // 'Ⅎ' => 'ⅎ' 7125: {0x2160, 0x2170}, // 'Ⅰ' => 'ⅰ' 7122: {0x2161, 0x2171}, // 'Ⅱ' => 'ⅱ' 7119: {0x2162, 0x2172}, // 'Ⅲ' => 'ⅲ' 7116: {0x2163, 0x2173}, // 'Ⅳ' => 'ⅳ' 7113: {0x2164, 0x2174}, // 'Ⅴ' => 'ⅴ' 7110: {0x2165, 0x2175}, // 'Ⅵ' => 'ⅵ' 7107: {0x2166, 0x2176}, // 'Ⅶ' => 'ⅶ' 7104: {0x2167, 0x2177}, // 'Ⅷ' => 'ⅷ' 7101: {0x2168, 0x2178}, // 'Ⅸ' => 'ⅸ' 7098: {0x2169, 0x2179}, // 'Ⅹ' => 'ⅹ' 7095: {0x216A, 0x217A}, // 'Ⅺ' => 'ⅺ' 7092: {0x216B, 0x217B}, // 'Ⅻ' => 'ⅻ' 7089: {0x216C, 0x217C}, // 'Ⅼ' => 'ⅼ' 7086: {0x216D, 0x217D}, // 'Ⅽ' => 'ⅽ' 7083: {0x216E, 0x217E}, // 'Ⅾ' => 'ⅾ' 7080: {0x216F, 0x217F}, // 'Ⅿ' => 'ⅿ' 7077: {0x2160, 0x2170}, // 'Ⅰ' => 'ⅰ' 7074: {0x2161, 0x2171}, // 'Ⅱ' => 'ⅱ' 7071: {0x2162, 0x2172}, // 'Ⅲ' => 'ⅲ' 7068: {0x2163, 0x2173}, // 'Ⅳ' => 'ⅳ' 7065: {0x2164, 0x2174}, // 'Ⅴ' => 'ⅴ' 7062: {0x2165, 0x2175}, // 'Ⅵ' => 'ⅵ' 7059: {0x2166, 0x2176}, // 'Ⅶ' => 'ⅶ' 7056: {0x2167, 0x2177}, // 'Ⅷ' => 'ⅷ' 7053: {0x2168, 0x2178}, // 'Ⅸ' => 'ⅸ' 7050: {0x2169, 0x2179}, // 'Ⅹ' => 'ⅹ' 7047: {0x216A, 0x217A}, // 'Ⅺ' => 'ⅺ' 7044: {0x216B, 0x217B}, // 'Ⅻ' => 'ⅻ' 7041: {0x216C, 0x217C}, // 'Ⅼ' => 'ⅼ' 7038: {0x216D, 0x217D}, // 'Ⅽ' => 'ⅽ' 7035: {0x216E, 0x217E}, // 'Ⅾ' => 'ⅾ' 7032: {0x216F, 0x217F}, // 'Ⅿ' => 'ⅿ' 7020: {0x2183, 0x2184}, // 'Ↄ' => 'ↄ' 7017: {0x2183, 0x2184}, // 'Ↄ' => 'ↄ' 4562: {0x24B6, 0x24D0}, // 'Ⓐ' => 'ⓐ' 4559: {0x24B7, 0x24D1}, // 'Ⓑ' => 'ⓑ' 4556: {0x24B8, 0x24D2}, // 'Ⓒ' => 'ⓒ' 4553: {0x24B9, 0x24D3}, // 'Ⓓ' => 'ⓓ' 4550: {0x24BA, 0x24D4}, // 'Ⓔ' => 'ⓔ' 4547: {0x24BB, 0x24D5}, // 'Ⓕ' => 'ⓕ' 4544: {0x24BC, 0x24D6}, // 'Ⓖ' => 'ⓖ' 4541: {0x24BD, 0x24D7}, // 'Ⓗ' => 'ⓗ' 4538: {0x24BE, 0x24D8}, // 'Ⓘ' => 'ⓘ' 4535: {0x24BF, 0x24D9}, // 'Ⓙ' => 'ⓙ' 4532: {0x24C0, 0x24DA}, // 'Ⓚ' => 'ⓚ' 4529: {0x24C1, 0x24DB}, // 'Ⓛ' => 'ⓛ' 4526: {0x24C2, 0x24DC}, // 'Ⓜ' => 'ⓜ' 4523: {0x24C3, 0x24DD}, // 'Ⓝ' => 'ⓝ' 4520: {0x24C4, 0x24DE}, // 'Ⓞ' => 'ⓞ' 4517: {0x24C5, 0x24DF}, // 'Ⓟ' => 'ⓟ' 4514: {0x24C6, 0x24E0}, // 'Ⓠ' => 'ⓠ' 4511: {0x24C7, 0x24E1}, // 'Ⓡ' => 'ⓡ' 4508: {0x24C8, 0x24E2}, // 'Ⓢ' => 'ⓢ' 4505: {0x24C9, 0x24E3}, // 'Ⓣ' => 'ⓣ' 4502: {0x24CA, 0x24E4}, // 'Ⓤ' => 'ⓤ' 4499: {0x24CB, 0x24E5}, // 'Ⓥ' => 'ⓥ' 4496: {0x24CC, 0x24E6}, // 'Ⓦ' => 'ⓦ' 4493: {0x24CD, 0x24E7}, // 'Ⓧ' => 'ⓧ' 4490: {0x24CE, 0x24E8}, // 'Ⓨ' => 'ⓨ' 4487: {0x24CF, 0x24E9}, // 'Ⓩ' => 'ⓩ' 4484: {0x24B6, 0x24D0}, // 'Ⓐ' => 'ⓐ' 4481: {0x24B7, 0x24D1}, // 'Ⓑ' => 'ⓑ' 4478: {0x24B8, 0x24D2}, // 'Ⓒ' => 'ⓒ' 4475: {0x24B9, 0x24D3}, // 'Ⓓ' => 'ⓓ' 4472: {0x24BA, 0x24D4}, // 'Ⓔ' => 'ⓔ' 4469: {0x24BB, 0x24D5}, // 'Ⓕ' => 'ⓕ' 4466: {0x24BC, 0x24D6}, // 'Ⓖ' => 'ⓖ' 4463: {0x24BD, 0x24D7}, // 'Ⓗ' => 'ⓗ' 4460: {0x24BE, 0x24D8}, // 'Ⓘ' => 'ⓘ' 4457: {0x24BF, 0x24D9}, // 'Ⓙ' => 'ⓙ' 4454: {0x24C0, 0x24DA}, // 'Ⓚ' => 'ⓚ' 4451: {0x24C1, 0x24DB}, // 'Ⓛ' => 'ⓛ' 4448: {0x24C2, 0x24DC}, // 'Ⓜ' => 'ⓜ' 4445: {0x24C3, 0x24DD}, // 'Ⓝ' => 'ⓝ' 4442: {0x24C4, 0x24DE}, // 'Ⓞ' => 'ⓞ' 4439: {0x24C5, 0x24DF}, // 'Ⓟ' => 'ⓟ' 4436: {0x24C6, 0x24E0}, // 'Ⓠ' => 'ⓠ' 4433: {0x24C7, 0x24E1}, // 'Ⓡ' => 'ⓡ' 4430: {0x24C8, 0x24E2}, // 'Ⓢ' => 'ⓢ' 4427: {0x24C9, 0x24E3}, // 'Ⓣ' => 'ⓣ' 4424: {0x24CA, 0x24E4}, // 'Ⓤ' => 'ⓤ' 4421: {0x24CB, 0x24E5}, // 'Ⓥ' => 'ⓥ' 4418: {0x24CC, 0x24E6}, // 'Ⓦ' => 'ⓦ' 4415: {0x24CD, 0x24E7}, // 'Ⓧ' => 'ⓧ' 4412: {0x24CE, 0x24E8}, // 'Ⓨ' => 'ⓨ' 4409: {0x24CF, 0x24E9}, // 'Ⓩ' => 'ⓩ' 7154: {0x2C00, 0x2C30}, // 'Ⰰ' => 'ⰰ' 7151: {0x2C01, 0x2C31}, // 'Ⰱ' => 'ⰱ' 7148: {0x2C02, 0x2C32}, // 'Ⰲ' => 'ⰲ' 7145: {0x2C03, 0x2C33}, // 'Ⰳ' => 'ⰳ' 7142: {0x2C04, 0x2C34}, // 'Ⰴ' => 'ⰴ' 7139: {0x2C05, 0x2C35}, // 'Ⰵ' => 'ⰵ' 7136: {0x2C06, 0x2C36}, // 'Ⰶ' => 'ⰶ' 7133: {0x2C07, 0x2C37}, // 'Ⰷ' => 'ⰷ' 7130: {0x2C08, 0x2C38}, // 'Ⰸ' => 'ⰸ' 7127: {0x2C09, 0x2C39}, // 'Ⰹ' => 'ⰹ' 7124: {0x2C0A, 0x2C3A}, // 'Ⰺ' => 'ⰺ' 7121: {0x2C0B, 0x2C3B}, // 'Ⰻ' => 'ⰻ' 7118: {0x2C0C, 0x2C3C}, // 'Ⰼ' => 'ⰼ' 7115: {0x2C0D, 0x2C3D}, // 'Ⰽ' => 'ⰽ' 7112: {0x2C0E, 0x2C3E}, // 'Ⰾ' => 'ⰾ' 7109: {0x2C0F, 0x2C3F}, // 'Ⰿ' => 'ⰿ' 7106: {0x2C10, 0x2C40}, // 'Ⱀ' => 'ⱀ' 7103: {0x2C11, 0x2C41}, // 'Ⱁ' => 'ⱁ' 7100: {0x2C12, 0x2C42}, // 'Ⱂ' => 'ⱂ' 7097: {0x2C13, 0x2C43}, // 'Ⱃ' => 'ⱃ' 7094: {0x2C14, 0x2C44}, // 'Ⱄ' => 'ⱄ' 7091: {0x2C15, 0x2C45}, // 'Ⱅ' => 'ⱅ' 7088: {0x2C16, 0x2C46}, // 'Ⱆ' => 'ⱆ' 7085: {0x2C17, 0x2C47}, // 'Ⱇ' => 'ⱇ' 7082: {0x2C18, 0x2C48}, // 'Ⱈ' => 'ⱈ' 7079: {0x2C19, 0x2C49}, // 'Ⱉ' => 'ⱉ' 7076: {0x2C1A, 0x2C4A}, // 'Ⱊ' => 'ⱊ' 7073: {0x2C1B, 0x2C4B}, // 'Ⱋ' => 'ⱋ' 7070: {0x2C1C, 0x2C4C}, // 'Ⱌ' => 'ⱌ' 7067: {0x2C1D, 0x2C4D}, // 'Ⱍ' => 'ⱍ' 7064: {0x2C1E, 0x2C4E}, // 'Ⱎ' => 'ⱎ' 7061: {0x2C1F, 0x2C4F}, // 'Ⱏ' => 'ⱏ' 7058: {0x2C20, 0x2C50}, // 'Ⱐ' => 'ⱐ' 7055: {0x2C21, 0x2C51}, // 'Ⱑ' => 'ⱑ' 7052: {0x2C22, 0x2C52}, // 'Ⱒ' => 'ⱒ' 7049: {0x2C23, 0x2C53}, // 'Ⱓ' => 'ⱓ' 7046: {0x2C24, 0x2C54}, // 'Ⱔ' => 'ⱔ' 7043: {0x2C25, 0x2C55}, // 'Ⱕ' => 'ⱕ' 7040: {0x2C26, 0x2C56}, // 'Ⱖ' => 'ⱖ' 7037: {0x2C27, 0x2C57}, // 'Ⱗ' => 'ⱗ' 7034: {0x2C28, 0x2C58}, // 'Ⱘ' => 'ⱘ' 7031: {0x2C29, 0x2C59}, // 'Ⱙ' => 'ⱙ' 7028: {0x2C2A, 0x2C5A}, // 'Ⱚ' => 'ⱚ' 7025: {0x2C2B, 0x2C5B}, // 'Ⱛ' => 'ⱛ' 7022: {0x2C2C, 0x2C5C}, // 'Ⱜ' => 'ⱜ' 7019: {0x2C2D, 0x2C5D}, // 'Ⱝ' => 'ⱝ' 7016: {0x2C2E, 0x2C5E}, // 'Ⱞ' => 'ⱞ' 7013: {0x2C2F, 0x2C5F}, // 'Ⱟ' => 'ⱟ' 7010: {0x2C00, 0x2C30}, // 'Ⰰ' => 'ⰰ' 7007: {0x2C01, 0x2C31}, // 'Ⰱ' => 'ⰱ' 7004: {0x2C02, 0x2C32}, // 'Ⰲ' => 'ⰲ' 7001: {0x2C03, 0x2C33}, // 'Ⰳ' => 'ⰳ' 6998: {0x2C04, 0x2C34}, // 'Ⰴ' => 'ⰴ' 6995: {0x2C05, 0x2C35}, // 'Ⰵ' => 'ⰵ' 6992: {0x2C06, 0x2C36}, // 'Ⰶ' => 'ⰶ' 6989: {0x2C07, 0x2C37}, // 'Ⰷ' => 'ⰷ' 6986: {0x2C08, 0x2C38}, // 'Ⰸ' => 'ⰸ' 6983: {0x2C09, 0x2C39}, // 'Ⰹ' => 'ⰹ' 6980: {0x2C0A, 0x2C3A}, // 'Ⰺ' => 'ⰺ' 6977: {0x2C0B, 0x2C3B}, // 'Ⰻ' => 'ⰻ' 6974: {0x2C0C, 0x2C3C}, // 'Ⰼ' => 'ⰼ' 6971: {0x2C0D, 0x2C3D}, // 'Ⰽ' => 'ⰽ' 6968: {0x2C0E, 0x2C3E}, // 'Ⰾ' => 'ⰾ' 6965: {0x2C0F, 0x2C3F}, // 'Ⰿ' => 'ⰿ' 6962: {0x2C10, 0x2C40}, // 'Ⱀ' => 'ⱀ' 6959: {0x2C11, 0x2C41}, // 'Ⱁ' => 'ⱁ' 6956: {0x2C12, 0x2C42}, // 'Ⱂ' => 'ⱂ' 6953: {0x2C13, 0x2C43}, // 'Ⱃ' => 'ⱃ' 6950: {0x2C14, 0x2C44}, // 'Ⱄ' => 'ⱄ' 6947: {0x2C15, 0x2C45}, // 'Ⱅ' => 'ⱅ' 6944: {0x2C16, 0x2C46}, // 'Ⱆ' => 'ⱆ' 6941: {0x2C17, 0x2C47}, // 'Ⱇ' => 'ⱇ' 6938: {0x2C18, 0x2C48}, // 'Ⱈ' => 'ⱈ' 6935: {0x2C19, 0x2C49}, // 'Ⱉ' => 'ⱉ' 6932: {0x2C1A, 0x2C4A}, // 'Ⱊ' => 'ⱊ' 6929: {0x2C1B, 0x2C4B}, // 'Ⱋ' => 'ⱋ' 6926: {0x2C1C, 0x2C4C}, // 'Ⱌ' => 'ⱌ' 6923: {0x2C1D, 0x2C4D}, // 'Ⱍ' => 'ⱍ' 6920: {0x2C1E, 0x2C4E}, // 'Ⱎ' => 'ⱎ' 6917: {0x2C1F, 0x2C4F}, // 'Ⱏ' => 'ⱏ' 6914: {0x2C20, 0x2C50}, // 'Ⱐ' => 'ⱐ' 6911: {0x2C21, 0x2C51}, // 'Ⱑ' => 'ⱑ' 6908: {0x2C22, 0x2C52}, // 'Ⱒ' => 'ⱒ' 6905: {0x2C23, 0x2C53}, // 'Ⱓ' => 'ⱓ' 6902: {0x2C24, 0x2C54}, // 'Ⱔ' => 'ⱔ' 6899: {0x2C25, 0x2C55}, // 'Ⱕ' => 'ⱕ' 6896: {0x2C26, 0x2C56}, // 'Ⱖ' => 'ⱖ' 6893: {0x2C27, 0x2C57}, // 'Ⱗ' => 'ⱗ' 6890: {0x2C28, 0x2C58}, // 'Ⱘ' => 'ⱘ' 6887: {0x2C29, 0x2C59}, // 'Ⱙ' => 'ⱙ' 6884: {0x2C2A, 0x2C5A}, // 'Ⱚ' => 'ⱚ' 6881: {0x2C2B, 0x2C5B}, // 'Ⱛ' => 'ⱛ' 6878: {0x2C2C, 0x2C5C}, // 'Ⱜ' => 'ⱜ' 6875: {0x2C2D, 0x2C5D}, // 'Ⱝ' => 'ⱝ' 6872: {0x2C2E, 0x2C5E}, // 'Ⱞ' => 'ⱞ' 6869: {0x2C2F, 0x2C5F}, // 'Ⱟ' => 'ⱟ' 6866: {0x2C60, 0x2C61}, // 'Ⱡ' => 'ⱡ' 6863: {0x2C60, 0x2C61}, // 'Ⱡ' => 'ⱡ' 6860: {0x2C62, 0x026B}, // 'Ɫ' => 'ɫ' 6857: {0x2C63, 0x1D7D}, // 'Ᵽ' => 'ᵽ' 6854: {0x2C64, 0x027D}, // 'Ɽ' => 'ɽ' 6851: {0x023A, 0x2C65}, // 'Ⱥ' => 'ⱥ' 6848: {0x023E, 0x2C66}, // 'Ⱦ' => 'ⱦ' 6845: {0x2C67, 0x2C68}, // 'Ⱨ' => 'ⱨ' 6842: {0x2C67, 0x2C68}, // 'Ⱨ' => 'ⱨ' 6839: {0x2C69, 0x2C6A}, // 'Ⱪ' => 'ⱪ' 6836: {0x2C69, 0x2C6A}, // 'Ⱪ' => 'ⱪ' 6833: {0x2C6B, 0x2C6C}, // 'Ⱬ' => 'ⱬ' 6830: {0x2C6B, 0x2C6C}, // 'Ⱬ' => 'ⱬ' 6827: {0x2C6D, 0x0251}, // 'Ɑ' => 'ɑ' 6824: {0x2C6E, 0x0271}, // 'Ɱ' => 'ɱ' 6821: {0x2C6F, 0x0250}, // 'Ɐ' => 'ɐ' 6818: {0x2C70, 0x0252}, // 'Ɒ' => 'ɒ' 6812: {0x2C72, 0x2C73}, // 'Ⱳ' => 'ⱳ' 6809: {0x2C72, 0x2C73}, // 'Ⱳ' => 'ⱳ' 6803: {0x2C75, 0x2C76}, // 'Ⱶ' => 'ⱶ' 6800: {0x2C75, 0x2C76}, // 'Ⱶ' => 'ⱶ' 6776: {0x2C7E, 0x023F}, // 'Ȿ' => 'ȿ' 6773: {0x2C7F, 0x0240}, // 'Ɀ' => 'ɀ' 6770: {0x2C80, 0x2C81}, // 'Ⲁ' => 'ⲁ' 6767: {0x2C80, 0x2C81}, // 'Ⲁ' => 'ⲁ' 6764: {0x2C82, 0x2C83}, // 'Ⲃ' => 'ⲃ' 6761: {0x2C82, 0x2C83}, // 'Ⲃ' => 'ⲃ' 6758: {0x2C84, 0x2C85}, // 'Ⲅ' => 'ⲅ' 6755: {0x2C84, 0x2C85}, // 'Ⲅ' => 'ⲅ' 6752: {0x2C86, 0x2C87}, // 'Ⲇ' => 'ⲇ' 6749: {0x2C86, 0x2C87}, // 'Ⲇ' => 'ⲇ' 6746: {0x2C88, 0x2C89}, // 'Ⲉ' => 'ⲉ' 6743: {0x2C88, 0x2C89}, // 'Ⲉ' => 'ⲉ' 6740: {0x2C8A, 0x2C8B}, // 'Ⲋ' => 'ⲋ' 6737: {0x2C8A, 0x2C8B}, // 'Ⲋ' => 'ⲋ' 6734: {0x2C8C, 0x2C8D}, // 'Ⲍ' => 'ⲍ' 6731: {0x2C8C, 0x2C8D}, // 'Ⲍ' => 'ⲍ' 6728: {0x2C8E, 0x2C8F}, // 'Ⲏ' => 'ⲏ' 6725: {0x2C8E, 0x2C8F}, // 'Ⲏ' => 'ⲏ' 6722: {0x2C90, 0x2C91}, // 'Ⲑ' => 'ⲑ' 6719: {0x2C90, 0x2C91}, // 'Ⲑ' => 'ⲑ' 6716: {0x2C92, 0x2C93}, // 'Ⲓ' => 'ⲓ' 6713: {0x2C92, 0x2C93}, // 'Ⲓ' => 'ⲓ' 6710: {0x2C94, 0x2C95}, // 'Ⲕ' => 'ⲕ' 6707: {0x2C94, 0x2C95}, // 'Ⲕ' => 'ⲕ' 6704: {0x2C96, 0x2C97}, // 'Ⲗ' => 'ⲗ' 6701: {0x2C96, 0x2C97}, // 'Ⲗ' => 'ⲗ' 6698: {0x2C98, 0x2C99}, // 'Ⲙ' => 'ⲙ' 6695: {0x2C98, 0x2C99}, // 'Ⲙ' => 'ⲙ' 6692: {0x2C9A, 0x2C9B}, // 'Ⲛ' => 'ⲛ' 6689: {0x2C9A, 0x2C9B}, // 'Ⲛ' => 'ⲛ' 6686: {0x2C9C, 0x2C9D}, // 'Ⲝ' => 'ⲝ' 6683: {0x2C9C, 0x2C9D}, // 'Ⲝ' => 'ⲝ' 6680: {0x2C9E, 0x2C9F}, // 'Ⲟ' => 'ⲟ' 6677: {0x2C9E, 0x2C9F}, // 'Ⲟ' => 'ⲟ' 6674: {0x2CA0, 0x2CA1}, // 'Ⲡ' => 'ⲡ' 6671: {0x2CA0, 0x2CA1}, // 'Ⲡ' => 'ⲡ' 6668: {0x2CA2, 0x2CA3}, // 'Ⲣ' => 'ⲣ' 6665: {0x2CA2, 0x2CA3}, // 'Ⲣ' => 'ⲣ' 6662: {0x2CA4, 0x2CA5}, // 'Ⲥ' => 'ⲥ' 6659: {0x2CA4, 0x2CA5}, // 'Ⲥ' => 'ⲥ' 6656: {0x2CA6, 0x2CA7}, // 'Ⲧ' => 'ⲧ' 6653: {0x2CA6, 0x2CA7}, // 'Ⲧ' => 'ⲧ' 6650: {0x2CA8, 0x2CA9}, // 'Ⲩ' => 'ⲩ' 6647: {0x2CA8, 0x2CA9}, // 'Ⲩ' => 'ⲩ' 6644: {0x2CAA, 0x2CAB}, // 'Ⲫ' => 'ⲫ' 6641: {0x2CAA, 0x2CAB}, // 'Ⲫ' => 'ⲫ' 6638: {0x2CAC, 0x2CAD}, // 'Ⲭ' => 'ⲭ' 6635: {0x2CAC, 0x2CAD}, // 'Ⲭ' => 'ⲭ' 6632: {0x2CAE, 0x2CAF}, // 'Ⲯ' => 'ⲯ' 6629: {0x2CAE, 0x2CAF}, // 'Ⲯ' => 'ⲯ' 6626: {0x2CB0, 0x2CB1}, // 'Ⲱ' => 'ⲱ' 6623: {0x2CB0, 0x2CB1}, // 'Ⲱ' => 'ⲱ' 6620: {0x2CB2, 0x2CB3}, // 'Ⲳ' => 'ⲳ' 6617: {0x2CB2, 0x2CB3}, // 'Ⲳ' => 'ⲳ' 6614: {0x2CB4, 0x2CB5}, // 'Ⲵ' => 'ⲵ' 6611: {0x2CB4, 0x2CB5}, // 'Ⲵ' => 'ⲵ' 6608: {0x2CB6, 0x2CB7}, // 'Ⲷ' => 'ⲷ' 6605: {0x2CB6, 0x2CB7}, // 'Ⲷ' => 'ⲷ' 6602: {0x2CB8, 0x2CB9}, // 'Ⲹ' => 'ⲹ' 6599: {0x2CB8, 0x2CB9}, // 'Ⲹ' => 'ⲹ' 6596: {0x2CBA, 0x2CBB}, // 'Ⲻ' => 'ⲻ' 6593: {0x2CBA, 0x2CBB}, // 'Ⲻ' => 'ⲻ' 6590: {0x2CBC, 0x2CBD}, // 'Ⲽ' => 'ⲽ' 6587: {0x2CBC, 0x2CBD}, // 'Ⲽ' => 'ⲽ' 6584: {0x2CBE, 0x2CBF}, // 'Ⲿ' => 'ⲿ' 6581: {0x2CBE, 0x2CBF}, // 'Ⲿ' => 'ⲿ' 6578: {0x2CC0, 0x2CC1}, // 'Ⳁ' => 'ⳁ' 6575: {0x2CC0, 0x2CC1}, // 'Ⳁ' => 'ⳁ' 6572: {0x2CC2, 0x2CC3}, // 'Ⳃ' => 'ⳃ' 6569: {0x2CC2, 0x2CC3}, // 'Ⳃ' => 'ⳃ' 6566: {0x2CC4, 0x2CC5}, // 'Ⳅ' => 'ⳅ' 6563: {0x2CC4, 0x2CC5}, // 'Ⳅ' => 'ⳅ' 6560: {0x2CC6, 0x2CC7}, // 'Ⳇ' => 'ⳇ' 6557: {0x2CC6, 0x2CC7}, // 'Ⳇ' => 'ⳇ' 6554: {0x2CC8, 0x2CC9}, // 'Ⳉ' => 'ⳉ' 6551: {0x2CC8, 0x2CC9}, // 'Ⳉ' => 'ⳉ' 6548: {0x2CCA, 0x2CCB}, // 'Ⳋ' => 'ⳋ' 6545: {0x2CCA, 0x2CCB}, // 'Ⳋ' => 'ⳋ' 6542: {0x2CCC, 0x2CCD}, // 'Ⳍ' => 'ⳍ' 6539: {0x2CCC, 0x2CCD}, // 'Ⳍ' => 'ⳍ' 6536: {0x2CCE, 0x2CCF}, // 'Ⳏ' => 'ⳏ' 6533: {0x2CCE, 0x2CCF}, // 'Ⳏ' => 'ⳏ' 6530: {0x2CD0, 0x2CD1}, // 'Ⳑ' => 'ⳑ' 6527: {0x2CD0, 0x2CD1}, // 'Ⳑ' => 'ⳑ' 6524: {0x2CD2, 0x2CD3}, // 'Ⳓ' => 'ⳓ' 6521: {0x2CD2, 0x2CD3}, // 'Ⳓ' => 'ⳓ' 6518: {0x2CD4, 0x2CD5}, // 'Ⳕ' => 'ⳕ' 6515: {0x2CD4, 0x2CD5}, // 'Ⳕ' => 'ⳕ' 6512: {0x2CD6, 0x2CD7}, // 'Ⳗ' => 'ⳗ' 6509: {0x2CD6, 0x2CD7}, // 'Ⳗ' => 'ⳗ' 6506: {0x2CD8, 0x2CD9}, // 'Ⳙ' => 'ⳙ' 6503: {0x2CD8, 0x2CD9}, // 'Ⳙ' => 'ⳙ' 6500: {0x2CDA, 0x2CDB}, // 'Ⳛ' => 'ⳛ' 6497: {0x2CDA, 0x2CDB}, // 'Ⳛ' => 'ⳛ' 6494: {0x2CDC, 0x2CDD}, // 'Ⳝ' => 'ⳝ' 6491: {0x2CDC, 0x2CDD}, // 'Ⳝ' => 'ⳝ' 6488: {0x2CDE, 0x2CDF}, // 'Ⳟ' => 'ⳟ' 6485: {0x2CDE, 0x2CDF}, // 'Ⳟ' => 'ⳟ' 6482: {0x2CE0, 0x2CE1}, // 'Ⳡ' => 'ⳡ' 6479: {0x2CE0, 0x2CE1}, // 'Ⳡ' => 'ⳡ' 6476: {0x2CE2, 0x2CE3}, // 'Ⳣ' => 'ⳣ' 6473: {0x2CE2, 0x2CE3}, // 'Ⳣ' => 'ⳣ' 6449: {0x2CEB, 0x2CEC}, // 'Ⳬ' => 'ⳬ' 6446: {0x2CEB, 0x2CEC}, // 'Ⳬ' => 'ⳬ' 6443: {0x2CED, 0x2CEE}, // 'Ⳮ' => 'ⳮ' 6440: {0x2CED, 0x2CEE}, // 'Ⳮ' => 'ⳮ' 6428: {0x2CF2, 0x2CF3}, // 'Ⳳ' => 'ⳳ' 6425: {0x2CF2, 0x2CF3}, // 'Ⳳ' => 'ⳳ' 6386: {0x10A0, 0x2D00}, // 'Ⴀ' => 'ⴀ' 6383: {0x10A1, 0x2D01}, // 'Ⴁ' => 'ⴁ' 6380: {0x10A2, 0x2D02}, // 'Ⴂ' => 'ⴂ' 6377: {0x10A3, 0x2D03}, // 'Ⴃ' => 'ⴃ' 6374: {0x10A4, 0x2D04}, // 'Ⴄ' => 'ⴄ' 6371: {0x10A5, 0x2D05}, // 'Ⴅ' => 'ⴅ' 6368: {0x10A6, 0x2D06}, // 'Ⴆ' => 'ⴆ' 6365: {0x10A7, 0x2D07}, // 'Ⴇ' => 'ⴇ' 6362: {0x10A8, 0x2D08}, // 'Ⴈ' => 'ⴈ' 6359: {0x10A9, 0x2D09}, // 'Ⴉ' => 'ⴉ' 6356: {0x10AA, 0x2D0A}, // 'Ⴊ' => 'ⴊ' 6353: {0x10AB, 0x2D0B}, // 'Ⴋ' => 'ⴋ' 6350: {0x10AC, 0x2D0C}, // 'Ⴌ' => 'ⴌ' 6347: {0x10AD, 0x2D0D}, // 'Ⴍ' => 'ⴍ' 6344: {0x10AE, 0x2D0E}, // 'Ⴎ' => 'ⴎ' 6341: {0x10AF, 0x2D0F}, // 'Ⴏ' => 'ⴏ' 6338: {0x10B0, 0x2D10}, // 'Ⴐ' => 'ⴐ' 6335: {0x10B1, 0x2D11}, // 'Ⴑ' => 'ⴑ' 6332: {0x10B2, 0x2D12}, // 'Ⴒ' => 'ⴒ' 6329: {0x10B3, 0x2D13}, // 'Ⴓ' => 'ⴓ' 6326: {0x10B4, 0x2D14}, // 'Ⴔ' => 'ⴔ' 6323: {0x10B5, 0x2D15}, // 'Ⴕ' => 'ⴕ' 6320: {0x10B6, 0x2D16}, // 'Ⴖ' => 'ⴖ' 6317: {0x10B7, 0x2D17}, // 'Ⴗ' => 'ⴗ' 6314: {0x10B8, 0x2D18}, // 'Ⴘ' => 'ⴘ' 6311: {0x10B9, 0x2D19}, // 'Ⴙ' => 'ⴙ' 6308: {0x10BA, 0x2D1A}, // 'Ⴚ' => 'ⴚ' 6305: {0x10BB, 0x2D1B}, // 'Ⴛ' => 'ⴛ' 6302: {0x10BC, 0x2D1C}, // 'Ⴜ' => 'ⴜ' 6299: {0x10BD, 0x2D1D}, // 'Ⴝ' => 'ⴝ' 6296: {0x10BE, 0x2D1E}, // 'Ⴞ' => 'ⴞ' 6293: {0x10BF, 0x2D1F}, // 'Ⴟ' => 'ⴟ' 6290: {0x10C0, 0x2D20}, // 'Ⴠ' => 'ⴠ' 6287: {0x10C1, 0x2D21}, // 'Ⴡ' => 'ⴡ' 6284: {0x10C2, 0x2D22}, // 'Ⴢ' => 'ⴢ' 6281: {0x10C3, 0x2D23}, // 'Ⴣ' => 'ⴣ' 6278: {0x10C4, 0x2D24}, // 'Ⴤ' => 'ⴤ' 6275: {0x10C5, 0x2D25}, // 'Ⴥ' => 'ⴥ' 6269: {0x10C7, 0x2D27}, // 'Ⴧ' => 'ⴧ' 6251: {0x10CD, 0x2D2D}, // 'Ⴭ' => 'ⴭ' 3341: {0xA640, 0xA641}, // 'Ꙁ' => 'ꙁ' 3338: {0xA640, 0xA641}, // 'Ꙁ' => 'ꙁ' 3335: {0xA642, 0xA643}, // 'Ꙃ' => 'ꙃ' 3332: {0xA642, 0xA643}, // 'Ꙃ' => 'ꙃ' 3329: {0xA644, 0xA645}, // 'Ꙅ' => 'ꙅ' 3326: {0xA644, 0xA645}, // 'Ꙅ' => 'ꙅ' 3323: {0xA646, 0xA647}, // 'Ꙇ' => 'ꙇ' 3320: {0xA646, 0xA647}, // 'Ꙇ' => 'ꙇ' 3317: {0xA648, 0xA649}, // 'Ꙉ' => 'ꙉ' 3314: {0xA648, 0xA649}, // 'Ꙉ' => 'ꙉ' 3311: {0xA64A, 0xA64B}, // 'Ꙋ' => 'ꙋ' 3308: {0xA64A, 0xA64B}, // 'Ꙋ' => 'ꙋ' 3305: {0xA64C, 0xA64D}, // 'Ꙍ' => 'ꙍ' 3302: {0xA64C, 0xA64D}, // 'Ꙍ' => 'ꙍ' 3299: {0xA64E, 0xA64F}, // 'Ꙏ' => 'ꙏ' 3296: {0xA64E, 0xA64F}, // 'Ꙏ' => 'ꙏ' 3293: {0xA650, 0xA651}, // 'Ꙑ' => 'ꙑ' 3290: {0xA650, 0xA651}, // 'Ꙑ' => 'ꙑ' 3287: {0xA652, 0xA653}, // 'Ꙓ' => 'ꙓ' 3284: {0xA652, 0xA653}, // 'Ꙓ' => 'ꙓ' 3281: {0xA654, 0xA655}, // 'Ꙕ' => 'ꙕ' 3278: {0xA654, 0xA655}, // 'Ꙕ' => 'ꙕ' 3275: {0xA656, 0xA657}, // 'Ꙗ' => 'ꙗ' 3272: {0xA656, 0xA657}, // 'Ꙗ' => 'ꙗ' 3269: {0xA658, 0xA659}, // 'Ꙙ' => 'ꙙ' 3266: {0xA658, 0xA659}, // 'Ꙙ' => 'ꙙ' 3263: {0xA65A, 0xA65B}, // 'Ꙛ' => 'ꙛ' 3260: {0xA65A, 0xA65B}, // 'Ꙛ' => 'ꙛ' 3257: {0xA65C, 0xA65D}, // 'Ꙝ' => 'ꙝ' 3254: {0xA65C, 0xA65D}, // 'Ꙝ' => 'ꙝ' 3251: {0xA65E, 0xA65F}, // 'Ꙟ' => 'ꙟ' 3248: {0xA65E, 0xA65F}, // 'Ꙟ' => 'ꙟ' 3245: {0xA660, 0xA661}, // 'Ꙡ' => 'ꙡ' 3242: {0xA660, 0xA661}, // 'Ꙡ' => 'ꙡ' 3239: {0xA662, 0xA663}, // 'Ꙣ' => 'ꙣ' 3236: {0xA662, 0xA663}, // 'Ꙣ' => 'ꙣ' 3233: {0xA664, 0xA665}, // 'Ꙥ' => 'ꙥ' 3230: {0xA664, 0xA665}, // 'Ꙥ' => 'ꙥ' 3227: {0xA666, 0xA667}, // 'Ꙧ' => 'ꙧ' 3224: {0xA666, 0xA667}, // 'Ꙧ' => 'ꙧ' 3221: {0xA668, 0xA669}, // 'Ꙩ' => 'ꙩ' 3218: {0xA668, 0xA669}, // 'Ꙩ' => 'ꙩ' 3215: {0xA66A, 0xA66B}, // 'Ꙫ' => 'ꙫ' 3212: {0xA66A, 0xA66B}, // 'Ꙫ' => 'ꙫ' 3209: {0xA66C, 0xA66D}, // 'Ꙭ' => 'ꙭ' 3206: {0xA66C, 0xA66D}, // 'Ꙭ' => 'ꙭ' 3149: {0xA680, 0xA681}, // 'Ꚁ' => 'ꚁ' 3146: {0xA680, 0xA681}, // 'Ꚁ' => 'ꚁ' 3143: {0xA682, 0xA683}, // 'Ꚃ' => 'ꚃ' 3140: {0xA682, 0xA683}, // 'Ꚃ' => 'ꚃ' 3137: {0xA684, 0xA685}, // 'Ꚅ' => 'ꚅ' 3134: {0xA684, 0xA685}, // 'Ꚅ' => 'ꚅ' 3131: {0xA686, 0xA687}, // 'Ꚇ' => 'ꚇ' 3128: {0xA686, 0xA687}, // 'Ꚇ' => 'ꚇ' 3125: {0xA688, 0xA689}, // 'Ꚉ' => 'ꚉ' 3122: {0xA688, 0xA689}, // 'Ꚉ' => 'ꚉ' 3119: {0xA68A, 0xA68B}, // 'Ꚋ' => 'ꚋ' 3116: {0xA68A, 0xA68B}, // 'Ꚋ' => 'ꚋ' 3113: {0xA68C, 0xA68D}, // 'Ꚍ' => 'ꚍ' 3110: {0xA68C, 0xA68D}, // 'Ꚍ' => 'ꚍ' 3107: {0xA68E, 0xA68F}, // 'Ꚏ' => 'ꚏ' 3104: {0xA68E, 0xA68F}, // 'Ꚏ' => 'ꚏ' 3101: {0xA690, 0xA691}, // 'Ꚑ' => 'ꚑ' 3098: {0xA690, 0xA691}, // 'Ꚑ' => 'ꚑ' 3095: {0xA692, 0xA693}, // 'Ꚓ' => 'ꚓ' 3092: {0xA692, 0xA693}, // 'Ꚓ' => 'ꚓ' 3089: {0xA694, 0xA695}, // 'Ꚕ' => 'ꚕ' 3086: {0xA694, 0xA695}, // 'Ꚕ' => 'ꚕ' 3083: {0xA696, 0xA697}, // 'Ꚗ' => 'ꚗ' 3080: {0xA696, 0xA697}, // 'Ꚗ' => 'ꚗ' 3077: {0xA698, 0xA699}, // 'Ꚙ' => 'ꚙ' 3074: {0xA698, 0xA699}, // 'Ꚙ' => 'ꚙ' 3071: {0xA69A, 0xA69B}, // 'Ꚛ' => 'ꚛ' 3068: {0xA69A, 0xA69B}, // 'Ꚛ' => 'ꚛ' 2663: {0xA722, 0xA723}, // 'Ꜣ' => 'ꜣ' 2660: {0xA722, 0xA723}, // 'Ꜣ' => 'ꜣ' 2657: {0xA724, 0xA725}, // 'Ꜥ' => 'ꜥ' 2654: {0xA724, 0xA725}, // 'Ꜥ' => 'ꜥ' 2651: {0xA726, 0xA727}, // 'Ꜧ' => 'ꜧ' 2648: {0xA726, 0xA727}, // 'Ꜧ' => 'ꜧ' 2645: {0xA728, 0xA729}, // 'Ꜩ' => 'ꜩ' 2642: {0xA728, 0xA729}, // 'Ꜩ' => 'ꜩ' 2639: {0xA72A, 0xA72B}, // 'Ꜫ' => 'ꜫ' 2636: {0xA72A, 0xA72B}, // 'Ꜫ' => 'ꜫ' 2633: {0xA72C, 0xA72D}, // 'Ꜭ' => 'ꜭ' 2630: {0xA72C, 0xA72D}, // 'Ꜭ' => 'ꜭ' 2627: {0xA72E, 0xA72F}, // 'Ꜯ' => 'ꜯ' 2624: {0xA72E, 0xA72F}, // 'Ꜯ' => 'ꜯ' 2615: {0xA732, 0xA733}, // 'Ꜳ' => 'ꜳ' 2612: {0xA732, 0xA733}, // 'Ꜳ' => 'ꜳ' 2609: {0xA734, 0xA735}, // 'Ꜵ' => 'ꜵ' 2606: {0xA734, 0xA735}, // 'Ꜵ' => 'ꜵ' 2603: {0xA736, 0xA737}, // 'Ꜷ' => 'ꜷ' 2600: {0xA736, 0xA737}, // 'Ꜷ' => 'ꜷ' 2597: {0xA738, 0xA739}, // 'Ꜹ' => 'ꜹ' 2594: {0xA738, 0xA739}, // 'Ꜹ' => 'ꜹ' 2591: {0xA73A, 0xA73B}, // 'Ꜻ' => 'ꜻ' 2588: {0xA73A, 0xA73B}, // 'Ꜻ' => 'ꜻ' 2585: {0xA73C, 0xA73D}, // 'Ꜽ' => 'ꜽ' 2582: {0xA73C, 0xA73D}, // 'Ꜽ' => 'ꜽ' 2579: {0xA73E, 0xA73F}, // 'Ꜿ' => 'ꜿ' 2576: {0xA73E, 0xA73F}, // 'Ꜿ' => 'ꜿ' 2573: {0xA740, 0xA741}, // 'Ꝁ' => 'ꝁ' 2570: {0xA740, 0xA741}, // 'Ꝁ' => 'ꝁ' 2567: {0xA742, 0xA743}, // 'Ꝃ' => 'ꝃ' 2564: {0xA742, 0xA743}, // 'Ꝃ' => 'ꝃ' 2561: {0xA744, 0xA745}, // 'Ꝅ' => 'ꝅ' 2558: {0xA744, 0xA745}, // 'Ꝅ' => 'ꝅ' 2555: {0xA746, 0xA747}, // 'Ꝇ' => 'ꝇ' 2552: {0xA746, 0xA747}, // 'Ꝇ' => 'ꝇ' 2549: {0xA748, 0xA749}, // 'Ꝉ' => 'ꝉ' 2546: {0xA748, 0xA749}, // 'Ꝉ' => 'ꝉ' 2543: {0xA74A, 0xA74B}, // 'Ꝋ' => 'ꝋ' 2540: {0xA74A, 0xA74B}, // 'Ꝋ' => 'ꝋ' 2537: {0xA74C, 0xA74D}, // 'Ꝍ' => 'ꝍ' 2534: {0xA74C, 0xA74D}, // 'Ꝍ' => 'ꝍ' 2531: {0xA74E, 0xA74F}, // 'Ꝏ' => 'ꝏ' 2528: {0xA74E, 0xA74F}, // 'Ꝏ' => 'ꝏ' 2525: {0xA750, 0xA751}, // 'Ꝑ' => 'ꝑ' 2522: {0xA750, 0xA751}, // 'Ꝑ' => 'ꝑ' 2519: {0xA752, 0xA753}, // 'Ꝓ' => 'ꝓ' 2516: {0xA752, 0xA753}, // 'Ꝓ' => 'ꝓ' 2513: {0xA754, 0xA755}, // 'Ꝕ' => 'ꝕ' 2510: {0xA754, 0xA755}, // 'Ꝕ' => 'ꝕ' 2507: {0xA756, 0xA757}, // 'Ꝗ' => 'ꝗ' 2504: {0xA756, 0xA757}, // 'Ꝗ' => 'ꝗ' 2501: {0xA758, 0xA759}, // 'Ꝙ' => 'ꝙ' 2498: {0xA758, 0xA759}, // 'Ꝙ' => 'ꝙ' 2495: {0xA75A, 0xA75B}, // 'Ꝛ' => 'ꝛ' 2492: {0xA75A, 0xA75B}, // 'Ꝛ' => 'ꝛ' 2489: {0xA75C, 0xA75D}, // 'Ꝝ' => 'ꝝ' 2486: {0xA75C, 0xA75D}, // 'Ꝝ' => 'ꝝ' 2483: {0xA75E, 0xA75F}, // 'Ꝟ' => 'ꝟ' 2480: {0xA75E, 0xA75F}, // 'Ꝟ' => 'ꝟ' 2477: {0xA760, 0xA761}, // 'Ꝡ' => 'ꝡ' 2474: {0xA760, 0xA761}, // 'Ꝡ' => 'ꝡ' 2471: {0xA762, 0xA763}, // 'Ꝣ' => 'ꝣ' 2468: {0xA762, 0xA763}, // 'Ꝣ' => 'ꝣ' 2465: {0xA764, 0xA765}, // 'Ꝥ' => 'ꝥ' 2462: {0xA764, 0xA765}, // 'Ꝥ' => 'ꝥ' 2459: {0xA766, 0xA767}, // 'Ꝧ' => 'ꝧ' 2456: {0xA766, 0xA767}, // 'Ꝧ' => 'ꝧ' 2453: {0xA768, 0xA769}, // 'Ꝩ' => 'ꝩ' 2450: {0xA768, 0xA769}, // 'Ꝩ' => 'ꝩ' 2447: {0xA76A, 0xA76B}, // 'Ꝫ' => 'ꝫ' 2444: {0xA76A, 0xA76B}, // 'Ꝫ' => 'ꝫ' 2441: {0xA76C, 0xA76D}, // 'Ꝭ' => 'ꝭ' 2438: {0xA76C, 0xA76D}, // 'Ꝭ' => 'ꝭ' 2435: {0xA76E, 0xA76F}, // 'Ꝯ' => 'ꝯ' 2432: {0xA76E, 0xA76F}, // 'Ꝯ' => 'ꝯ' 2402: {0xA779, 0xA77A}, // 'Ꝺ' => 'ꝺ' 2399: {0xA779, 0xA77A}, // 'Ꝺ' => 'ꝺ' 2396: {0xA77B, 0xA77C}, // 'Ꝼ' => 'ꝼ' 2393: {0xA77B, 0xA77C}, // 'Ꝼ' => 'ꝼ' 2390: {0xA77D, 0x1D79}, // 'Ᵹ' => 'ᵹ' 2387: {0xA77E, 0xA77F}, // 'Ꝿ' => 'ꝿ' 2384: {0xA77E, 0xA77F}, // 'Ꝿ' => 'ꝿ' 2381: {0xA780, 0xA781}, // 'Ꞁ' => 'ꞁ' 2378: {0xA780, 0xA781}, // 'Ꞁ' => 'ꞁ' 2375: {0xA782, 0xA783}, // 'Ꞃ' => 'ꞃ' 2372: {0xA782, 0xA783}, // 'Ꞃ' => 'ꞃ' 2369: {0xA784, 0xA785}, // 'Ꞅ' => 'ꞅ' 2366: {0xA784, 0xA785}, // 'Ꞅ' => 'ꞅ' 2363: {0xA786, 0xA787}, // 'Ꞇ' => 'ꞇ' 2360: {0xA786, 0xA787}, // 'Ꞇ' => 'ꞇ' 2348: {0xA78B, 0xA78C}, // 'Ꞌ' => 'ꞌ' 2345: {0xA78B, 0xA78C}, // 'Ꞌ' => 'ꞌ' 2342: {0xA78D, 0x0265}, // 'Ɥ' => 'ɥ' 2333: {0xA790, 0xA791}, // 'Ꞑ' => 'ꞑ' 2330: {0xA790, 0xA791}, // 'Ꞑ' => 'ꞑ' 2327: {0xA792, 0xA793}, // 'Ꞓ' => 'ꞓ' 2324: {0xA792, 0xA793}, // 'Ꞓ' => 'ꞓ' 2321: {0xA7C4, 0xA794}, // 'Ꞔ' => 'ꞔ' 2315: {0xA796, 0xA797}, // 'Ꞗ' => 'ꞗ' 2312: {0xA796, 0xA797}, // 'Ꞗ' => 'ꞗ' 2309: {0xA798, 0xA799}, // 'Ꞙ' => 'ꞙ' 2306: {0xA798, 0xA799}, // 'Ꞙ' => 'ꞙ' 2303: {0xA79A, 0xA79B}, // 'Ꞛ' => 'ꞛ' 2300: {0xA79A, 0xA79B}, // 'Ꞛ' => 'ꞛ' 2297: {0xA79C, 0xA79D}, // 'Ꞝ' => 'ꞝ' 2294: {0xA79C, 0xA79D}, // 'Ꞝ' => 'ꞝ' 2291: {0xA79E, 0xA79F}, // 'Ꞟ' => 'ꞟ' 2288: {0xA79E, 0xA79F}, // 'Ꞟ' => 'ꞟ' 2285: {0xA7A0, 0xA7A1}, // 'Ꞡ' => 'ꞡ' 2282: {0xA7A0, 0xA7A1}, // 'Ꞡ' => 'ꞡ' 2279: {0xA7A2, 0xA7A3}, // 'Ꞣ' => 'ꞣ' 2276: {0xA7A2, 0xA7A3}, // 'Ꞣ' => 'ꞣ' 2273: {0xA7A4, 0xA7A5}, // 'Ꞥ' => 'ꞥ' 2270: {0xA7A4, 0xA7A5}, // 'Ꞥ' => 'ꞥ' 2267: {0xA7A6, 0xA7A7}, // 'Ꞧ' => 'ꞧ' 2264: {0xA7A6, 0xA7A7}, // 'Ꞧ' => 'ꞧ' 2261: {0xA7A8, 0xA7A9}, // 'Ꞩ' => 'ꞩ' 2258: {0xA7A8, 0xA7A9}, // 'Ꞩ' => 'ꞩ' 2255: {0xA7AA, 0x0266}, // 'Ɦ' => 'ɦ' 2252: {0xA7AB, 0x025C}, // 'Ɜ' => 'ɜ' 2249: {0xA7AC, 0x0261}, // 'Ɡ' => 'ɡ' 2246: {0xA7AD, 0x026C}, // 'Ɬ' => 'ɬ' 2243: {0xA7AE, 0x026A}, // 'Ɪ' => 'ɪ' 2237: {0xA7B0, 0x029E}, // 'Ʞ' => 'ʞ' 2234: {0xA7B1, 0x0287}, // 'Ʇ' => 'ʇ' 2231: {0xA7B2, 0x029D}, // 'Ʝ' => 'ʝ' 2228: {0xA7B3, 0xAB53}, // 'Ꭓ' => 'ꭓ' 2225: {0xA7B4, 0xA7B5}, // 'Ꞵ' => 'ꞵ' 2222: {0xA7B4, 0xA7B5}, // 'Ꞵ' => 'ꞵ' 2219: {0xA7B6, 0xA7B7}, // 'Ꞷ' => 'ꞷ' 2216: {0xA7B6, 0xA7B7}, // 'Ꞷ' => 'ꞷ' 2213: {0xA7B8, 0xA7B9}, // 'Ꞹ' => 'ꞹ' 2210: {0xA7B8, 0xA7B9}, // 'Ꞹ' => 'ꞹ' 2207: {0xA7BA, 0xA7BB}, // 'Ꞻ' => 'ꞻ' 2204: {0xA7BA, 0xA7BB}, // 'Ꞻ' => 'ꞻ' 2201: {0xA7BC, 0xA7BD}, // 'Ꞽ' => 'ꞽ' 2198: {0xA7BC, 0xA7BD}, // 'Ꞽ' => 'ꞽ' 2195: {0xA7BE, 0xA7BF}, // 'Ꞿ' => 'ꞿ' 2192: {0xA7BE, 0xA7BF}, // 'Ꞿ' => 'ꞿ' 2189: {0xA7C0, 0xA7C1}, // 'Ꟁ' => 'ꟁ' 2186: {0xA7C0, 0xA7C1}, // 'Ꟁ' => 'ꟁ' 2183: {0xA7C2, 0xA7C3}, // 'Ꟃ' => 'ꟃ' 2180: {0xA7C2, 0xA7C3}, // 'Ꟃ' => 'ꟃ' 2177: {0xA7C4, 0xA794}, // 'Ꞔ' => 'ꞔ' 2174: {0xA7C5, 0x0282}, // 'Ʂ' => 'ʂ' 2171: {0xA7C6, 0x1D8E}, // 'Ᶎ' => 'ᶎ' 2168: {0xA7C7, 0xA7C8}, // 'Ꟈ' => 'ꟈ' 2165: {0xA7C7, 0xA7C8}, // 'Ꟈ' => 'ꟈ' 2162: {0xA7C9, 0xA7CA}, // 'Ꟊ' => 'ꟊ' 2159: {0xA7C9, 0xA7CA}, // 'Ꟊ' => 'ꟊ' 2141: {0xA7D0, 0xA7D1}, // 'Ꟑ' => 'ꟑ' 2138: {0xA7D0, 0xA7D1}, // 'Ꟑ' => 'ꟑ' 2123: {0xA7D6, 0xA7D7}, // 'Ꟗ' => 'ꟗ' 2120: {0xA7D6, 0xA7D7}, // 'Ꟗ' => 'ꟗ' 2117: {0xA7D8, 0xA7D9}, // 'Ꟙ' => 'ꟙ' 2114: {0xA7D8, 0xA7D9}, // 'Ꟙ' => 'ꟙ' 2030: {0xA7F5, 0xA7F6}, // 'Ꟶ' => 'ꟶ' 2027: {0xA7F5, 0xA7F6}, // 'Ꟶ' => 'ꟶ' 7635: {0xA7B3, 0xAB53}, // 'Ꭓ' => 'ꭓ' 7548: {0x13A0, 0xAB70}, // 'Ꭰ' => 'ꭰ' 7545: {0x13A1, 0xAB71}, // 'Ꭱ' => 'ꭱ' 7542: {0x13A2, 0xAB72}, // 'Ꭲ' => 'ꭲ' 7539: {0x13A3, 0xAB73}, // 'Ꭳ' => 'ꭳ' 7536: {0x13A4, 0xAB74}, // 'Ꭴ' => 'ꭴ' 7533: {0x13A5, 0xAB75}, // 'Ꭵ' => 'ꭵ' 7530: {0x13A6, 0xAB76}, // 'Ꭶ' => 'ꭶ' 7527: {0x13A7, 0xAB77}, // 'Ꭷ' => 'ꭷ' 7524: {0x13A8, 0xAB78}, // 'Ꭸ' => 'ꭸ' 7521: {0x13A9, 0xAB79}, // 'Ꭹ' => 'ꭹ' 7518: {0x13AA, 0xAB7A}, // 'Ꭺ' => 'ꭺ' 7515: {0x13AB, 0xAB7B}, // 'Ꭻ' => 'ꭻ' 7512: {0x13AC, 0xAB7C}, // 'Ꭼ' => 'ꭼ' 7509: {0x13AD, 0xAB7D}, // 'Ꭽ' => 'ꭽ' 7506: {0x13AE, 0xAB7E}, // 'Ꭾ' => 'ꭾ' 7503: {0x13AF, 0xAB7F}, // 'Ꭿ' => 'ꭿ' 7500: {0x13B0, 0xAB80}, // 'Ꮀ' => 'ꮀ' 7497: {0x13B1, 0xAB81}, // 'Ꮁ' => 'ꮁ' 7494: {0x13B2, 0xAB82}, // 'Ꮂ' => 'ꮂ' 7491: {0x13B3, 0xAB83}, // 'Ꮃ' => 'ꮃ' 7488: {0x13B4, 0xAB84}, // 'Ꮄ' => 'ꮄ' 7485: {0x13B5, 0xAB85}, // 'Ꮅ' => 'ꮅ' 7482: {0x13B6, 0xAB86}, // 'Ꮆ' => 'ꮆ' 7479: {0x13B7, 0xAB87}, // 'Ꮇ' => 'ꮇ' 7476: {0x13B8, 0xAB88}, // 'Ꮈ' => 'ꮈ' 7473: {0x13B9, 0xAB89}, // 'Ꮉ' => 'ꮉ' 7470: {0x13BA, 0xAB8A}, // 'Ꮊ' => 'ꮊ' 7467: {0x13BB, 0xAB8B}, // 'Ꮋ' => 'ꮋ' 7464: {0x13BC, 0xAB8C}, // 'Ꮌ' => 'ꮌ' 7461: {0x13BD, 0xAB8D}, // 'Ꮍ' => 'ꮍ' 7458: {0x13BE, 0xAB8E}, // 'Ꮎ' => 'ꮎ' 7455: {0x13BF, 0xAB8F}, // 'Ꮏ' => 'ꮏ' 7452: {0x13C0, 0xAB90}, // 'Ꮐ' => 'ꮐ' 7449: {0x13C1, 0xAB91}, // 'Ꮑ' => 'ꮑ' 7446: {0x13C2, 0xAB92}, // 'Ꮒ' => 'ꮒ' 7443: {0x13C3, 0xAB93}, // 'Ꮓ' => 'ꮓ' 7440: {0x13C4, 0xAB94}, // 'Ꮔ' => 'ꮔ' 7437: {0x13C5, 0xAB95}, // 'Ꮕ' => 'ꮕ' 7434: {0x13C6, 0xAB96}, // 'Ꮖ' => 'ꮖ' 7431: {0x13C7, 0xAB97}, // 'Ꮗ' => 'ꮗ' 7428: {0x13C8, 0xAB98}, // 'Ꮘ' => 'ꮘ' 7425: {0x13C9, 0xAB99}, // 'Ꮙ' => 'ꮙ' 7422: {0x13CA, 0xAB9A}, // 'Ꮚ' => 'ꮚ' 7419: {0x13CB, 0xAB9B}, // 'Ꮛ' => 'ꮛ' 7416: {0x13CC, 0xAB9C}, // 'Ꮜ' => 'ꮜ' 7413: {0x13CD, 0xAB9D}, // 'Ꮝ' => 'ꮝ' 7410: {0x13CE, 0xAB9E}, // 'Ꮞ' => 'ꮞ' 7407: {0x13CF, 0xAB9F}, // 'Ꮟ' => 'ꮟ' 7404: {0x13D0, 0xABA0}, // 'Ꮠ' => 'ꮠ' 7401: {0x13D1, 0xABA1}, // 'Ꮡ' => 'ꮡ' 7398: {0x13D2, 0xABA2}, // 'Ꮢ' => 'ꮢ' 7395: {0x13D3, 0xABA3}, // 'Ꮣ' => 'ꮣ' 7392: {0x13D4, 0xABA4}, // 'Ꮤ' => 'ꮤ' 7389: {0x13D5, 0xABA5}, // 'Ꮥ' => 'ꮥ' 7386: {0x13D6, 0xABA6}, // 'Ꮦ' => 'ꮦ' 7383: {0x13D7, 0xABA7}, // 'Ꮧ' => 'ꮧ' 7380: {0x13D8, 0xABA8}, // 'Ꮨ' => 'ꮨ' 7377: {0x13D9, 0xABA9}, // 'Ꮩ' => 'ꮩ' 7374: {0x13DA, 0xABAA}, // 'Ꮪ' => 'ꮪ' 7371: {0x13DB, 0xABAB}, // 'Ꮫ' => 'ꮫ' 7368: {0x13DC, 0xABAC}, // 'Ꮬ' => 'ꮬ' 7365: {0x13DD, 0xABAD}, // 'Ꮭ' => 'ꮭ' 7362: {0x13DE, 0xABAE}, // 'Ꮮ' => 'ꮮ' 7359: {0x13DF, 0xABAF}, // 'Ꮯ' => 'ꮯ' 7356: {0x13E0, 0xABB0}, // 'Ꮰ' => 'ꮰ' 7353: {0x13E1, 0xABB1}, // 'Ꮱ' => 'ꮱ' 7350: {0x13E2, 0xABB2}, // 'Ꮲ' => 'ꮲ' 7347: {0x13E3, 0xABB3}, // 'Ꮳ' => 'ꮳ' 7344: {0x13E4, 0xABB4}, // 'Ꮴ' => 'ꮴ' 7341: {0x13E5, 0xABB5}, // 'Ꮵ' => 'ꮵ' 7338: {0x13E6, 0xABB6}, // 'Ꮶ' => 'ꮶ' 7335: {0x13E7, 0xABB7}, // 'Ꮷ' => 'ꮷ' 7332: {0x13E8, 0xABB8}, // 'Ꮸ' => 'ꮸ' 7329: {0x13E9, 0xABB9}, // 'Ꮹ' => 'ꮹ' 7326: {0x13EA, 0xABBA}, // 'Ꮺ' => 'ꮺ' 7323: {0x13EB, 0xABBB}, // 'Ꮻ' => 'ꮻ' 7320: {0x13EC, 0xABBC}, // 'Ꮼ' => 'ꮼ' 7317: {0x13ED, 0xABBD}, // 'Ꮽ' => 'ꮽ' 7314: {0x13EE, 0xABBE}, // 'Ꮾ' => 'ꮾ' 7311: {0x13EF, 0xABBF}, // 'Ꮿ' => 'ꮿ' 591: {0xFF21, 0xFF41}, // 'A' => 'a' 588: {0xFF22, 0xFF42}, // 'B' => 'b' 585: {0xFF23, 0xFF43}, // 'C' => 'c' 582: {0xFF24, 0xFF44}, // 'D' => 'd' 579: {0xFF25, 0xFF45}, // 'E' => 'e' 576: {0xFF26, 0xFF46}, // 'F' => 'f' 573: {0xFF27, 0xFF47}, // 'G' => 'g' 570: {0xFF28, 0xFF48}, // 'H' => 'h' 567: {0xFF29, 0xFF49}, // 'I' => 'i' 564: {0xFF2A, 0xFF4A}, // 'J' => 'j' 561: {0xFF2B, 0xFF4B}, // 'K' => 'k' 558: {0xFF2C, 0xFF4C}, // 'L' => 'l' 555: {0xFF2D, 0xFF4D}, // 'M' => 'm' 552: {0xFF2E, 0xFF4E}, // 'N' => 'n' 549: {0xFF2F, 0xFF4F}, // 'O' => 'o' 546: {0xFF30, 0xFF50}, // 'P' => 'p' 543: {0xFF31, 0xFF51}, // 'Q' => 'q' 540: {0xFF32, 0xFF52}, // 'R' => 'r' 537: {0xFF33, 0xFF53}, // 'S' => 's' 534: {0xFF34, 0xFF54}, // 'T' => 't' 531: {0xFF35, 0xFF55}, // 'U' => 'u' 528: {0xFF36, 0xFF56}, // 'V' => 'v' 525: {0xFF37, 0xFF57}, // 'W' => 'w' 522: {0xFF38, 0xFF58}, // 'X' => 'x' 519: {0xFF39, 0xFF59}, // 'Y' => 'y' 516: {0xFF3A, 0xFF5A}, // 'Z' => 'z' 495: {0xFF21, 0xFF41}, // 'A' => 'a' 492: {0xFF22, 0xFF42}, // 'B' => 'b' 489: {0xFF23, 0xFF43}, // 'C' => 'c' 486: {0xFF24, 0xFF44}, // 'D' => 'd' 483: {0xFF25, 0xFF45}, // 'E' => 'e' 480: {0xFF26, 0xFF46}, // 'F' => 'f' 477: {0xFF27, 0xFF47}, // 'G' => 'g' 474: {0xFF28, 0xFF48}, // 'H' => 'h' 471: {0xFF29, 0xFF49}, // 'I' => 'i' 468: {0xFF2A, 0xFF4A}, // 'J' => 'j' 465: {0xFF2B, 0xFF4B}, // 'K' => 'k' 462: {0xFF2C, 0xFF4C}, // 'L' => 'l' 459: {0xFF2D, 0xFF4D}, // 'M' => 'm' 456: {0xFF2E, 0xFF4E}, // 'N' => 'n' 453: {0xFF2F, 0xFF4F}, // 'O' => 'o' 450: {0xFF30, 0xFF50}, // 'P' => 'p' 447: {0xFF31, 0xFF51}, // 'Q' => 'q' 444: {0xFF32, 0xFF52}, // 'R' => 'r' 441: {0xFF33, 0xFF53}, // 'S' => 's' 438: {0xFF34, 0xFF54}, // 'T' => 't' 435: {0xFF35, 0xFF55}, // 'U' => 'u' 432: {0xFF36, 0xFF56}, // 'V' => 'v' 429: {0xFF37, 0xFF57}, // 'W' => 'w' 426: {0xFF38, 0xFF58}, // 'X' => 'x' 423: {0xFF39, 0xFF59}, // 'Y' => 'y' 420: {0xFF3A, 0xFF5A}, // 'Z' => 'z' 5041: {0x10400, 0x10428}, // '𐐀' => '𐐨' 5038: {0x10401, 0x10429}, // '𐐁' => '𐐩' 5035: {0x10402, 0x1042A}, // '𐐂' => '𐐪' 5032: {0x10403, 0x1042B}, // '𐐃' => '𐐫' 5029: {0x10404, 0x1042C}, // '𐐄' => '𐐬' 5026: {0x10405, 0x1042D}, // '𐐅' => '𐐭' 5023: {0x10406, 0x1042E}, // '𐐆' => '𐐮' 5020: {0x10407, 0x1042F}, // '𐐇' => '𐐯' 5017: {0x10408, 0x10430}, // '𐐈' => '𐐰' 5014: {0x10409, 0x10431}, // '𐐉' => '𐐱' 5011: {0x1040A, 0x10432}, // '𐐊' => '𐐲' 5008: {0x1040B, 0x10433}, // '𐐋' => '𐐳' 5005: {0x1040C, 0x10434}, // '𐐌' => '𐐴' 5002: {0x1040D, 0x10435}, // '𐐍' => '𐐵' 4999: {0x1040E, 0x10436}, // '𐐎' => '𐐶' 4996: {0x1040F, 0x10437}, // '𐐏' => '𐐷' 4993: {0x10410, 0x10438}, // '𐐐' => '𐐸' 4990: {0x10411, 0x10439}, // '𐐑' => '𐐹' 4987: {0x10412, 0x1043A}, // '𐐒' => '𐐺' 4984: {0x10413, 0x1043B}, // '𐐓' => '𐐻' 4981: {0x10414, 0x1043C}, // '𐐔' => '𐐼' 4978: {0x10415, 0x1043D}, // '𐐕' => '𐐽' 4975: {0x10416, 0x1043E}, // '𐐖' => '𐐾' 4972: {0x10417, 0x1043F}, // '𐐗' => '𐐿' 4969: {0x10418, 0x10440}, // '𐐘' => '𐑀' 4966: {0x10419, 0x10441}, // '𐐙' => '𐑁' 4963: {0x1041A, 0x10442}, // '𐐚' => '𐑂' 4960: {0x1041B, 0x10443}, // '𐐛' => '𐑃' 4957: {0x1041C, 0x10444}, // '𐐜' => '𐑄' 4954: {0x1041D, 0x10445}, // '𐐝' => '𐑅' 4951: {0x1041E, 0x10446}, // '𐐞' => '𐑆' 4948: {0x1041F, 0x10447}, // '𐐟' => '𐑇' 4945: {0x10420, 0x10448}, // '𐐠' => '𐑈' 4942: {0x10421, 0x10449}, // '𐐡' => '𐑉' 4939: {0x10422, 0x1044A}, // '𐐢' => '𐑊' 4936: {0x10423, 0x1044B}, // '𐐣' => '𐑋' 4933: {0x10424, 0x1044C}, // '𐐤' => '𐑌' 4930: {0x10425, 0x1044D}, // '𐐥' => '𐑍' 4927: {0x10426, 0x1044E}, // '𐐦' => '𐑎' 4924: {0x10427, 0x1044F}, // '𐐧' => '𐑏' 4921: {0x10400, 0x10428}, // '𐐀' => '𐐨' 4918: {0x10401, 0x10429}, // '𐐁' => '𐐩' 4915: {0x10402, 0x1042A}, // '𐐂' => '𐐪' 4912: {0x10403, 0x1042B}, // '𐐃' => '𐐫' 4909: {0x10404, 0x1042C}, // '𐐄' => '𐐬' 4906: {0x10405, 0x1042D}, // '𐐅' => '𐐭' 4903: {0x10406, 0x1042E}, // '𐐆' => '𐐮' 4900: {0x10407, 0x1042F}, // '𐐇' => '𐐯' 4897: {0x10408, 0x10430}, // '𐐈' => '𐐰' 4894: {0x10409, 0x10431}, // '𐐉' => '𐐱' 4891: {0x1040A, 0x10432}, // '𐐊' => '𐐲' 4888: {0x1040B, 0x10433}, // '𐐋' => '𐐳' 4885: {0x1040C, 0x10434}, // '𐐌' => '𐐴' 4882: {0x1040D, 0x10435}, // '𐐍' => '𐐵' 4879: {0x1040E, 0x10436}, // '𐐎' => '𐐶' 4876: {0x1040F, 0x10437}, // '𐐏' => '𐐷' 4873: {0x10410, 0x10438}, // '𐐐' => '𐐸' 4870: {0x10411, 0x10439}, // '𐐑' => '𐐹' 4867: {0x10412, 0x1043A}, // '𐐒' => '𐐺' 4864: {0x10413, 0x1043B}, // '𐐓' => '𐐻' 4861: {0x10414, 0x1043C}, // '𐐔' => '𐐼' 4858: {0x10415, 0x1043D}, // '𐐕' => '𐐽' 4855: {0x10416, 0x1043E}, // '𐐖' => '𐐾' 4852: {0x10417, 0x1043F}, // '𐐗' => '𐐿' 4849: {0x10418, 0x10440}, // '𐐘' => '𐑀' 4846: {0x10419, 0x10441}, // '𐐙' => '𐑁' 4843: {0x1041A, 0x10442}, // '𐐚' => '𐑂' 4840: {0x1041B, 0x10443}, // '𐐛' => '𐑃' 4837: {0x1041C, 0x10444}, // '𐐜' => '𐑄' 4834: {0x1041D, 0x10445}, // '𐐝' => '𐑅' 4831: {0x1041E, 0x10446}, // '𐐞' => '𐑆' 4828: {0x1041F, 0x10447}, // '𐐟' => '𐑇' 4825: {0x10420, 0x10448}, // '𐐠' => '𐑈' 4822: {0x10421, 0x10449}, // '𐐡' => '𐑉' 4819: {0x10422, 0x1044A}, // '𐐢' => '𐑊' 4816: {0x10423, 0x1044B}, // '𐐣' => '𐑋' 4813: {0x10424, 0x1044C}, // '𐐤' => '𐑌' 4810: {0x10425, 0x1044D}, // '𐐥' => '𐑍' 4807: {0x10426, 0x1044E}, // '𐐦' => '𐑎' 4804: {0x10427, 0x1044F}, // '𐐧' => '𐑏' 4513: {0x104B0, 0x104D8}, // '𐒰' => '𐓘' 4510: {0x104B1, 0x104D9}, // '𐒱' => '𐓙' 4507: {0x104B2, 0x104DA}, // '𐒲' => '𐓚' 4504: {0x104B3, 0x104DB}, // '𐒳' => '𐓛' 4501: {0x104B4, 0x104DC}, // '𐒴' => '𐓜' 4498: {0x104B5, 0x104DD}, // '𐒵' => '𐓝' 4495: {0x104B6, 0x104DE}, // '𐒶' => '𐓞' 4492: {0x104B7, 0x104DF}, // '𐒷' => '𐓟' 4489: {0x104B8, 0x104E0}, // '𐒸' => '𐓠' 4486: {0x104B9, 0x104E1}, // '𐒹' => '𐓡' 4483: {0x104BA, 0x104E2}, // '𐒺' => '𐓢' 4480: {0x104BB, 0x104E3}, // '𐒻' => '𐓣' 4477: {0x104BC, 0x104E4}, // '𐒼' => '𐓤' 4474: {0x104BD, 0x104E5}, // '𐒽' => '𐓥' 4471: {0x104BE, 0x104E6}, // '𐒾' => '𐓦' 4468: {0x104BF, 0x104E7}, // '𐒿' => '𐓧' 4465: {0x104C0, 0x104E8}, // '𐓀' => '𐓨' 4462: {0x104C1, 0x104E9}, // '𐓁' => '𐓩' 4459: {0x104C2, 0x104EA}, // '𐓂' => '𐓪' 4456: {0x104C3, 0x104EB}, // '𐓃' => '𐓫' 4453: {0x104C4, 0x104EC}, // '𐓄' => '𐓬' 4450: {0x104C5, 0x104ED}, // '𐓅' => '𐓭' 4447: {0x104C6, 0x104EE}, // '𐓆' => '𐓮' 4444: {0x104C7, 0x104EF}, // '𐓇' => '𐓯' 4441: {0x104C8, 0x104F0}, // '𐓈' => '𐓰' 4438: {0x104C9, 0x104F1}, // '𐓉' => '𐓱' 4435: {0x104CA, 0x104F2}, // '𐓊' => '𐓲' 4432: {0x104CB, 0x104F3}, // '𐓋' => '𐓳' 4429: {0x104CC, 0x104F4}, // '𐓌' => '𐓴' 4426: {0x104CD, 0x104F5}, // '𐓍' => '𐓵' 4423: {0x104CE, 0x104F6}, // '𐓎' => '𐓶' 4420: {0x104CF, 0x104F7}, // '𐓏' => '𐓷' 4417: {0x104D0, 0x104F8}, // '𐓐' => '𐓸' 4414: {0x104D1, 0x104F9}, // '𐓑' => '𐓹' 4411: {0x104D2, 0x104FA}, // '𐓒' => '𐓺' 4408: {0x104D3, 0x104FB}, // '𐓓' => '𐓻' 4393: {0x104B0, 0x104D8}, // '𐒰' => '𐓘' 4390: {0x104B1, 0x104D9}, // '𐒱' => '𐓙' 4387: {0x104B2, 0x104DA}, // '𐒲' => '𐓚' 4384: {0x104B3, 0x104DB}, // '𐒳' => '𐓛' 4381: {0x104B4, 0x104DC}, // '𐒴' => '𐓜' 4378: {0x104B5, 0x104DD}, // '𐒵' => '𐓝' 4375: {0x104B6, 0x104DE}, // '𐒶' => '𐓞' 4372: {0x104B7, 0x104DF}, // '𐒷' => '𐓟' 4369: {0x104B8, 0x104E0}, // '𐒸' => '𐓠' 4366: {0x104B9, 0x104E1}, // '𐒹' => '𐓡' 4363: {0x104BA, 0x104E2}, // '𐒺' => '𐓢' 4360: {0x104BB, 0x104E3}, // '𐒻' => '𐓣' 4357: {0x104BC, 0x104E4}, // '𐒼' => '𐓤' 4354: {0x104BD, 0x104E5}, // '𐒽' => '𐓥' 4351: {0x104BE, 0x104E6}, // '𐒾' => '𐓦' 4348: {0x104BF, 0x104E7}, // '𐒿' => '𐓧' 4345: {0x104C0, 0x104E8}, // '𐓀' => '𐓨' 4342: {0x104C1, 0x104E9}, // '𐓁' => '𐓩' 4339: {0x104C2, 0x104EA}, // '𐓂' => '𐓪' 4336: {0x104C3, 0x104EB}, // '𐓃' => '𐓫' 4333: {0x104C4, 0x104EC}, // '𐓄' => '𐓬' 4330: {0x104C5, 0x104ED}, // '𐓅' => '𐓭' 4327: {0x104C6, 0x104EE}, // '𐓆' => '𐓮' 4324: {0x104C7, 0x104EF}, // '𐓇' => '𐓯' 4321: {0x104C8, 0x104F0}, // '𐓈' => '𐓰' 4318: {0x104C9, 0x104F1}, // '𐓉' => '𐓱' 4315: {0x104CA, 0x104F2}, // '𐓊' => '𐓲' 4312: {0x104CB, 0x104F3}, // '𐓋' => '𐓳' 4309: {0x104CC, 0x104F4}, // '𐓌' => '𐓴' 4306: {0x104CD, 0x104F5}, // '𐓍' => '𐓵' 4303: {0x104CE, 0x104F6}, // '𐓎' => '𐓶' 4300: {0x104CF, 0x104F7}, // '𐓏' => '𐓷' 4297: {0x104D0, 0x104F8}, // '𐓐' => '𐓸' 4294: {0x104D1, 0x104F9}, // '𐓑' => '𐓹' 4291: {0x104D2, 0x104FA}, // '𐓒' => '𐓺' 4288: {0x104D3, 0x104FB}, // '𐓓' => '𐓻' 3936: {0x10570, 0x10597}, // '𐕰' => '𐖗' 3933: {0x10571, 0x10598}, // '𐕱' => '𐖘' 3930: {0x10572, 0x10599}, // '𐕲' => '𐖙' 3927: {0x10573, 0x1059A}, // '𐕳' => '𐖚' 3924: {0x10574, 0x1059B}, // '𐕴' => '𐖛' 3921: {0x10575, 0x1059C}, // '𐕵' => '𐖜' 3918: {0x10576, 0x1059D}, // '𐕶' => '𐖝' 3915: {0x10577, 0x1059E}, // '𐕷' => '𐖞' 3912: {0x10578, 0x1059F}, // '𐕸' => '𐖟' 3909: {0x10579, 0x105A0}, // '𐕹' => '𐖠' 3906: {0x1057A, 0x105A1}, // '𐕺' => '𐖡' 3900: {0x1057C, 0x105A3}, // '𐕼' => '𐖣' 3897: {0x1057D, 0x105A4}, // '𐕽' => '𐖤' 3894: {0x1057E, 0x105A5}, // '𐕾' => '𐖥' 3891: {0x1057F, 0x105A6}, // '𐕿' => '𐖦' 3888: {0x10580, 0x105A7}, // '𐖀' => '𐖧' 3885: {0x10581, 0x105A8}, // '𐖁' => '𐖨' 3882: {0x10582, 0x105A9}, // '𐖂' => '𐖩' 3879: {0x10583, 0x105AA}, // '𐖃' => '𐖪' 3876: {0x10584, 0x105AB}, // '𐖄' => '𐖫' 3873: {0x10585, 0x105AC}, // '𐖅' => '𐖬' 3870: {0x10586, 0x105AD}, // '𐖆' => '𐖭' 3867: {0x10587, 0x105AE}, // '𐖇' => '𐖮' 3864: {0x10588, 0x105AF}, // '𐖈' => '𐖯' 3861: {0x10589, 0x105B0}, // '𐖉' => '𐖰' 3858: {0x1058A, 0x105B1}, // '𐖊' => '𐖱' 3852: {0x1058C, 0x105B3}, // '𐖌' => '𐖳' 3849: {0x1058D, 0x105B4}, // '𐖍' => '𐖴' 3846: {0x1058E, 0x105B5}, // '𐖎' => '𐖵' 3843: {0x1058F, 0x105B6}, // '𐖏' => '𐖶' 3840: {0x10590, 0x105B7}, // '𐖐' => '𐖷' 3837: {0x10591, 0x105B8}, // '𐖑' => '𐖸' 3834: {0x10592, 0x105B9}, // '𐖒' => '𐖹' 3828: {0x10594, 0x105BB}, // '𐖔' => '𐖻' 3825: {0x10595, 0x105BC}, // '𐖕' => '𐖼' 3819: {0x10570, 0x10597}, // '𐕰' => '𐖗' 3816: {0x10571, 0x10598}, // '𐕱' => '𐖘' 3813: {0x10572, 0x10599}, // '𐕲' => '𐖙' 3810: {0x10573, 0x1059A}, // '𐕳' => '𐖚' 3807: {0x10574, 0x1059B}, // '𐕴' => '𐖛' 3804: {0x10575, 0x1059C}, // '𐕵' => '𐖜' 3801: {0x10576, 0x1059D}, // '𐕶' => '𐖝' 3798: {0x10577, 0x1059E}, // '𐕷' => '𐖞' 3795: {0x10578, 0x1059F}, // '𐕸' => '𐖟' 3792: {0x10579, 0x105A0}, // '𐕹' => '𐖠' 3789: {0x1057A, 0x105A1}, // '𐕺' => '𐖡' 3783: {0x1057C, 0x105A3}, // '𐕼' => '𐖣' 3780: {0x1057D, 0x105A4}, // '𐕽' => '𐖤' 3777: {0x1057E, 0x105A5}, // '𐕾' => '𐖥' 3774: {0x1057F, 0x105A6}, // '𐕿' => '𐖦' 3771: {0x10580, 0x105A7}, // '𐖀' => '𐖧' 3768: {0x10581, 0x105A8}, // '𐖁' => '𐖨' 3765: {0x10582, 0x105A9}, // '𐖂' => '𐖩' 3762: {0x10583, 0x105AA}, // '𐖃' => '𐖪' 3759: {0x10584, 0x105AB}, // '𐖄' => '𐖫' 3756: {0x10585, 0x105AC}, // '𐖅' => '𐖬' 3753: {0x10586, 0x105AD}, // '𐖆' => '𐖭' 3750: {0x10587, 0x105AE}, // '𐖇' => '𐖮' 3747: {0x10588, 0x105AF}, // '𐖈' => '𐖯' 3744: {0x10589, 0x105B0}, // '𐖉' => '𐖰' 3741: {0x1058A, 0x105B1}, // '𐖊' => '𐖱' 3735: {0x1058C, 0x105B3}, // '𐖌' => '𐖳' 3732: {0x1058D, 0x105B4}, // '𐖍' => '𐖴' 3729: {0x1058E, 0x105B5}, // '𐖎' => '𐖵' 3726: {0x1058F, 0x105B6}, // '𐖏' => '𐖶' 3723: {0x10590, 0x105B7}, // '𐖐' => '𐖷' 3720: {0x10591, 0x105B8}, // '𐖑' => '𐖸' 3717: {0x10592, 0x105B9}, // '𐖒' => '𐖹' 3711: {0x10594, 0x105BB}, // '𐖔' => '𐖻' 3708: {0x10595, 0x105BC}, // '𐖕' => '𐖼' 6702: {0x10C80, 0x10CC0}, // '𐲀' => '𐳀' 6699: {0x10C81, 0x10CC1}, // '𐲁' => '𐳁' 6696: {0x10C82, 0x10CC2}, // '𐲂' => '𐳂' 6693: {0x10C83, 0x10CC3}, // '𐲃' => '𐳃' 6690: {0x10C84, 0x10CC4}, // '𐲄' => '𐳄' 6687: {0x10C85, 0x10CC5}, // '𐲅' => '𐳅' 6684: {0x10C86, 0x10CC6}, // '𐲆' => '𐳆' 6681: {0x10C87, 0x10CC7}, // '𐲇' => '𐳇' 6678: {0x10C88, 0x10CC8}, // '𐲈' => '𐳈' 6675: {0x10C89, 0x10CC9}, // '𐲉' => '𐳉' 6672: {0x10C8A, 0x10CCA}, // '𐲊' => '𐳊' 6669: {0x10C8B, 0x10CCB}, // '𐲋' => '𐳋' 6666: {0x10C8C, 0x10CCC}, // '𐲌' => '𐳌' 6663: {0x10C8D, 0x10CCD}, // '𐲍' => '𐳍' 6660: {0x10C8E, 0x10CCE}, // '𐲎' => '𐳎' 6657: {0x10C8F, 0x10CCF}, // '𐲏' => '𐳏' 6654: {0x10C90, 0x10CD0}, // '𐲐' => '𐳐' 6651: {0x10C91, 0x10CD1}, // '𐲑' => '𐳑' 6648: {0x10C92, 0x10CD2}, // '𐲒' => '𐳒' 6645: {0x10C93, 0x10CD3}, // '𐲓' => '𐳓' 6642: {0x10C94, 0x10CD4}, // '𐲔' => '𐳔' 6639: {0x10C95, 0x10CD5}, // '𐲕' => '𐳕' 6636: {0x10C96, 0x10CD6}, // '𐲖' => '𐳖' 6633: {0x10C97, 0x10CD7}, // '𐲗' => '𐳗' 6630: {0x10C98, 0x10CD8}, // '𐲘' => '𐳘' 6627: {0x10C99, 0x10CD9}, // '𐲙' => '𐳙' 6624: {0x10C9A, 0x10CDA}, // '𐲚' => '𐳚' 6621: {0x10C9B, 0x10CDB}, // '𐲛' => '𐳛' 6618: {0x10C9C, 0x10CDC}, // '𐲜' => '𐳜' 6615: {0x10C9D, 0x10CDD}, // '𐲝' => '𐳝' 6612: {0x10C9E, 0x10CDE}, // '𐲞' => '𐳞' 6609: {0x10C9F, 0x10CDF}, // '𐲟' => '𐳟' 6606: {0x10CA0, 0x10CE0}, // '𐲠' => '𐳠' 6603: {0x10CA1, 0x10CE1}, // '𐲡' => '𐳡' 6600: {0x10CA2, 0x10CE2}, // '𐲢' => '𐳢' 6597: {0x10CA3, 0x10CE3}, // '𐲣' => '𐳣' 6594: {0x10CA4, 0x10CE4}, // '𐲤' => '𐳤' 6591: {0x10CA5, 0x10CE5}, // '𐲥' => '𐳥' 6588: {0x10CA6, 0x10CE6}, // '𐲦' => '𐳦' 6585: {0x10CA7, 0x10CE7}, // '𐲧' => '𐳧' 6582: {0x10CA8, 0x10CE8}, // '𐲨' => '𐳨' 6579: {0x10CA9, 0x10CE9}, // '𐲩' => '𐳩' 6576: {0x10CAA, 0x10CEA}, // '𐲪' => '𐳪' 6573: {0x10CAB, 0x10CEB}, // '𐲫' => '𐳫' 6570: {0x10CAC, 0x10CEC}, // '𐲬' => '𐳬' 6567: {0x10CAD, 0x10CED}, // '𐲭' => '𐳭' 6564: {0x10CAE, 0x10CEE}, // '𐲮' => '𐳮' 6561: {0x10CAF, 0x10CEF}, // '𐲯' => '𐳯' 6558: {0x10CB0, 0x10CF0}, // '𐲰' => '𐳰' 6555: {0x10CB1, 0x10CF1}, // '𐲱' => '𐳱' 6552: {0x10CB2, 0x10CF2}, // '𐲲' => '𐳲' 6510: {0x10C80, 0x10CC0}, // '𐲀' => '𐳀' 6507: {0x10C81, 0x10CC1}, // '𐲁' => '𐳁' 6504: {0x10C82, 0x10CC2}, // '𐲂' => '𐳂' 6501: {0x10C83, 0x10CC3}, // '𐲃' => '𐳃' 6498: {0x10C84, 0x10CC4}, // '𐲄' => '𐳄' 6495: {0x10C85, 0x10CC5}, // '𐲅' => '𐳅' 6492: {0x10C86, 0x10CC6}, // '𐲆' => '𐳆' 6489: {0x10C87, 0x10CC7}, // '𐲇' => '𐳇' 6486: {0x10C88, 0x10CC8}, // '𐲈' => '𐳈' 6483: {0x10C89, 0x10CC9}, // '𐲉' => '𐳉' 6480: {0x10C8A, 0x10CCA}, // '𐲊' => '𐳊' 6477: {0x10C8B, 0x10CCB}, // '𐲋' => '𐳋' 6474: {0x10C8C, 0x10CCC}, // '𐲌' => '𐳌' 6471: {0x10C8D, 0x10CCD}, // '𐲍' => '𐳍' 6468: {0x10C8E, 0x10CCE}, // '𐲎' => '𐳎' 6465: {0x10C8F, 0x10CCF}, // '𐲏' => '𐳏' 6462: {0x10C90, 0x10CD0}, // '𐲐' => '𐳐' 6459: {0x10C91, 0x10CD1}, // '𐲑' => '𐳑' 6456: {0x10C92, 0x10CD2}, // '𐲒' => '𐳒' 6453: {0x10C93, 0x10CD3}, // '𐲓' => '𐳓' 6450: {0x10C94, 0x10CD4}, // '𐲔' => '𐳔' 6447: {0x10C95, 0x10CD5}, // '𐲕' => '𐳕' 6444: {0x10C96, 0x10CD6}, // '𐲖' => '𐳖' 6441: {0x10C97, 0x10CD7}, // '𐲗' => '𐳗' 6438: {0x10C98, 0x10CD8}, // '𐲘' => '𐳘' 6435: {0x10C99, 0x10CD9}, // '𐲙' => '𐳙' 6432: {0x10C9A, 0x10CDA}, // '𐲚' => '𐳚' 6429: {0x10C9B, 0x10CDB}, // '𐲛' => '𐳛' 6426: {0x10C9C, 0x10CDC}, // '𐲜' => '𐳜' 6423: {0x10C9D, 0x10CDD}, // '𐲝' => '𐳝' 6420: {0x10C9E, 0x10CDE}, // '𐲞' => '𐳞' 6417: {0x10C9F, 0x10CDF}, // '𐲟' => '𐳟' 6414: {0x10CA0, 0x10CE0}, // '𐲠' => '𐳠' 6411: {0x10CA1, 0x10CE1}, // '𐲡' => '𐳡' 6408: {0x10CA2, 0x10CE2}, // '𐲢' => '𐳢' 6405: {0x10CA3, 0x10CE3}, // '𐲣' => '𐳣' 6402: {0x10CA4, 0x10CE4}, // '𐲤' => '𐳤' 6399: {0x10CA5, 0x10CE5}, // '𐲥' => '𐳥' 6396: {0x10CA6, 0x10CE6}, // '𐲦' => '𐳦' 6393: {0x10CA7, 0x10CE7}, // '𐲧' => '𐳧' 6390: {0x10CA8, 0x10CE8}, // '𐲨' => '𐳨' 6387: {0x10CA9, 0x10CE9}, // '𐲩' => '𐳩' 6384: {0x10CAA, 0x10CEA}, // '𐲪' => '𐳪' 6381: {0x10CAB, 0x10CEB}, // '𐲫' => '𐳫' 6378: {0x10CAC, 0x10CEC}, // '𐲬' => '𐳬' 6375: {0x10CAD, 0x10CED}, // '𐲭' => '𐳭' 6372: {0x10CAE, 0x10CEE}, // '𐲮' => '𐳮' 6369: {0x10CAF, 0x10CEF}, // '𐲯' => '𐳯' 6366: {0x10CB0, 0x10CF0}, // '𐲰' => '𐳰' 6363: {0x10CB1, 0x10CF1}, // '𐲱' => '𐳱' 6360: {0x10CB2, 0x10CF2}, // '𐲲' => '𐳲' 5579: {0x118A0, 0x118C0}, // '𑢠' => '𑣀' 5576: {0x118A1, 0x118C1}, // '𑢡' => '𑣁' 5573: {0x118A2, 0x118C2}, // '𑢢' => '𑣂' 5570: {0x118A3, 0x118C3}, // '𑢣' => '𑣃' 5567: {0x118A4, 0x118C4}, // '𑢤' => '𑣄' 5564: {0x118A5, 0x118C5}, // '𑢥' => '𑣅' 5561: {0x118A6, 0x118C6}, // '𑢦' => '𑣆' 5558: {0x118A7, 0x118C7}, // '𑢧' => '𑣇' 5555: {0x118A8, 0x118C8}, // '𑢨' => '𑣈' 5552: {0x118A9, 0x118C9}, // '𑢩' => '𑣉' 5549: {0x118AA, 0x118CA}, // '𑢪' => '𑣊' 5546: {0x118AB, 0x118CB}, // '𑢫' => '𑣋' 5543: {0x118AC, 0x118CC}, // '𑢬' => '𑣌' 5540: {0x118AD, 0x118CD}, // '𑢭' => '𑣍' 5537: {0x118AE, 0x118CE}, // '𑢮' => '𑣎' 5534: {0x118AF, 0x118CF}, // '𑢯' => '𑣏' 5531: {0x118B0, 0x118D0}, // '𑢰' => '𑣐' 5528: {0x118B1, 0x118D1}, // '𑢱' => '𑣑' 5525: {0x118B2, 0x118D2}, // '𑢲' => '𑣒' 5522: {0x118B3, 0x118D3}, // '𑢳' => '𑣓' 5519: {0x118B4, 0x118D4}, // '𑢴' => '𑣔' 5516: {0x118B5, 0x118D5}, // '𑢵' => '𑣕' 5513: {0x118B6, 0x118D6}, // '𑢶' => '𑣖' 5510: {0x118B7, 0x118D7}, // '𑢷' => '𑣗' 5507: {0x118B8, 0x118D8}, // '𑢸' => '𑣘' 5504: {0x118B9, 0x118D9}, // '𑢹' => '𑣙' 5501: {0x118BA, 0x118DA}, // '𑢺' => '𑣚' 5498: {0x118BB, 0x118DB}, // '𑢻' => '𑣛' 5495: {0x118BC, 0x118DC}, // '𑢼' => '𑣜' 5492: {0x118BD, 0x118DD}, // '𑢽' => '𑣝' 5489: {0x118BE, 0x118DE}, // '𑢾' => '𑣞' 5486: {0x118BF, 0x118DF}, // '𑢿' => '𑣟' 5483: {0x118A0, 0x118C0}, // '𑢠' => '𑣀' 5480: {0x118A1, 0x118C1}, // '𑢡' => '𑣁' 5477: {0x118A2, 0x118C2}, // '𑢢' => '𑣂' 5474: {0x118A3, 0x118C3}, // '𑢣' => '𑣃' 5471: {0x118A4, 0x118C4}, // '𑢤' => '𑣄' 5468: {0x118A5, 0x118C5}, // '𑢥' => '𑣅' 5465: {0x118A6, 0x118C6}, // '𑢦' => '𑣆' 5462: {0x118A7, 0x118C7}, // '𑢧' => '𑣇' 5459: {0x118A8, 0x118C8}, // '𑢨' => '𑣈' 5456: {0x118A9, 0x118C9}, // '𑢩' => '𑣉' 5453: {0x118AA, 0x118CA}, // '𑢪' => '𑣊' 5450: {0x118AB, 0x118CB}, // '𑢫' => '𑣋' 5447: {0x118AC, 0x118CC}, // '𑢬' => '𑣌' 5444: {0x118AD, 0x118CD}, // '𑢭' => '𑣍' 5441: {0x118AE, 0x118CE}, // '𑢮' => '𑣎' 5438: {0x118AF, 0x118CF}, // '𑢯' => '𑣏' 5435: {0x118B0, 0x118D0}, // '𑢰' => '𑣐' 5432: {0x118B1, 0x118D1}, // '𑢱' => '𑣑' 5429: {0x118B2, 0x118D2}, // '𑢲' => '𑣒' 5426: {0x118B3, 0x118D3}, // '𑢳' => '𑣓' 5423: {0x118B4, 0x118D4}, // '𑢴' => '𑣔' 5420: {0x118B5, 0x118D5}, // '𑢵' => '𑣕' 5417: {0x118B6, 0x118D6}, // '𑢶' => '𑣖' 5414: {0x118B7, 0x118D7}, // '𑢷' => '𑣗' 5411: {0x118B8, 0x118D8}, // '𑢸' => '𑣘' 5408: {0x118B9, 0x118D9}, // '𑢹' => '𑣙' 5405: {0x118BA, 0x118DA}, // '𑢺' => '𑣚' 5402: {0x118BB, 0x118DB}, // '𑢻' => '𑣛' 5399: {0x118BC, 0x118DC}, // '𑢼' => '𑣜' 5396: {0x118BD, 0x118DD}, // '𑢽' => '𑣝' 5393: {0x118BE, 0x118DE}, // '𑢾' => '𑣞' 5390: {0x118BF, 0x118DF}, // '𑢿' => '𑣟' 5329: {0x16E40, 0x16E60}, // '𖹀' => '𖹠' 5326: {0x16E41, 0x16E61}, // '𖹁' => '𖹡' 5323: {0x16E42, 0x16E62}, // '𖹂' => '𖹢' 5320: {0x16E43, 0x16E63}, // '𖹃' => '𖹣' 5317: {0x16E44, 0x16E64}, // '𖹄' => '𖹤' 5314: {0x16E45, 0x16E65}, // '𖹅' => '𖹥' 5311: {0x16E46, 0x16E66}, // '𖹆' => '𖹦' 5308: {0x16E47, 0x16E67}, // '𖹇' => '𖹧' 5305: {0x16E48, 0x16E68}, // '𖹈' => '𖹨' 5302: {0x16E49, 0x16E69}, // '𖹉' => '𖹩' 5299: {0x16E4A, 0x16E6A}, // '𖹊' => '𖹪' 5296: {0x16E4B, 0x16E6B}, // '𖹋' => '𖹫' 5293: {0x16E4C, 0x16E6C}, // '𖹌' => '𖹬' 5290: {0x16E4D, 0x16E6D}, // '𖹍' => '𖹭' 5287: {0x16E4E, 0x16E6E}, // '𖹎' => '𖹮' 5284: {0x16E4F, 0x16E6F}, // '𖹏' => '𖹯' 5281: {0x16E50, 0x16E70}, // '𖹐' => '𖹰' 5278: {0x16E51, 0x16E71}, // '𖹑' => '𖹱' 5275: {0x16E52, 0x16E72}, // '𖹒' => '𖹲' 5272: {0x16E53, 0x16E73}, // '𖹓' => '𖹳' 5269: {0x16E54, 0x16E74}, // '𖹔' => '𖹴' 5266: {0x16E55, 0x16E75}, // '𖹕' => '𖹵' 5263: {0x16E56, 0x16E76}, // '𖹖' => '𖹶' 5260: {0x16E57, 0x16E77}, // '𖹗' => '𖹷' 5257: {0x16E58, 0x16E78}, // '𖹘' => '𖹸' 5254: {0x16E59, 0x16E79}, // '𖹙' => '𖹹' 5251: {0x16E5A, 0x16E7A}, // '𖹚' => '𖹺' 5248: {0x16E5B, 0x16E7B}, // '𖹛' => '𖹻' 5245: {0x16E5C, 0x16E7C}, // '𖹜' => '𖹼' 5242: {0x16E5D, 0x16E7D}, // '𖹝' => '𖹽' 5239: {0x16E5E, 0x16E7E}, // '𖹞' => '𖹾' 5236: {0x16E5F, 0x16E7F}, // '𖹟' => '𖹿' 5233: {0x16E40, 0x16E60}, // '𖹀' => '𖹠' 5230: {0x16E41, 0x16E61}, // '𖹁' => '𖹡' 5227: {0x16E42, 0x16E62}, // '𖹂' => '𖹢' 5224: {0x16E43, 0x16E63}, // '𖹃' => '𖹣' 5221: {0x16E44, 0x16E64}, // '𖹄' => '𖹤' 5218: {0x16E45, 0x16E65}, // '𖹅' => '𖹥' 5215: {0x16E46, 0x16E66}, // '𖹆' => '𖹦' 5212: {0x16E47, 0x16E67}, // '𖹇' => '𖹧' 5209: {0x16E48, 0x16E68}, // '𖹈' => '𖹨' 5206: {0x16E49, 0x16E69}, // '𖹉' => '𖹩' 5203: {0x16E4A, 0x16E6A}, // '𖹊' => '𖹪' 5200: {0x16E4B, 0x16E6B}, // '𖹋' => '𖹫' 5197: {0x16E4C, 0x16E6C}, // '𖹌' => '𖹬' 5194: {0x16E4D, 0x16E6D}, // '𖹍' => '𖹭' 5191: {0x16E4E, 0x16E6E}, // '𖹎' => '𖹮' 5188: {0x16E4F, 0x16E6F}, // '𖹏' => '𖹯' 5185: {0x16E50, 0x16E70}, // '𖹐' => '𖹰' 5182: {0x16E51, 0x16E71}, // '𖹑' => '𖹱' 5179: {0x16E52, 0x16E72}, // '𖹒' => '𖹲' 5176: {0x16E53, 0x16E73}, // '𖹓' => '𖹳' 5173: {0x16E54, 0x16E74}, // '𖹔' => '𖹴' 5170: {0x16E55, 0x16E75}, // '𖹕' => '𖹵' 5167: {0x16E56, 0x16E76}, // '𖹖' => '𖹶' 5164: {0x16E57, 0x16E77}, // '𖹗' => '𖹷' 5161: {0x16E58, 0x16E78}, // '𖹘' => '𖹸' 5158: {0x16E59, 0x16E79}, // '𖹙' => '𖹹' 5155: {0x16E5A, 0x16E7A}, // '𖹚' => '𖹺' 5152: {0x16E5B, 0x16E7B}, // '𖹛' => '𖹻' 5149: {0x16E5C, 0x16E7C}, // '𖹜' => '𖹼' 5146: {0x16E5D, 0x16E7D}, // '𖹝' => '𖹽' 5143: {0x16E5E, 0x16E7E}, // '𖹞' => '𖹾' 5140: {0x16E5F, 0x16E7F}, // '𖹟' => '𖹿' 1132: {0x1E900, 0x1E922}, // '𞤀' => '𞤢' 1129: {0x1E901, 0x1E923}, // '𞤁' => '𞤣' 1126: {0x1E902, 0x1E924}, // '𞤂' => '𞤤' 1123: {0x1E903, 0x1E925}, // '𞤃' => '𞤥' 1120: {0x1E904, 0x1E926}, // '𞤄' => '𞤦' 1117: {0x1E905, 0x1E927}, // '𞤅' => '𞤧' 1114: {0x1E906, 0x1E928}, // '𞤆' => '𞤨' 1111: {0x1E907, 0x1E929}, // '𞤇' => '𞤩' 1108: {0x1E908, 0x1E92A}, // '𞤈' => '𞤪' 1105: {0x1E909, 0x1E92B}, // '𞤉' => '𞤫' 1102: {0x1E90A, 0x1E92C}, // '𞤊' => '𞤬' 1099: {0x1E90B, 0x1E92D}, // '𞤋' => '𞤭' 1096: {0x1E90C, 0x1E92E}, // '𞤌' => '𞤮' 1093: {0x1E90D, 0x1E92F}, // '𞤍' => '𞤯' 1090: {0x1E90E, 0x1E930}, // '𞤎' => '𞤰' 1087: {0x1E90F, 0x1E931}, // '𞤏' => '𞤱' 1084: {0x1E910, 0x1E932}, // '𞤐' => '𞤲' 1081: {0x1E911, 0x1E933}, // '𞤑' => '𞤳' 1078: {0x1E912, 0x1E934}, // '𞤒' => '𞤴' 1075: {0x1E913, 0x1E935}, // '𞤓' => '𞤵' 1072: {0x1E914, 0x1E936}, // '𞤔' => '𞤶' 1069: {0x1E915, 0x1E937}, // '𞤕' => '𞤷' 1066: {0x1E916, 0x1E938}, // '𞤖' => '𞤸' 1063: {0x1E917, 0x1E939}, // '𞤗' => '𞤹' 1060: {0x1E918, 0x1E93A}, // '𞤘' => '𞤺' 1057: {0x1E919, 0x1E93B}, // '𞤙' => '𞤻' 1054: {0x1E91A, 0x1E93C}, // '𞤚' => '𞤼' 1051: {0x1E91B, 0x1E93D}, // '𞤛' => '𞤽' 1048: {0x1E91C, 0x1E93E}, // '𞤜' => '𞤾' 1045: {0x1E91D, 0x1E93F}, // '𞤝' => '𞤿' 1042: {0x1E91E, 0x1E940}, // '𞤞' => '𞥀' 1039: {0x1E91F, 0x1E941}, // '𞤟' => '𞥁' 1036: {0x1E920, 0x1E942}, // '𞤠' => '𞥂' 1033: {0x1E921, 0x1E943}, // '𞤡' => '𞥃' 1030: {0x1E900, 0x1E922}, // '𞤀' => '𞤢' 1027: {0x1E901, 0x1E923}, // '𞤁' => '𞤣' 1024: {0x1E902, 0x1E924}, // '𞤂' => '𞤤' 1021: {0x1E903, 0x1E925}, // '𞤃' => '𞤥' 1018: {0x1E904, 0x1E926}, // '𞤄' => '𞤦' 1015: {0x1E905, 0x1E927}, // '𞤅' => '𞤧' 1012: {0x1E906, 0x1E928}, // '𞤆' => '𞤨' 1009: {0x1E907, 0x1E929}, // '𞤇' => '𞤩' 1006: {0x1E908, 0x1E92A}, // '𞤈' => '𞤪' 1003: {0x1E909, 0x1E92B}, // '𞤉' => '𞤫' 1000: {0x1E90A, 0x1E92C}, // '𞤊' => '𞤬' 997: {0x1E90B, 0x1E92D}, // '𞤋' => '𞤭' 994: {0x1E90C, 0x1E92E}, // '𞤌' => '𞤮' 991: {0x1E90D, 0x1E92F}, // '𞤍' => '𞤯' 988: {0x1E90E, 0x1E930}, // '𞤎' => '𞤰' 985: {0x1E90F, 0x1E931}, // '𞤏' => '𞤱' 982: {0x1E910, 0x1E932}, // '𞤐' => '𞤲' 979: {0x1E911, 0x1E933}, // '𞤑' => '𞤳' 976: {0x1E912, 0x1E934}, // '𞤒' => '𞤴' 973: {0x1E913, 0x1E935}, // '𞤓' => '𞤵' 970: {0x1E914, 0x1E936}, // '𞤔' => '𞤶' 967: {0x1E915, 0x1E937}, // '𞤕' => '𞤷' 964: {0x1E916, 0x1E938}, // '𞤖' => '𞤸' 961: {0x1E917, 0x1E939}, // '𞤗' => '𞤹' 958: {0x1E918, 0x1E93A}, // '𞤘' => '𞤺' 955: {0x1E919, 0x1E93B}, // '𞤙' => '𞤻' 952: {0x1E91A, 0x1E93C}, // '𞤚' => '𞤼' 949: {0x1E91B, 0x1E93D}, // '𞤛' => '𞤽' 946: {0x1E91C, 0x1E93E}, // '𞤜' => '𞤾' 943: {0x1E91D, 0x1E93F}, // '𞤝' => '𞤿' 940: {0x1E91E, 0x1E940}, // '𞤞' => '𞥀' 937: {0x1E91F, 0x1E941}, // '𞤟' => '𞥁' 934: {0x1E920, 0x1E942}, // '𞤠' => '𞥂' 931: {0x1E921, 0x1E943}, // '𞤡' => '𞥃' } // toUpperLowerSpecial returns the uppercase and lowercase form of r, // which is a character that is not equal to either its uppercase or // lowercase form and thus cannot be mapped into the _UpperLower table. func toUpperLowerSpecial(r rune) (rune, rune, bool) { switch r { case 'Dž': return 'DŽ', 'dž', true case 'Lj': return 'LJ', 'lj', true case 'Nj': return 'NJ', 'nj', true case 'Dz': return 'DZ', 'dz', true } return r, r, false } const _FoldMapSeed = 0x96480001 const _FoldMapShift = 24 // FoldMap stores the Unicode case-folds for characters that have two or more folds. var _FoldMap = [256][4]uint16{ 7: {0x004B, 0x006B, 0x212A}, // ['K' 'k' 'K'] 185: {0x0053, 0x0073, 0x017F}, // ['S' 's' 'ſ'] 208: {0x006B, 0x004B, 0x212A}, // ['k' 'K' 'K'] 130: {0x0073, 0x0053, 0x017F}, // ['s' 'S' 'ſ'] 64: {0x00B5, 0x039C, 0x03BC}, // ['µ' 'Μ' 'μ'] 165: {0x00C5, 0x00E5, 0x212B}, // ['Å' 'å' 'Å'] 232: {0x00DF, 0x1E9E}, // ['ß' 'ẞ'] 110: {0x00E5, 0x00C5, 0x212B}, // ['å' 'Å' 'Å'] 117: {0x0130}, // ['İ'] 11: {0x0131}, // ['ı'] 213: {0x017F, 0x0053, 0x0073}, // ['ſ' 'S' 's'] 87: {0x01C4, 0x01C5, 0x01C6}, // ['DŽ' 'Dž' 'dž'] 237: {0x01C5, 0x01C4, 0x01C6}, // ['Dž' 'DŽ' 'dž'] 131: {0x01C6, 0x01C4, 0x01C5}, // ['dž' 'DŽ' 'Dž'] 25: {0x01C7, 0x01C8, 0x01C9}, // ['LJ' 'Lj' 'lj'] 176: {0x01C8, 0x01C7, 0x01C9}, // ['Lj' 'LJ' 'lj'] 70: {0x01C9, 0x01C7, 0x01C8}, // ['lj' 'LJ' 'Lj'] 220: {0x01CA, 0x01CB, 0x01CC}, // ['NJ' 'Nj' 'nj'] 115: {0x01CB, 0x01CA, 0x01CC}, // ['Nj' 'NJ' 'nj'] 9: {0x01CC, 0x01CA, 0x01CB}, // ['nj' 'NJ' 'Nj'] 193: {0x01F1, 0x01F2, 0x01F3}, // ['DZ' 'Dz' 'dz'] 88: {0x01F2, 0x01F1, 0x01F3}, // ['Dz' 'DZ' 'dz'] 238: {0x01F3, 0x01F1, 0x01F2}, // ['dz' 'DZ' 'Dz'] 89: {0x0345, 0x0399, 0x03B9, 0x1FBE}, // ['ͅ' 'Ι' 'ι' 'ι'] 141: {0x0392, 0x03B2, 0x03D0}, // ['Β' 'β' 'ϐ'] 79: {0x0395, 0x03B5, 0x03F5}, // ['Ε' 'ε' 'ϵ'] 18: {0x0398, 0x03B8, 0x03D1, 0x03F4}, // ['Θ' 'θ' 'ϑ' 'ϴ'] 169: {0x0399, 0x0345, 0x03B9, 0x1FBE}, // ['Ι' 'ͅ' 'ι' 'ι'] 63: {0x039A, 0x03BA, 0x03F0}, // ['Κ' 'κ' 'ϰ'] 107: {0x039C, 0x00B5, 0x03BC}, // ['Μ' 'µ' 'μ'] 197: {0x03A0, 0x03C0, 0x03D6}, // ['Π' 'π' 'ϖ'] 91: {0x03A1, 0x03C1, 0x03F1}, // ['Ρ' 'ρ' 'ϱ'] 135: {0x03A3, 0x03C2, 0x03C3}, // ['Σ' 'ς' 'σ'] 74: {0x03A6, 0x03C6, 0x03D5}, // ['Φ' 'φ' 'ϕ'] 13: {0x03A9, 0x03C9, 0x2126}, // ['Ω' 'ω' 'Ω'] 86: {0x03B2, 0x0392, 0x03D0}, // ['β' 'Β' 'ϐ'] 24: {0x03B5, 0x0395, 0x03F5}, // ['ε' 'Ε' 'ϵ'] 219: {0x03B8, 0x0398, 0x03D1, 0x03F4}, // ['θ' 'Θ' 'ϑ' 'ϴ'] 114: {0x03B9, 0x0345, 0x0399, 0x1FBE}, // ['ι' 'ͅ' 'Ι' 'ι'] 8: {0x03BA, 0x039A, 0x03F0}, // ['κ' 'Κ' 'ϰ'] 52: {0x03BC, 0x00B5, 0x039C}, // ['μ' 'µ' 'Μ'] 142: {0x03C0, 0x03A0, 0x03D6}, // ['π' 'Π' 'ϖ'] 36: {0x03C1, 0x03A1, 0x03F1}, // ['ρ' 'Ρ' 'ϱ'] 186: {0x03C2, 0x03A3, 0x03C3}, // ['ς' 'Σ' 'σ'] 80: {0x03C3, 0x03A3, 0x03C2}, // ['σ' 'Σ' 'ς'] 19: {0x03C6, 0x03A6, 0x03D5}, // ['φ' 'Φ' 'ϕ'] 214: {0x03C9, 0x03A9, 0x2126}, // ['ω' 'Ω' 'Ω'] 242: {0x03D0, 0x0392, 0x03B2}, // ['ϐ' 'Β' 'β'] 136: {0x03D1, 0x0398, 0x03B8, 0x03F4}, // ['ϑ' 'Θ' 'θ' 'ϴ'] 225: {0x03D5, 0x03A6, 0x03C6}, // ['ϕ' 'Φ' 'φ'] 120: {0x03D6, 0x03A0, 0x03C0}, // ['ϖ' 'Π' 'π'] 187: {0x03F0, 0x039A, 0x03BA}, // ['ϰ' 'Κ' 'κ'] 81: {0x03F1, 0x03A1, 0x03C1}, // ['ϱ' 'Ρ' 'ρ'] 20: {0x03F4, 0x0398, 0x03B8, 0x03D1}, // ['ϴ' 'Θ' 'θ' 'ϑ'] 170: {0x03F5, 0x0395, 0x03B5}, // ['ϵ' 'Ε' 'ε'] 177: {0x0412, 0x0432, 0x1C80}, // ['В' 'в' 'ᲀ'] 221: {0x0414, 0x0434, 0x1C81}, // ['Д' 'д' 'ᲁ'] 188: {0x041E, 0x043E, 0x1C82}, // ['О' 'о' 'ᲂ'] 127: {0x0421, 0x0441, 0x1C83}, // ['С' 'с' 'ᲃ'] 21: {0x0422, 0x0442, 0x1C84, 0x1C85}, // ['Т' 'т' 'ᲄ' 'ᲅ'] 199: {0x042A, 0x044A, 0x1C86}, // ['Ъ' 'ъ' 'ᲆ'] 122: {0x0432, 0x0412, 0x1C80}, // ['в' 'В' 'ᲀ'] 166: {0x0434, 0x0414, 0x1C81}, // ['д' 'Д' 'ᲁ'] 133: {0x043E, 0x041E, 0x1C82}, // ['о' 'О' 'ᲂ'] 72: {0x0441, 0x0421, 0x1C83}, // ['с' 'С' 'ᲃ'] 222: {0x0442, 0x0422, 0x1C84, 0x1C85}, // ['т' 'Т' 'ᲄ' 'ᲅ'] 144: {0x044A, 0x042A, 0x1C86}, // ['ъ' 'Ъ' 'ᲆ'] 167: {0x0462, 0x0463, 0x1C87}, // ['Ѣ' 'ѣ' 'ᲇ'] 61: {0x0463, 0x0462, 0x1C87}, // ['ѣ' 'Ѣ' 'ᲇ'] 4: {0x1C80, 0x0412, 0x0432}, // ['ᲀ' 'В' 'в'] 154: {0x1C81, 0x0414, 0x0434}, // ['ᲁ' 'Д' 'д'] 48: {0x1C82, 0x041E, 0x043E}, // ['ᲂ' 'О' 'о'] 198: {0x1C83, 0x0421, 0x0441}, // ['ᲃ' 'С' 'с'] 93: {0x1C84, 0x0422, 0x0442, 0x1C85}, // ['ᲄ' 'Т' 'т' 'ᲅ'] 243: {0x1C85, 0x0422, 0x0442, 0x1C84}, // ['ᲅ' 'Т' 'т' 'ᲄ'] 137: {0x1C86, 0x042A, 0x044A}, // ['ᲆ' 'Ъ' 'ъ'] 31: {0x1C87, 0x0462, 0x0463}, // ['ᲇ' 'Ѣ' 'ѣ'] 182: {0x1C88, 0xA64A, 0xA64B}, // ['ᲈ' 'Ꙋ' 'ꙋ'] 203: {0x1E60, 0x1E61, 0x1E9B}, // ['Ṡ' 'ṡ' 'ẛ'] 97: {0x1E61, 0x1E60, 0x1E9B}, // ['ṡ' 'Ṡ' 'ẛ'] 109: {0x1E9B, 0x1E60, 0x1E61}, // ['ẛ' 'Ṡ' 'ṡ'] 65: {0x1FBE, 0x0345, 0x0399, 0x03B9}, // ['ι' 'ͅ' 'Ι' 'ι'] 150: {0x2126, 0x03A9, 0x03C9}, // ['Ω' 'Ω' 'ω'] 239: {0x212A, 0x004B, 0x006B}, // ['K' 'K' 'k'] 134: {0x212B, 0x00C5, 0x00E5}, // ['Å' 'Å' 'å'] 32: {0xA64A, 0x1C88, 0xA64B}, // ['Ꙋ' 'ᲈ' 'ꙋ'] 183: {0xA64B, 0x1C88, 0xA64A}, // ['ꙋ' 'ᲈ' 'Ꙋ'] } const _FoldMapExcludingUpperLowerSeed = 0x96480001 const _FoldMapExcludingUpperLowerShift = 24 // _FoldMapExcludingUpperLower stores the Unicode case-folds for charactecrs that // have two or more folds, but excludes the uppercase and lowercase forms of the // character. var _FoldMapExcludingUpperLower = [256]struct { r uint16 a [2]uint16 }{ 7: {0x004B, [2]uint16{0x212A, 0x212A}}, // 'K': ['K', 'K'] 185: {0x0053, [2]uint16{0x017F, 0x017F}}, // 'S': ['ſ', 'ſ'] 208: {0x006B, [2]uint16{0x212A, 0x212A}}, // 'k': ['K', 'K'] 130: {0x0073, [2]uint16{0x017F, 0x017F}}, // 's': ['ſ', 'ſ'] 64: {0x00B5, [2]uint16{0x03BC, 0x03BC}}, // 'µ': ['μ', 'μ'] 165: {0x00C5, [2]uint16{0x212B, 0x212B}}, // 'Å': ['Å', 'Å'] 232: {0x00DF, [2]uint16{0x1E9E, 0x1E9E}}, // 'ß': ['ẞ', 'ẞ'] 110: {0x00E5, [2]uint16{0x212B, 0x212B}}, // 'å': ['Å', 'Å'] 117: {0x0130, [2]uint16{0x0130, 0x0130}}, // 'İ': ['İ', 'İ'] 11: {0x0131, [2]uint16{0x0131, 0x0131}}, // 'ı': ['ı', 'ı'] 213: {0x017F, [2]uint16{0x0073, 0x0073}}, // 'ſ': ['s', 's'] 87: {0x01C4, [2]uint16{0x01C5, 0x01C5}}, // 'DŽ': ['Dž', 'Dž'] 237: {0x01C5, [2]uint16{0x01C5, 0x01C5}}, // 'Dž': ['Dž', 'Dž'] 131: {0x01C6, [2]uint16{0x01C5, 0x01C5}}, // 'dž': ['Dž', 'Dž'] 25: {0x01C7, [2]uint16{0x01C8, 0x01C8}}, // 'LJ': ['Lj', 'Lj'] 176: {0x01C8, [2]uint16{0x01C8, 0x01C8}}, // 'Lj': ['Lj', 'Lj'] 70: {0x01C9, [2]uint16{0x01C8, 0x01C8}}, // 'lj': ['Lj', 'Lj'] 220: {0x01CA, [2]uint16{0x01CB, 0x01CB}}, // 'NJ': ['Nj', 'Nj'] 115: {0x01CB, [2]uint16{0x01CB, 0x01CB}}, // 'Nj': ['Nj', 'Nj'] 9: {0x01CC, [2]uint16{0x01CB, 0x01CB}}, // 'nj': ['Nj', 'Nj'] 193: {0x01F1, [2]uint16{0x01F2, 0x01F2}}, // 'DZ': ['Dz', 'Dz'] 88: {0x01F2, [2]uint16{0x01F2, 0x01F2}}, // 'Dz': ['Dz', 'Dz'] 238: {0x01F3, [2]uint16{0x01F2, 0x01F2}}, // 'dz': ['Dz', 'Dz'] 89: {0x0345, [2]uint16{0x03B9, 0x1FBE}}, // 'ͅ': ['ι', 'ι'] 141: {0x0392, [2]uint16{0x03D0, 0x03D0}}, // 'Β': ['ϐ', 'ϐ'] 79: {0x0395, [2]uint16{0x03F5, 0x03F5}}, // 'Ε': ['ϵ', 'ϵ'] 18: {0x0398, [2]uint16{0x03D1, 0x03F4}}, // 'Θ': ['ϑ', 'ϴ'] 169: {0x0399, [2]uint16{0x0345, 0x1FBE}}, // 'Ι': ['ͅ', 'ι'] 63: {0x039A, [2]uint16{0x03F0, 0x03F0}}, // 'Κ': ['ϰ', 'ϰ'] 107: {0x039C, [2]uint16{0x00B5, 0x00B5}}, // 'Μ': ['µ', 'µ'] 197: {0x03A0, [2]uint16{0x03D6, 0x03D6}}, // 'Π': ['ϖ', 'ϖ'] 91: {0x03A1, [2]uint16{0x03F1, 0x03F1}}, // 'Ρ': ['ϱ', 'ϱ'] 135: {0x03A3, [2]uint16{0x03C2, 0x03C2}}, // 'Σ': ['ς', 'ς'] 74: {0x03A6, [2]uint16{0x03D5, 0x03D5}}, // 'Φ': ['ϕ', 'ϕ'] 13: {0x03A9, [2]uint16{0x2126, 0x2126}}, // 'Ω': ['Ω', 'Ω'] 86: {0x03B2, [2]uint16{0x03D0, 0x03D0}}, // 'β': ['ϐ', 'ϐ'] 24: {0x03B5, [2]uint16{0x03F5, 0x03F5}}, // 'ε': ['ϵ', 'ϵ'] 219: {0x03B8, [2]uint16{0x03D1, 0x03F4}}, // 'θ': ['ϑ', 'ϴ'] 114: {0x03B9, [2]uint16{0x0345, 0x1FBE}}, // 'ι': ['ͅ', 'ι'] 8: {0x03BA, [2]uint16{0x03F0, 0x03F0}}, // 'κ': ['ϰ', 'ϰ'] 52: {0x03BC, [2]uint16{0x00B5, 0x00B5}}, // 'μ': ['µ', 'µ'] 142: {0x03C0, [2]uint16{0x03D6, 0x03D6}}, // 'π': ['ϖ', 'ϖ'] 36: {0x03C1, [2]uint16{0x03F1, 0x03F1}}, // 'ρ': ['ϱ', 'ϱ'] 186: {0x03C2, [2]uint16{0x03C3, 0x03C3}}, // 'ς': ['σ', 'σ'] 80: {0x03C3, [2]uint16{0x03C2, 0x03C2}}, // 'σ': ['ς', 'ς'] 19: {0x03C6, [2]uint16{0x03D5, 0x03D5}}, // 'φ': ['ϕ', 'ϕ'] 214: {0x03C9, [2]uint16{0x2126, 0x2126}}, // 'ω': ['Ω', 'Ω'] 242: {0x03D0, [2]uint16{0x03B2, 0x03B2}}, // 'ϐ': ['β', 'β'] 136: {0x03D1, [2]uint16{0x03B8, 0x03F4}}, // 'ϑ': ['θ', 'ϴ'] 225: {0x03D5, [2]uint16{0x03C6, 0x03C6}}, // 'ϕ': ['φ', 'φ'] 120: {0x03D6, [2]uint16{0x03C0, 0x03C0}}, // 'ϖ': ['π', 'π'] 187: {0x03F0, [2]uint16{0x03BA, 0x03BA}}, // 'ϰ': ['κ', 'κ'] 81: {0x03F1, [2]uint16{0x03C1, 0x03C1}}, // 'ϱ': ['ρ', 'ρ'] 20: {0x03F4, [2]uint16{0x0398, 0x03D1}}, // 'ϴ': ['Θ', 'ϑ'] 170: {0x03F5, [2]uint16{0x03B5, 0x03B5}}, // 'ϵ': ['ε', 'ε'] 177: {0x0412, [2]uint16{0x1C80, 0x1C80}}, // 'В': ['ᲀ', 'ᲀ'] 221: {0x0414, [2]uint16{0x1C81, 0x1C81}}, // 'Д': ['ᲁ', 'ᲁ'] 188: {0x041E, [2]uint16{0x1C82, 0x1C82}}, // 'О': ['ᲂ', 'ᲂ'] 127: {0x0421, [2]uint16{0x1C83, 0x1C83}}, // 'С': ['ᲃ', 'ᲃ'] 21: {0x0422, [2]uint16{0x1C84, 0x1C85}}, // 'Т': ['ᲄ', 'ᲅ'] 199: {0x042A, [2]uint16{0x1C86, 0x1C86}}, // 'Ъ': ['ᲆ', 'ᲆ'] 122: {0x0432, [2]uint16{0x1C80, 0x1C80}}, // 'в': ['ᲀ', 'ᲀ'] 166: {0x0434, [2]uint16{0x1C81, 0x1C81}}, // 'д': ['ᲁ', 'ᲁ'] 133: {0x043E, [2]uint16{0x1C82, 0x1C82}}, // 'о': ['ᲂ', 'ᲂ'] 72: {0x0441, [2]uint16{0x1C83, 0x1C83}}, // 'с': ['ᲃ', 'ᲃ'] 222: {0x0442, [2]uint16{0x1C84, 0x1C85}}, // 'т': ['ᲄ', 'ᲅ'] 144: {0x044A, [2]uint16{0x1C86, 0x1C86}}, // 'ъ': ['ᲆ', 'ᲆ'] 167: {0x0462, [2]uint16{0x1C87, 0x1C87}}, // 'Ѣ': ['ᲇ', 'ᲇ'] 61: {0x0463, [2]uint16{0x1C87, 0x1C87}}, // 'ѣ': ['ᲇ', 'ᲇ'] 4: {0x1C80, [2]uint16{0x0432, 0x0432}}, // 'ᲀ': ['в', 'в'] 154: {0x1C81, [2]uint16{0x0434, 0x0434}}, // 'ᲁ': ['д', 'д'] 48: {0x1C82, [2]uint16{0x043E, 0x043E}}, // 'ᲂ': ['о', 'о'] 198: {0x1C83, [2]uint16{0x0441, 0x0441}}, // 'ᲃ': ['с', 'с'] 93: {0x1C84, [2]uint16{0x0442, 0x1C85}}, // 'ᲄ': ['т', 'ᲅ'] 243: {0x1C85, [2]uint16{0x0442, 0x1C84}}, // 'ᲅ': ['т', 'ᲄ'] 137: {0x1C86, [2]uint16{0x044A, 0x044A}}, // 'ᲆ': ['ъ', 'ъ'] 31: {0x1C87, [2]uint16{0x0463, 0x0463}}, // 'ᲇ': ['ѣ', 'ѣ'] 182: {0x1C88, [2]uint16{0xA64B, 0xA64B}}, // 'ᲈ': ['ꙋ', 'ꙋ'] 203: {0x1E60, [2]uint16{0x1E9B, 0x1E9B}}, // 'Ṡ': ['ẛ', 'ẛ'] 97: {0x1E61, [2]uint16{0x1E9B, 0x1E9B}}, // 'ṡ': ['ẛ', 'ẛ'] 109: {0x1E9B, [2]uint16{0x1E61, 0x1E61}}, // 'ẛ': ['ṡ', 'ṡ'] 65: {0x1FBE, [2]uint16{0x0345, 0x03B9}}, // 'ι': ['ͅ', 'ι'] 150: {0x2126, [2]uint16{0x03A9, 0x03A9}}, // 'Ω': ['Ω', 'Ω'] 239: {0x212A, [2]uint16{0x004B, 0x004B}}, // 'K': ['K', 'K'] 134: {0x212B, [2]uint16{0x00C5, 0x00C5}}, // 'Å': ['Å', 'Å'] 32: {0xA64A, [2]uint16{0x1C88, 0x1C88}}, // 'Ꙋ': ['ᲈ', 'ᲈ'] 183: {0xA64B, [2]uint16{0x1C88, 0x1C88}}, // 'ꙋ': ['ᲈ', 'ᲈ'] } strcase-0.0.5/internal/tables/tables_test.go 0000664 0000000 0000000 00000005365 14720254634 0021126 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. package tables import ( "strings" "testing" "unicode" "unicode/utf8" "github.com/charlievieth/strcase/internal/tables/assigned" ) func TestCaseFold(t *testing.T) { t.Run("Limits", func(t *testing.T) { for r := unicode.MaxRune; r < unicode.MaxRune+10; r++ { x := CaseFold(r) if x != r { t.Errorf("CaseFold(0x%04X) = 0x%04X; want: 0x%04X", r, x, r) } } for r := rune(0); r < ' '; r++ { x := CaseFold(r) if x != r { t.Errorf("CaseFold(0x%04X) = 0x%04X; want: 0x%04X", r, x, r) } } if r := CaseFold(utf8.RuneError); r != utf8.RuneError { t.Errorf("CaseFold(0x%04X) = 0x%04X; want: 0x%04X", utf8.RuneError, r, utf8.RuneError) } }) t.Run("ValidFolds", func(t *testing.T) { for _, p := range _CaseFolds { if r := CaseFold(rune(p.From)); r != rune(p.To) { t.Errorf("CaseFold(0x%04X) = 0x%04X; want: 0x%04X", rune(p.From), r, rune(p.To)) } } }) t.Run("UnicodeCases", func(t *testing.T) { folds := make(map[rune]rune) for _, p := range _CaseFolds { if p.From != 0 { folds[rune(p.From)] = rune(p.To) } } for _, rt := range unicode.Categories { visit(rt, func(r rune) { if rr, ok := folds[r]; ok { r = rr } if got := CaseFold(r); got != r { t.Errorf("CaseFold(0x%04X) = 0x%04X; want: 0x%04X", r, got, r) } }) } }) // Test against all assigned Unicode code points. t.Run("Assigned", func(t *testing.T) { all := assigned.AssignedRunes(unicode.Version) if len(all) == 0 { t.Fatalf("missing assigned code points for Unicode version: %q", unicode.Version) } n := 0 for _, r := range all { sr := CaseFold(r) if sr != r { n++ } if !strings.EqualFold(string(sr), string(r)) { t.Errorf("CaseFold(%q) = %q is an invalid fold", r, sr) } } if n == 0 { t.Fatal("failed to fold any runes") } }) } func TestUpperLower(t *testing.T) { // Test against all assigned Unicode code points. all := assigned.AssignedRunes(unicode.Version) if len(all) == 0 { t.Fatalf("missing assigned code points for Unicode version: %q", unicode.Version) } for _, r := range all { u0, l0, _ := ToUpperLower(r) u1 := unicode.ToUpper(r) l1 := unicode.ToLower(r) if u0 != u1 || l0 != l1 { t.Errorf("ToUpperLower(0x%04X) = 0x%04X, 0x%04X want: 0x%04X, 0x%04X", r, u0, l0, u1, l1) } } } // visit visits all runes in the given RangeTable in order, calling fn for each. func visit(rt *unicode.RangeTable, fn func(rune)) { for _, r16 := range rt.R16 { for r := rune(r16.Lo); r <= rune(r16.Hi); r += rune(r16.Stride) { fn(r) } } for _, r32 := range rt.R32 { for r := rune(r32.Lo); r <= rune(r32.Hi); r += rune(r32.Stride) { fn(r) } } } strcase-0.0.5/internal/test/ 0000775 0000000 0000000 00000000000 14720254634 0015762 5 ustar 00root root 0000000 0000000 strcase-0.0.5/internal/test/fuzz.go 0000664 0000000 0000000 00000043247 14720254634 0017321 0 ustar 00root root 0000000 0000000 package test import ( crand "crypto/rand" "encoding/binary" "flag" "fmt" "io" "math/rand" "runtime" "sort" "strings" "sync/atomic" "testing" "time" "unicode" "unicode/utf8" "github.com/charlievieth/strcase/internal/tables" "github.com/charlievieth/strcase/internal/tables/assigned" ) func init() { if len(assignedRunes) == 0 { panic("no assigned runes for Unicode version: " + unicode.Version) } } var exhaustiveFuzz = flag.Bool("exhaustive", false, "Run exhaustive fuzz tests (slow).") // All assigned runes for the current Unicode version var assignedRunes = assigned.AssignedRunes(unicode.Version) // CEV: Curated list of categories that should include all foldable // Unicode points. We used to check all Unicode categories but that // took around 15-20ms. var multiwidthRunes, foldableRunes = generateRuneTables( unicode.Upper, unicode.Lower, unicode.Title, unicode.Mark, unicode.Number, unicode.Symbol, ) func FoldableRunes() []rune { return foldableRunes } func generateRuneTables(tables ...*unicode.RangeTable) ([]rune, []rune) { foldable := make([]rune, 0, 4096) multiWidth := make([]rune, 0, 128) for _, rt := range tables { visitTable(rt, func(r rune) { if rr := unicode.SimpleFold(r); rr != r { n := utf8.RuneLen(r) for rr != r { if utf8.RuneLen(rr) != n { multiWidth = append(multiWidth, rr) } foldable = append(foldable, rr) rr = unicode.SimpleFold(rr) } return // no point checking Upper/Lower } // This is slow and currently just adds 'İ' and 'ı' which // we don't fold, but keep it in case more odd characters // are added in future Unicode versions. if rr := unicode.ToLower(r); r != rr { if utf8.RuneLen(r) != utf8.RuneLen(rr) { multiWidth = append(multiWidth, rr) } foldable = append(foldable, r, rr) } else if rr := unicode.ToUpper(r); r != rr { if utf8.RuneLen(r) != utf8.RuneLen(rr) { multiWidth = append(multiWidth, rr) } foldable = append(foldable, r, rr) } }) } if len(foldable) == 0 || len(multiWidth) == 0 { panic(fmt.Sprintf("failed to generate foldable (%d) / multi-width (%d) runes", len(foldable), len(multiWidth))) } return compact(foldable), compact(multiWidth) } type byRune []rune func (b byRune) Len() int { return len(b) } func (b byRune) Less(i, j int) bool { return b[i] < b[j] } func (b byRune) Swap(i, j int) { b[i], b[j] = b[j], b[i] } // Backport of slices.Compact func compact(s []rune) []rune { if len(s) < 2 { return s } if !sort.IsSorted(byRune(s)) { sort.Sort(byRune(s)) } for k := 1; k < len(s); k++ { if s[k] == s[k-1] { s2 := s[k:] for k2 := 1; k2 < len(s2); k2++ { if s2[k2] != s2[k2-1] { s[k] = s2[k2] k++ } } return s[:k] } } return s } // visitTable visits all runes in the given RangeTable in order, calling fn for each. func visitTable(rt *unicode.RangeTable, fn func(rune)) { for _, r16 := range rt.R16 { for r := rune(r16.Lo); r <= rune(r16.Hi); r += rune(r16.Stride) { fn(r) } } for _, r32 := range rt.R32 { for r := rune(r32.Lo); r <= rune(r32.Hi); r += rune(r32.Stride) { fn(r) } } } func cryptoRandInt(t testing.TB) int64 { var b [8]byte if _, err := io.ReadFull(crand.Reader, b[:]); err != nil { if t != nil { t.Fatal(err) } panic(err) } return int64(binary.LittleEndian.Uint64(b[:])) } func intn(rr *rand.Rand, n int) int { if n <= 0 { return 0 } return rr.Intn(n) } func invalidRune(rr *rand.Rand) rune { const surrogateMin = 0xD800 const surrogateMax = 0xDFFF n := rr.Int31n(surrogateMax - surrogateMin) if n&1 == 0 { return utf8.MaxRune + n + 1 } return n + surrogateMin } func randRune(rr *rand.Rand) (r rune) { switch n := rr.Intn(100); { case n <= 1: if n == 1 { return rr.Int31n(255-utf8.RuneSelf) + utf8.RuneSelf } return invalidRune(rr) case n <= 3: // 1..2 // Funky runes 'İ' and 'ı' have upper/lower case forms // but do not fold. if n&1 != 0 { return 'İ' } return 'ı' case n <= 10: return '\u212a' // Kelvin K case n <= 30: return multiwidthRunes[rr.Intn(len(multiwidthRunes))] case n <= 50: return foldableRunes[rr.Intn(len(foldableRunes))] case n <= 90: return assignedRunes[rr.Intn(len(assignedRunes))] default: return rr.Int31n(128) } } // appendRandRunes appends random runes to rs func appendRandRunes(rs []rune, rr *rand.Rand, n int) []rune { if cap(rs) < n { rs = make([]rune, n) } else { rs = rs[:n] } for i := 0; i < len(rs); i++ { rs[i] = randRune(rr) } // TODO: append a run of runes with the same last byte // Randomly add a run of Kelvin K if rr.Float64() < 0.10 { n := intn(rr, len(rs)-4) for i := n; i < len(rs) && i < n+4; i++ { rs[i] = '\u212a' } } return rs } // randCaseRune will randomly change the case of rune r func randCaseRune(rr *rand.Rand, r rune) rune { // Change the case 2/3 of the time if rr.Int31n(32) < 24 { r = unicode.SimpleFold(r) } return r } // changeRuneCase changes the case of runes in rs func changeRuneCase(rr *rand.Rand, rs []rune) []rune { for i, r := range rs { rs[i] = randCaseRune(rr, r) } return rs } // nonMatchingRune returns a rune that does not fold to sr func nonMatchingRune(rr *rand.Rand, sr rune) rune { for i := 0; i < 1024; i++ { tr := assignedRunes[rr.Intn(len(assignedRunes))] if !EqualRune(sr, tr) { return tr } } panic("failed to generate a valid replacement") } // replaceOneRune replaces one rune in rs with another rune that // does not fold to the original func replaceOneRune(rr *rand.Rand, rs []rune) []rune { if len(rs) == 0 { return rs } var i int if rr.Intn(8) < 6 { i = len(rs)/2 + intn(rr, len(rs)/2) // later index } else { i = rr.Intn(len(rs)) // any index } rs[i] = nonMatchingRune(rr, rs[i]) return rs } func fuzzNumCPU() int { numCPU := runtime.NumCPU() if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { // Avoid using all the cores. // NB(charlie): this is really only for my personal dev setup. if numCPU >= 8 { numCPU -= 2 } } if numCPU < 1 { numCPU = 1 } return numCPU } func randomTestSeeds(t *testing.T) []int64 { seeds := []int64{ 1, time.Now().UnixNano(), cryptoRandInt(t), cryptoRandInt(t), } if !testing.Short() { numCPU := fuzzNumCPU() for i := len(seeds); i < numCPU; i++ { seeds = append(seeds, cryptoRandInt(t)) } } return seeds } func runRandomTest(t *testing.T, fn func(t *fuzzTest)) { if *exhaustiveFuzz && testing.Short() { t.Fatal(`Cannot combine "-short" and "-exhaustive" flags`) } // Count is the total number of test iterations to run. count := 2_500 if testing.Short() { count /= 2 } seeds := randomTestSeeds(t) if *exhaustiveFuzz { d := 4_000_000 count = d / len(seeds) t.Logf("N: %d", count) } for _, seed := range seeds { seed := seed t.Run(fmt.Sprintf("%d", seed), func(t *testing.T) { t.Parallel() start := time.Now() if testing.Verbose() { t.Cleanup(func() { t.Logf("duration: %s", time.Since(start)) }) } tt := newFuzzTest(t, seed) for i := 0; i < count; i++ { fn(tt) } }) if t.Failed() && testing.Short() { return } } } type fuzzTest struct { testing.TB rr *rand.Rand // Scratch space for constructing test arguments haystack []rune needle []rune } func newFuzzTest(t *testing.T, seed int64) *fuzzTest { if seed < 0 { seed = cryptoRandInt(t) } return &fuzzTest{ TB: &testWrapper{T: t}, rr: rand.New(rand.NewSource(seed)), haystack: make([]rune, 0, 32), needle: make([]rune, 0, 32), } } func randSubSlice(rr *rand.Rand, rs []rune, min, max int) ([]rune, int) { if min < 0 { panic("non-positive min") } if max > len(rs) { panic("max larger than slice") } if max <= 0 { max = len(rs) } n := intn(rr, max-min) + min o := intn(rr, len(rs)-n) return rs[o : o+n], o } func (t *fuzzTest) IndexArgs(fn func(s, sep []rune) int) (_s, _sep string, out int) { const maxLength = 72 n := t.rr.Intn(maxLength-1) + 1 s := appendRandRunes(t.haystack[:0], t.rr, n) nsep := len(s) if nsep > 32 && t.rr.Float64() <= 0.5 { nsep = 32 // Test small separators } orig, _ := randSubSlice(t.rr, s, 1, nsep) // original separator (unmodified) sep := append(t.needle[:0], orig...) match := t.rr.Float64() <= 0.5 if !match && t.rr.Float64() <= 0.1 { s = append(s, s[t.rr.Intn(len(s))]) // Make sep longer than s } for i := 0; i < 4; i++ { if match { // Range over the original for i, r := range orig { sep[i] = randCaseRune(t.rr, r) } } else { j := t.rr.Intn(len(sep)) sep[j] = nonMatchingRune(t.rr, sep[j]) } out := fn(s, sep) if match == (out >= 0) { return string(s), string(sep), out } } panic(fmt.Sprintf("Failed to generate valid Index args match: %t: s: %q sep: %q", match, string(s), string(orig))) } func (t *fuzzTest) CompareArgs() (_s, _sep string, out int) { clamp := func(n int) int { if n < 0 { return -1 } if n > 0 { return 1 } return 0 } compareRunes := func(s, t []rune) int { for i := 0; i < len(s) && i < len(t); i++ { sr := tables.CaseFold(s[i]) tr := tables.CaseFold(t[i]) // Convert invalid runes to RuneError since that // is what utf8.DecodeRuneInString does. if !utf8.ValidRune(sr) { sr = utf8.RuneError } if !utf8.ValidRune(tr) { tr = utf8.RuneError } if sr != tr { return clamp(int(sr) - int(tr)) } } return clamp(len(s) - len(t)) } match := t.rr.Float64() <= 0.5 for lim := 32; lim > 0; lim-- { s0 := appendRandRunes(t.haystack[:0], t.rr, t.rr.Intn(14)+2) for i := 0; i < 16; i++ { s1 := append(t.needle[:0], s0...) if match { n := t.rr.Intn(4) + 1 for i, r := range s1 { if i%n == 0 { s1[i] = randCaseRune(t.rr, r) } } } else { // Change length switch n := t.rr.Intn(100); { case n <= 25: s1 = s1[:t.rr.Intn(len(s1))] case n <= 50: s1 = append(s1, s1[:t.rr.Intn(len(s1))]...) case n <= 75: s1 = replaceOneRune(t.rr, s1) } } ret := compareRunes(s0, s1) if match && ret != 0 { continue } return string(s0), string(s1), ret } } panic("Failed to generate vaild Compare args") } func CompareFuzz(t *testing.T, fn func(s0, s1 string) int) { runRandomTest(t, func(t *fuzzTest) { s0, s1, want := t.CompareArgs() got := fn(s0, s1) if got != want { t.Errorf("Compare\n"+ "S: %q\n"+ "Sep: %q\n"+ "Got: %d\n"+ "Want: %d\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n", s0, s1, got, want, s0, s1, strings.ToLower(s0), strings.ToLower(s1), ) } if got == 0 && !strings.EqualFold(s0, s1) { t.Errorf("Compare(%q, %q) = 0 but EqualFold() = false", s0, s1) } }) } func IndexFuzz(t *testing.T, fn IndexFunc) { runRandomTest(t, func(t *fuzzTest) { s, sep, out := t.IndexArgs(IndexRunesReference) got := fn(s, sep) if got != out { // Make sure that our calculated index is correct using the // a slow but accurate regex. actual := indexRegex(s, sep) if out != actual { t.Errorf("Invalid generated test: got: %d want: %d actual: %d\n"+ "S: %q\n"+ "Sep: %q\n"+ "Got: %d\n"+ "Expected: %d\n"+ "Actual: %d\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n", got, out, actual, s, sep, got, out, actual, s, sep, strings.ToLower(s), strings.ToLower(sep)) return } } if got != out { t.Errorf("Index\n"+ "S: %q\n"+ "Sep: %q\n"+ "Got: %d\n"+ "Want: %d\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n", s, sep, got, out, s, sep, strings.ToLower(s), strings.ToLower(sep), ) } }) } func LastIndexFuzz(t *testing.T, fn IndexFunc) { runRandomTest(t, func(t *fuzzTest) { s, sep, out := t.IndexArgs(LastIndexRunesReference) got := fn(s, sep) if got != out { // Make sure that our calculated index is correct using the // a slow but accurate regex. actual := lastIndexRegex(s, sep) if out != actual { t.Errorf("Invalid generated test: got: %d want: %d actual: %d\n"+ "S: %q\n"+ "Sep: %q\n"+ "Got: %d\n"+ "Expected: %d\n"+ "Actual: %d\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n", got, out, actual, s, sep, got, out, actual, s, sep, strings.ToLower(s), strings.ToLower(sep)) return } } if got != out { t.Errorf("Index\n"+ "S: %q\n"+ "Sep: %q\n"+ "Got: %d\n"+ "Want: %d\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n", s, sep, got, out, s, sep, strings.ToLower(s), strings.ToLower(sep), ) } }) } func EqualFoldFuzz(t *testing.T, fns ...TestFunc) { // Test that we match strings.EqualFold runRandomTest(t, func(t *fuzzTest) { n := t.rr.Intn(30) + 2 r0 := appendRandRunes(t.haystack[:0], t.rr, n) r1 := append(t.needle[:0], r0...) if t.rr.Float64() <= 0.5 { r1 = changeRuneCase(t.rr, r1) } else { r1 = replaceOneRune(t.rr, r1) } s0 := string(r0) s1 := string(r1) want := strings.EqualFold(s0, s1) for _, d := range fns { if got := d.Contains(s0, s1); got != want { t.Errorf("%s(%q, %q) = %t; want: %t", d.Name, s0, s1, got, want) } } }) } func (t *fuzzTest) HasPrefixArgs() (_s, _prefix string, match, exhausted bool) { match = t.rr.Float64() <= 0.5 for lim := 32; lim > 0; lim-- { s := appendRandRunes(t.haystack[:0], t.rr, t.rr.Intn(16)+1) for i := 0; i < 4; i++ { np := intn(t.rr, len(s)-1) + 1 prefix := append(t.needle[:0], s[:np]...) if match { prefix = changeRuneCase(t.rr, prefix) } else { if t.rr.Float64() >= 0.75 { prefix = replaceOneRune(t.rr, prefix) } else { prefix = append(s, s[:np]...) // len(prefix) > len(s) } } if got, exh := hasPrefixRunes(s, prefix); got == match { return string(s), string(prefix), match, exh } } } panic("Failed to generate vaild HasPrefix args") } func HasPrefixFuzz(t *testing.T, fn func(s0, s1 string) (bool, bool)) { runRandomTest(t, func(t *fuzzTest) { s, prefix, want, exhausted := t.HasPrefixArgs() got, ex := fn(s, prefix) if got != want || ex != exhausted { t.Errorf("HasPrefix\n"+ "S: %q\n"+ "Prefix: %q\n"+ "Got: %t, %t\n"+ "Want: %t, %t\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n", s, prefix, got, ex, want, exhausted, s, prefix, strings.ToLower(s), strings.ToLower(prefix), ) } }) } func (t *fuzzTest) HasSuffixArgs() (string, string, bool) { hasSuffix := func(s, suffix []rune) bool { if len(s) < len(suffix) { return false } return EqualRuneSlice(s[len(s)-len(suffix):], suffix) } match := t.rr.Float64() <= 0.5 for lim := 32; lim > 0; lim-- { s := appendRandRunes(t.haystack[:0], t.rr, t.rr.Intn(16)+1) for i := 0; i < 4; i++ { np := intn(t.rr, len(s)-1) suffix := append(t.needle[:0], s[np:]...) if match { suffix = changeRuneCase(t.rr, suffix) } else { if t.rr.Float64() >= 0.75 { suffix = replaceOneRune(t.rr, suffix) } else { suffix = append(s, s[:np]...) // len(suffix) > len(s) } } if got := hasSuffix(s, suffix); got == match { return string(s), string(suffix), match } } } panic("Failed to generate vaild HasSuffix args") } func HasSuffixFuzz(t *testing.T, fn ContainsFunc) { runRandomTest(t, func(t *fuzzTest) { s, suffix, want := t.HasSuffixArgs() got := fn(s, suffix) if got != want { actual := hasSuffixRegex(s, suffix) if actual != want { t.Errorf("Invalid generated test: got: %t want: %t actual: %t\n"+ "S: %q\n"+ "Suffix: %q\n"+ "Got: %t\n"+ "Expected: %t\n"+ "Actual: %t\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Suffix: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Suffix: %+q\n"+ "\n", got, want, actual, s, suffix, got, want, actual, s, suffix, strings.ToLower(s), strings.ToLower(suffix), ) want = actual } t.Errorf("HasSuffix\n"+ "S: %q\n"+ "Prefix: %q\n"+ "Got: %t\n"+ "Want: %t\n"+ "\n"+ "ASCII:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n"+ "Lower:\n"+ "S: %+q\n"+ "Sep: %+q\n"+ "\n", s, suffix, got, want, s, suffix, strings.ToLower(s), strings.ToLower(suffix), ) } }) } var _ testing.TB = (*testWrapper)(nil) // A testWrapper wraps a testing.T and will immediately fail the test // if more that N errors occur. type testWrapper struct { *testing.T fails int32 } func (c *testWrapper) check() { c.T.Helper() if n := atomic.AddInt32(&c.fails, 1); n >= 10 { // We run tests in parallel so only call Fatal on the // test that crossed the threshold. if n == 10 { c.T.Fatal("Too many errors:", n) } else { c.T.FailNow() // Abort subsequent tests } panic(fmt.Sprintf("aborting test: too many errors: %d", n)) // unreachable } } func (c *testWrapper) Error(args ...any) { c.T.Helper() c.T.Error(args...) c.check() } func (c *testWrapper) Errorf(format string, args ...any) { c.T.Helper() c.T.Errorf(format, args...) c.check() } func (c *testWrapper) Fail() { c.T.Helper() c.T.Fail() c.check() } func (c *testWrapper) FailNow() { c.T.Helper() c.T.FailNow() c.check() } func (c *testWrapper) Fatal(args ...any) { c.T.Helper() c.T.Fatal(args...) c.check() } func (c *testWrapper) Fatalf(format string, args ...any) { c.T.Helper() c.T.Fatalf(format, args...) c.check() } strcase-0.0.5/internal/test/fuzz_test.go 0000664 0000000 0000000 00000003121 14720254634 0020343 0 ustar 00root root 0000000 0000000 package test import ( "math/rand" "reflect" "testing" "time" "unicode" "unicode/utf8" "github.com/charlievieth/strcase/internal/tables/assigned" ) func TestInvalidRune(t *testing.T) { rr := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < 10_000; i++ { r := invalidRune(rr) if utf8.ValidRune(r) { t.Fatalf("utf8.ValidRune(%q) = %t; want: %t", r, true, false) } } } // Test that our generated tables contain all the desired Unicode points // since we use a subset of Unicode categories to generate them for perf // reasons. func TestGeneratedRuneTables(t *testing.T) { if testing.Short() { t.Skip("short test") } all := assigned.Assigned(unicode.Version) if all == nil { t.Fatal("no assigned tables for Unicode version:", unicode.Version) } diff := func(got, want []rune) (extra, missing []rune) { gm := make(map[rune]bool, len(got)) wm := make(map[rune]bool, len(want)) for _, r := range got { gm[r] = true } for _, r := range want { if !gm[r] { missing = append(missing, r) } wm[r] = true } for _, r := range got { if !wm[r] { extra = append(extra, r) } } return extra, missing } compare := func(name string, got, want []rune) { t.Helper() if reflect.DeepEqual(got, want) { return } extra, missing := diff(got, want) t.Errorf("%s table is missing or contains extra runes\n"+ "Extra: 0x%04X\n"+ "Missing: 0x%04X\n", name, extra, missing) } multiwidth, foldable := generateRuneTables(all) compare("multiwidthRunes", multiwidth, multiwidthRunes) compare("foldableRunes", foldableRunes, foldable) } strcase-0.0.5/internal/test/test.go 0000664 0000000 0000000 00000150601 14720254634 0017273 0 ustar 00root root 0000000 0000000 package test import ( "bytes" "math/rand" "regexp" "runtime" "strconv" "strings" "sync" "testing" "time" "unicode" "unicode/utf8" "github.com/charlievieth/strcase/internal/tables" ) type IndexFunc func(s, substr string) int func ByteIndexFunc(fn func(s, sep []byte) int) IndexFunc { return func(s, sep string) int { return fn([]byte(s), []byte(sep)) } } func WrapRabinKarp(rabinKarp IndexFunc) IndexFunc { return func(s, substr string) int { if len(substr) == 0 { // Can't use Rabin-Karp for this test case return 0 } return rabinKarp(s, substr) } } type ContainsFunc func(s, substr string) bool func ByteContainsFunc(fn func(s, sep []byte) bool) ContainsFunc { return func(s, sep string) bool { return fn([]byte(s), []byte(sep)) } } type IndexRuneFunc func(s string, r rune) int func ByteIndexRuneFunc(fn func(s []byte, r rune) int) IndexRuneFunc { return func(s string, r rune) int { return fn([]byte(s), r) } } type IndexByteFunc func(s string, c byte) int func ByteIndexByte(fn func(s []byte, c byte) int) IndexByteFunc { return func(s string, c byte) int { return fn([]byte(s), c) } } type PrefixFunc func(s, prefix string) (bool, bool) func BytePrefixFunc(fn func(s, prefix []byte) (bool, bool)) PrefixFunc { return func(s, prefix string) (bool, bool) { return fn([]byte(s), []byte(prefix)) } } type TrimFunc func(s1, s2 string) string func ByteTrimFunc(fn func(s1, s2 []byte) []byte) TrimFunc { return func(s1, s2 string) string { return string(fn([]byte(s1), []byte(s2))) } } func UnicodeVersion(t *testing.T, version string) { if version != unicode.Version { t.Fatalf("unicode.Version (%s) != UnicodeVersion (%s):\n"+ "The version of Unicode included in the version of Go (%s) running this test\n"+ "does not match the Unicode version the strcase tables were generated with.\n"+ "\n"+ "This is likely due to the Unicode version being updated in a newer Go release.\n"+ "To regenerate the Unicode tables run: `go generate` and check in the changes to\n"+ "\"tables.go\" and \".tables.json\".\n"+ "\n"+ "NOTE: re-generating the Unicode tables can take a few minutes.", unicode.Version, version, runtime.Version()) } } type compareTest struct { s, t string out int } var compareTests = []compareTest{ {"", "", 0}, {"a", "a", 0}, {"a", "ab", -1}, {"ab", "a", 1}, {"ABC", "abd", -1}, {"abc", "ABD", -1}, {"abd", "ABC", 1}, {"123abc", "123ABC", 0}, {"αβδ", "ΑΒΔ", 0}, {"ΑΒΔ", "αβδ", 0}, {"αβδa", "ΑΒΔ", 1}, {"αβδ", "ΑΒΔa", -1}, {"αβa", "ΑΒΔ", -1}, {"ΑΒΔ", "αβa", 1}, {"αβδ", "ΑΒa", 1}, {"αabc", "αABD", -1}, {"αabd", "αABC", 1}, {strings.Repeat("\u212a", 8), strings.Repeat("k", 8), 0}, // Invalid UTF-8 should be considered equal (mapped to RuneError) {"a" + string(utf8.RuneError), "a" + string(unicode.MaxRune+1), 0}, {"a" + string(utf8.RuneError), "a\xFF", 0}, {"\xed\xa0\x80", "\xed\xa0\x81", 0}, {"\xF4\x7F\xBF\xBF", "\xF2\x7F\xBF\xBF", 0}, } func Compare(t *testing.T, fn IndexFunc) { // Test the tests (NOTE: we may want to remove this at some point since // strings.ToLower is not always correct). for i, test := range compareTests { got := strings.Compare(strings.ToLower(test.s), strings.ToLower(test.t)) if got != test.out { t.Errorf("%d: strings.Compare(%q, %q) = %d; want: %d", i, strings.ToLower(test.s), strings.ToLower(test.t), got, test.out) } } if t.Failed() { t.Fatal("invalid Compare tests") return } for i, test := range compareTests { got := fn(test.s, test.t) if got != test.out { t.Errorf("%d: Compare(%q, %q) = %d; want: %d", i, test.s, test.t, got, test.out) } } } func EqualFold(t *testing.T, fn func(s1, s2 string) bool) { // Ensure that strings.EqualFold does not match 'İ' (U+0130) // and ASCII 'i' or 'I'. This is mostly a sanity check. tests := append(compareTests, compareTest{"İ", "i", 1}, compareTest{"İ", "I", 1}, ) for _, test := range tests { want := test.out == 0 got := strings.EqualFold(test.s, test.t) if got != want { t.Errorf("strings.EqualFold(%q, %q) = %t; want: %t", test.s, test.t, got, want) } } if t.Failed() { t.Fatal("invalid EqualFold tests") return } for _, test := range tests { want := test.out == 0 got := fn(test.s, test.t) if got != want { t.Errorf("EqualFold(%q, %q) = %t; want: %t", test.s, test.t, got, want) } } } type indexTest struct { s string sep string out int } var indexTests = []indexTest{ {"", "", 0}, {"", "a", -1}, {"", "foo", -1}, {"fo", "foo", -1}, {"foo", "foo", 0}, {"oofofoofooo", "f", 2}, {"oofofoofooo", "foo", 4}, {"barfoobarfoo", "foo", 3}, {"foo", "", 0}, {"foo", "o", 1}, {"abcABCabc", "A", 0}, {"abcVBCabc", "V", 3}, // cases with one byte strings - test special case in Index() {"", "a", -1}, {"x", "a", -1}, {"x", "x", 0}, {"abc", "a", 0}, {"abc", "b", 1}, {"abc", "c", 2}, {"ABC", "BC", 1}, {"abc", "x", -1}, // test special cases in Index() for short strings {"", "ab", -1}, {"bc", "ab", -1}, {"ab", "ab", 0}, {"xab", "ab", 1}, {"xab"[:2], "ab", -1}, {"", "abc", -1}, {"xbc", "abc", -1}, {"abc", "abc", 0}, {"xabc", "abc", 1}, {"xabc"[:3], "abc", -1}, {"xabxc", "abc", -1}, {"", "abcd", -1}, {"xbcd", "abcd", -1}, {"abcd", "abcd", 0}, {"xabcd", "abcd", 1}, {"xyabcd"[:5], "abcd", -1}, {"xbcqq", "abcqq", -1}, {"abcqq", "abcqq", 0}, {"xabcqq", "abcqq", 1}, {"xyabcqq"[:6], "abcqq", -1}, {"xabxcqq", "abcqq", -1}, {"xabcqxq", "abcqq", -1}, {"", "01234567", -1}, {"32145678", "01234567", -1}, {"01234567", "01234567", 0}, {"x01234567", "01234567", 1}, {"x0123456x01234567", "01234567", 9}, {"xx01234567"[:9], "01234567", -1}, {"", "0123456789", -1}, {"3214567844", "0123456789", -1}, {"0123456789", "0123456789", 0}, {"x0123456789", "0123456789", 1}, {"x012345678x0123456789", "0123456789", 11}, {"xyz0123456789"[:12], "0123456789", -1}, {"x01234567x89", "0123456789", -1}, {"", "0123456789012345", -1}, {"3214567889012345", "0123456789012345", -1}, {"0123456789012345", "0123456789012345", 0}, {"x0123456789012345", "0123456789012345", 1}, {"x012345678901234x0123456789012345", "0123456789012345", 17}, {"", "01234567890123456789", -1}, {"32145678890123456789", "01234567890123456789", -1}, {"01234567890123456789", "01234567890123456789", 0}, {"x01234567890123456789", "01234567890123456789", 1}, {"x0123456789012345678x01234567890123456789", "01234567890123456789", 21}, {"xyz01234567890123456789"[:22], "01234567890123456789", -1}, {"", "0123456789012345678901234567890", -1}, {"321456788901234567890123456789012345678911", "0123456789012345678901234567890", -1}, {"0123456789012345678901234567890", "0123456789012345678901234567890", 0}, {"x0123456789012345678901234567890", "0123456789012345678901234567890", 1}, {"x012345678901234567890123456789x0123456789012345678901234567890", "0123456789012345678901234567890", 32}, {"xyz0123456789012345678901234567890"[:33], "0123456789012345678901234567890", -1}, {"", "01234567890123456789012345678901", -1}, {"32145678890123456789012345678901234567890211", "01234567890123456789012345678901", -1}, {"01234567890123456789012345678901", "01234567890123456789012345678901", 0}, {"x01234567890123456789012345678901", "01234567890123456789012345678901", 1}, {"x0123456789012345678901234567890x01234567890123456789012345678901", "01234567890123456789012345678901", 33}, {"xyz01234567890123456789012345678901"[:34], "01234567890123456789012345678901", -1}, {"xxxxxx012345678901234567890123456789012345678901234567890123456789012", "012345678901234567890123456789012345678901234567890123456789012", 6}, {"", "0123456789012345678901234567890123456789", -1}, {"xx012345678901234567890123456789012345678901234567890123456789012", "0123456789012345678901234567890123456789", 2}, {"xx012345678901234567890123456789012345678901234567890123456789012"[:41], "0123456789012345678901234567890123456789", -1}, {"xx012345678901234567890123456789012345678901234567890123456789012", "0123456789012345678901234567890123456xxx", -1}, {"xx0123456789012345678901234567890123456789012345678901234567890120123456789012345678901234567890123456xxx", "0123456789012345678901234567890123456xxx", 65}, // Invalid UTF8 {"abc" + string(rune(utf8.RuneError)) + "123", string(rune(utf8.RuneError)), 3}, {"abc", string(rune(utf8.RuneError)), -1}, {"abc", string(rune(utf8.MaxRune)), -1}, // test fallback to Rabin-Karp. {"oxoxoxoxoxoxoxoxoxoxoxoy", "oy", 22}, {"oxoxoxoxoxoxoxoxoxoxoxox", "oy", -1}, // Actually test fallback to Rabin-Karp (the above tests don't trigger it). {strings.Repeat("ox", 64) + "yox", "oα" + strings.Repeat("ox", 32/len("ox")), -1}, {strings.Repeat("ox", 64) + "oα" + strings.Repeat("ox", 32/2), "oα" + strings.Repeat("ox", 32/2), 128}, // Sep longer (in bytes) than s {"aa", "aaa", -1}, {"aa", "aaaa", -1}, {"aa", "aaaaa", -1}, // Unicode strings {"oxoxoxoxoxoxoxoxoxoxoxoyoα", "oα", 24}, {"oxoxoxoxoxoxoxoxoxoxoxα", "α", 22}, // test fallback to Rabin-Karp (unicode). {"xx0123456789012345678901234567890123456789012345678901234567890120123456789012345678901234567890123456xxx☻", "0123456789012345678901234567890123456xxx☻", 65}, {"abc☻", "abc☻", 0}, {"abc☻", "ABC☻", 0}, {"123abc☻", "ABC☻", 3}, } // TODO: combine with indexTests var unicodeIndexTests = []indexTest{ // Map Kelvin 'K' (U+212A) to lowercase latin 'k'. {"abcK@", "k@", 3}, // Map the long 'S' 'ſ' to 'S' and 's'. {"abcſ@", "s@", 3}, {"abcS@", "ſ@", 3}, // Test with a unicode prefix in the substr to make sure the unicode // implementation is correct. {"abc☻K@", "☻k@", 3}, {"abc☻S@", "☻ſ@", 3}, // Sep longer (in bytes) {"\u212a", "a", -1}, {"\u212a", "k", 0}, {"a\u212a", "a\u212a", 0}, {"a\u212a", "a\u212a\u212a", -1}, // Test that İ does not fold to [Ii] {"İ", "İ", 0}, {"İ", "i", -1}, {"İ", "I", -1}, {"İİ", "İİ", 0}, {"İİİİ", "İİ", 0}, {"İİİİİİ", "İİ", 0}, {"0123456789İİ", "İİ", 10}, {"01234567890123456789İİ", "İİ", 20}, {"İİ" + strings.Repeat("a", 64), "İİ" + strings.Repeat("a", 64), 0}, // "İ" does not fold to "i" {"İ", "i", -1}, {"aİ", "ai", -1}, // "İ" does not fold to "ı" {"İ", "ı", -1}, {"aİ", "aı", -1}, // Special Unicode points that are not equal to either their // uppercase or lowercase form. {"aLjLJljb", "ljlj", 1}, {"aDzDZdzb", "dzDZDz", 1}, {"DzDZdzDzDZdz", "dzDZDza", -1}, // Test the cutover to to bytealg.IndexString when it is triggered in // the middle of rune that contains consecutive runs of equal bytes. {"aaaaaKKKK\U000bc104a", "\U000bc104a", 17}, // cutover: (n + 16) / 8 {"aaaaaKKKK鄄a", "鄄a", 17}, {"aaKKKKKa\U000bc104a", "\U000bc104a", 18}, // cutover: 4 + n>>4 {"aaKKKKKa鄄a", "鄄a", 18}, // Test cases found by fuzzing {"\x00iK", "iK", 1}, {"İKKKK\x00iK", "iK", 15}, {"İKKKKiK", "iK", 14}, {"4=K ", "=\u212a", 1}, {"I", "\u0131", -1}, // Evil strings discovered fuzzing. { s: "32ⱭⱭⱭⱭⱭ45678890ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ23456789ⱭⱭⱭⱭⱭⱭⱭⱭⱭⱭ", sep: "0ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ234567890ⱭⱭⱭⱭⱭ234567890", out: -1, }, { s: "<<\ua7ac\x02\ub680\U0010f410\U0002ac40\n\x15\u2126\ufa12\x14", sep: "<\ua7ac\x02\ub680\U0010f410\U0002ac40\n\x15\u03c9\ufa12", out: 1, }, { s: "\U00024b8a\u2c65I\u7c12\u313a/A\u027d\u017f=\x05", sep: "\U00024b8a\u2c65I\u7c12\u313a/a\u2c64\u017f=", out: 0, }, { s: "\U0002a433\u3577\U000230d6\U001024b4\u73f1\u56f0\U0002d7db\U0010e3ac\U000204ca\u2575~\u8825\U0002ba82\U0002c0e4\u743aK]", sep: "\u743a\u212a", out: 48, }, { s: "z0\U0010640b\U0001f326k-k\U00100621\U000240ff\U000e013fl", sep: "\u212a-\u212a", out: 10, }, { s: "\U0007279d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd", sep: "\ufffd\ufffd\ufffd\ufffd\ufffd", out: 4, }, { s: ">Ā\U000c4c1bKKKK\x00YUв\U000bc104q9", sep: "\U000bc104q9", out: 24, }, { s: "\U000bc104q9", sep: "\U000bc104q9", out: 0, }, { s: "\ufffd\uff42", sep: "\ufffd", out: 0, }, { s: "abc\ufffd\uff42", sep: "\ufffd", out: 3, }, // Make sure we don't fold 'ı' (LATIN SMALL LETTER DOTLESS I) { s: "\u0224Ie\U00010cd4", sep: "\u0224\u0131e\U00010cd4", out: -1, }, } func init() { // Append some test cases that include Kelvin K and ASCII K. Since Kelvin // K is 3x the width of ASCII [Kk] we want to test the logic for handling // that. p0 := strings.Repeat("\u212a", 64) // Kelvin K p1 := strings.Repeat("K", 64) n := utf8.RuneLen('\u212a') for i := 2; i <= 64; i *= 2 { s0 := p0[:i*n] s1 := p1[:i] unicodeIndexTests = append(unicodeIndexTests, indexTest{s0, s1, 0}, indexTest{s1, s0, 0}) } } var lastIndexTests = []indexTest{ {"", "", 0}, {"", "a", -1}, {"", "foo", -1}, {"fo", "foo", -1}, {"foo", "foo", 0}, {"foo", "f", 0}, {"oofofoofooo", "f", 7}, {"oofofoofooo", "foo", 7}, {"barfoobarfoo", "foo", 9}, {"foo", "", 3}, {"foo", "o", 2}, {"abcABCabc", "A", 6}, {"abcABCabc", "a", 6}, // Invalid UTF8 {"abc" + string(rune(utf8.RuneError)) + "123", string(rune(utf8.RuneError)), 3}, {"abc", string(rune(utf8.RuneError)), -1}, {"abc", string(rune(utf8.MaxRune)), -1}, { string(rune(unicode.MaxRune)), string(rune(unicode.MaxRune)), strings.LastIndex(string(rune(unicode.MaxRune)), string(rune(unicode.MaxRune))), }, { "a" + string(rune(unicode.MaxRune)), string(rune(unicode.MaxRune)), strings.LastIndex("a"+string(rune(unicode.MaxRune)), string(rune(unicode.MaxRune))), }, { string(rune(unicode.MaxRune + 1)), string(rune(unicode.MaxRune + 1)), strings.LastIndex(string(rune(unicode.MaxRune+1)), string(rune(unicode.MaxRune+1))), }, { "a" + string(rune(unicode.MaxRune+1)), string(rune(unicode.MaxRune + 1)), strings.LastIndex("a"+string(rune(unicode.MaxRune+1)), string(rune(unicode.MaxRune+1))), }, // Unicode {"fooΑΒΔbar", "αβδ", 3}, // Map Kelvin 'K' (U+212A) to lowercase latin 'k'. {"abcK@", "k@", 3}, // Map the long 'S' 'ſ' to 'S' and 's'. {"abcſ@", "s@", 3}, {"abcS@", "ſ@", 3}, // Test with a unicode prefix in the substr to make sure the unicode // implementation is correct. {"abc☻K@", "☻k@", 3}, {"abc☻S@", "☻ſ@", 3}, // Sep longer (in bytes) than s {"aa", "aaa", -1}, {"aa", "aaaa", -1}, {"aa", "aaaaa", -1}, {"a\u212a", "a\u212a", 0}, {"a\u212a", "a\u212a\u212a", -1}, {"a\u212a", "a\u212a\u212a\u212a", -1}, {"a\u212aa", "ka", 1}, // Tests discovered with fuzzing {"4=K ", "=\u212a", 1}, {"I", "\u0131", -1}, {"aßẛ", "ß", 1}, {"aßẛ", "a", 0}, {"OFf", "İF", -1}, {"``Ɽ", "\U000823eb`", -1}, {"\u0250\u0250\u0250\u0250\u0250 a", "\u2C6F\u2C6F\u2C6F\u2C6F\u2C6F A", 0}, // grows one byte per char {"a\u0250\u0250\u0250\u0250\u0250", "A\u2C6F\u2C6F\u2C6F\u2C6F\u2C6F", 0}, // {"\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D a", "\u0251\u0251\u0251\u0251\u0251 A", 0}, // shrinks one byte per char {"a\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D", "A\u0251\u0251\u0251\u0251\u0251", 0}, // shrinks one byte per char {"abc\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D", "\u0251\u0251\u0251\u0251\u0251", 3}, {"ΑΒΔ\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D", "\u0251\u0251\u0251\u0251\u0251", len("ΑΒΔ")}, } // Execute f on each test case. funcName should be the name of f; it's used // in failure reports. func runIndexTests(t testing.TB, f IndexFunc, funcName string, testCases []indexTest, noError bool) { t.Helper() fails := 0 for _, test := range testCases { actual := f(test.s, test.sep) if actual != test.out { fails++ errorf := t.Errorf if noError { errorf = t.Logf } var foldable bool for _, r := range test.sep { foldable = tables.FoldMap(r) != nil if foldable { break } } errorf("%s\n"+ "S: %q\n"+ "Sep: %q\n"+ "Got: %d\n"+ "Want: %d\n"+ "Fold: %t\n"+ "\n"+ "S: %s\n"+ "Sep: %s\n"+ "Lower:\n"+ "S: %s\n"+ "Sep: %s\n"+ "\n", funcName, test.s, test.sep, actual, test.out, foldable, strconv.QuoteToASCII(test.s), strconv.QuoteToASCII(test.sep), strconv.QuoteToASCII(strings.ToLower(test.s)), strconv.QuoteToASCII(strings.ToLower(test.sep)), ) } } if t.Failed() && testing.Verbose() { t.Logf("%s: failed %d out of %d tests", funcName, fails, len(testCases)) } } func Index(t *testing.T, fn IndexFunc) { if t.Failed() { t.Fatal("Reference Index function failed: tests are invalid") } runIndexTests(t, fn, "Index", indexTests, false) } // Test Index with invalid UTF-8 func IndexInvalid(t *testing.T, fn IndexFunc) { t.Run("Prefix", func(t *testing.T) { rr := rand.New(rand.NewSource(time.Now().UnixNano())) basePrefix := strings.Repeat("=☻", 32) var tests []indexTest for i := 0; i < 4; i++ { iterateInvalidSequenceTests(func(s0, s1 string) { for i := 0; i < 8; i++ { prefix := basePrefix[:rr.Intn(len(basePrefix))] if len(prefix) > 0 && i&1 != 0 { // Make the first rune Unicode prefix = strings.TrimPrefix(prefix, "=") } for len(prefix) > 0 { // Make sure the prefix is valid otherwise we may match the // trailing invalid btytes (since s1 is mostly invalid). if r, _ := utf8.DecodeLastRuneInString(prefix); r != utf8.RuneError { break } prefix = prefix[:len(prefix)-1] } out := -1 if strings.EqualFold(s0, s1) { out = len(prefix) } tests = append(tests, indexTest{ s: prefix + s0, sep: s1, out: out, }) } }) } runIndexTests(&testWrapper{T: t}, fn, "Index", tests, false) }) t.Run("NeedleLongerThanHaystack", func(t *testing.T) { rr := rand.New(rand.NewSource(time.Now().UnixNano())) suffix := strings.Repeat("=☻", 8) var tests []indexTest iterateInvalidSequenceTests(func(s0, s1 string) { n := rr.Intn(len(suffix)-1) + 1 tests = append(tests, indexTest{ s: s0, sep: s1 + suffix[:n], out: -1, }) }) runIndexTests(&testWrapper{T: t}, fn, "Index", tests, false) }) // Test that when the inputs are invalid UTF-8 encoded strings our results // match what strings.EqualFold would give. t.Run("EqualFold", func(t *testing.T) { // We cannot use IndexRunesReference here because when invalid UTF-8 // is converted to a rune slice each invalid sequence is converted to // RuneError which changes the encoded length and thus the expected // index is incorrect. simpleIndex := func(s, sep string) int { n := len(sep) for i := n; i <= len(s); i++ { if strings.EqualFold(s[i-n:i], sep) { return i - n } } return -1 } split := func(s string) (a []string) { for _, b := range bytes.Split([]byte(s), nil) { a = append(a, string(b)) } return a } var tests []indexTest iterateInvalidSequenceTests(func(s0, s1 string) { for i := 1; i < len(s1); i++ { tests = append(tests, indexTest{ s: s0, sep: s1[:i], out: simpleIndex(s0, s1[:i]), }) } s := strings.Join(split(s0), "αβa") sep := strings.Join(split(s1), "ΑΒA") out := -1 if strings.EqualFold(s0, s1) { out = 0 } tests = append(tests, indexTest{ s: s, sep: sep, out: out, }) }) runIndexTests(&testWrapper{T: t}, fn, "Index", tests, false) }) } func IndexRuneIndexParity(t *testing.T, index IndexFunc, indexRune IndexRuneFunc) { iterateInvalidSequenceTests(func(s0, s1 string) { for _, c := range []byte(s1) { r := rune(c) i := index(s0, string(r)) j := indexRune(s0, r) if i != j { t.Fatalf("Index(%+q, %+q) = %d; want: %d:", s0, r, i, j) } } }) } type TestFunc struct { Name string Index IndexFunc Contains ContainsFunc } // Test against all assigned Unicode code points to make sure nothing changes // in new versions. In particular this is to identify code points that require // special handling (i.e. 'İ' and 'ı'). func IndexAllAssigned(t *testing.T, fns ...TestFunc) { if testing.Short() { t.Skip("short test") } dupe := func(rs []rune) []rune { a := make([]rune, len(rs)) copy(a, rs) return a } all := make([]rune, len(assignedRunes)) copy(all, assignedRunes) rr := rand.New(rand.NewSource(time.Now().UnixNano())) rr.Shuffle(len(all), func(i, j int) { all[i], all[j] = all[j], all[i] }) var ( upperStr string lowerStr string foldStr string allStr = string(all) upper = dupe(all) lower = dupe(all) fold = dupe(all) ) conv := func(rs []rune, fn func(rune) rune) string { for i, r := range rs { if r != 'İ' && r != 'ı' { r = fn(r) } rs[i] = r } return string(rs) } // This is slow so do it in parallel var wg sync.WaitGroup wg.Add(3) go func() { defer wg.Done() upperStr = conv(upper, unicode.ToUpper) }() go func() { defer wg.Done() lowerStr = conv(lower, unicode.ToLower) }() go func() { defer wg.Done() for i, r := range fold { fold[i] = unicode.SimpleFold(r) } foldStr = string(fold) }() wg.Wait() names := map[string]string{ upperStr: "Upper", lowerStr: "Lower", foldStr: "Fold", allStr: "All", } tname := func(s1, s2 string) string { n1 := names[s1] n2 := names[s2] if n1 == "" { t.Fatalf("missing name for test string: %q", s1[:8]) } if n2 == "" { t.Fatalf("missing name for test string: %q", s2[:8]) } return n1 + "_" + n2 } tests := []indexTest{ {allStr, allStr, 0}, {upperStr, allStr, 0}, {upperStr, upperStr, 0}, {upperStr, lowerStr, 0}, {lowerStr, allStr, 0}, {lowerStr, lowerStr, 0}, {foldStr, allStr, 0}, } for _, d := range fns { d := d t.Run(d.Name, func(t *testing.T) { t.Parallel() for i := range tests { i := i tt := tests[i] t.Run(tname(tt.s, tt.sep), func(t *testing.T) { t.Parallel() switch { case d.Index != nil: got := d.Index(tt.s, tt.sep) if got != tt.out { t.Errorf("%d got: %d want: %d", i, got, tt.out) } case d.Contains != nil: got := d.Contains(tt.s, tt.sep) want := (tt.out == 0) if got != want { t.Errorf("%d got: %t want: %t", i, got, want) } default: t.Fatalf("No function defined for test: %+v", d) } }) } }) } } func IndexUnicode(t *testing.T, fn IndexFunc) { type Replacement struct { old, new string } replacements := [][]Replacement{ {{"a", "α"}, {"A", "Α"}, {"1", "Δ"}}, {{"a", "α"}, {"A", "Α"}, {"1", "日a本b語ç日ð本Ê語þ日¥本¼語i日©"}}, {{"1", "\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D"}}, // shrinks one byte per char {{"1", "\u0250\u0250\u0250\u0250\u0250"}}, // grows one byte per char } for _, reps := range replacements { t.Run("", func(t *testing.T) { replace := func(s string) string { for _, rr := range reps { o := strings.ReplaceAll(s, rr.old, rr.new) if !utf8.ValidString(o) { t.Fatalf("Invalid transformation %q => %q", s, o) } s = o } return s } tests := append(indexTests, unicodeIndexTests...) for _, test := range tests { out := test.out if out > 0 { out = len(replace(test.s[:test.out])) } tests = append(tests, indexTest{ s: replace(test.s), sep: replace(test.sep), out: out, }) } runIndexTests(t, fn, "Index", tests, false) }) } } // Test our use of bytealg.IndexString func IndexNumeric(t *testing.T, fn IndexFunc) { ns := strings.Repeat("1234", 128/4) hs := strings.Repeat(" ", 256) tests := make([]indexTest, 0, 1024) // Test the boundaries around the bytealg.MaxBruteForce cutover for _, i := range []int{1, 4, 8, 15, 16, 17, 31, 32, 33, 63, 64, 65, 128} { for j := 0; j <= len(hs); j += 3 { sep := ns[:i] tests = append(tests, indexTest{ s: hs[:j] + sep, sep: sep, out: j, }) if len(sep) > 1 { tests = append(tests, indexTest{ s: hs[:j] + sep[:len(sep)-1] + " ", sep: sep, out: -1, }) } } } runIndexTests(t, fn, "Index", tests, false) } // Extensively test the handling of Kelvin K since it is three times the size // of ASCII [Kk] it requires special handling. func IndexKelvin(t *testing.T, fn IndexFunc) { const K = "\u212A" // Kelvin test := func(t *testing.T, s, substr string, want int) { t.Helper() if got := fn(s, substr); got != want { t.Errorf("Index(%q, %q) = %d; want: %d", s, substr, got, want) } } t.Run("Match0", func(t *testing.T) { for i := 1; i < 128; i++ { s := strings.Repeat("k", i) substr := strings.Repeat(K, i) test(t, s, substr, 0) test(t, K+s[:len(s)-1], substr, 0) test(t, s[:len(s)-1]+K, substr, 0) } }) r := strings.Repeat t.Run("Match1", func(t *testing.T) { for i := 1; i < 128; i++ { test(t, "a"+r("k", i), r(K, i), 1) } }) t.Run("NoMatchPrefix", func(t *testing.T) { for i := 1; i < 128; i++ { test(t, "a"+r("k", i-1), r(K, i), -1) } }) t.Run("NoMatchSuffix", func(t *testing.T) { for i := 1; i < 128; i++ { test(t, r("k", i-1)+"a", r(K, i), -1) } }) } var invalidSequenceTests = []string{ "\xed\xa0\x80\x80", // surrogate min "\xed\xbf\xbf\x80", // surrogate max // xx "\x91\x80\x80\x80", // s1 "\xC2\x7F\x80\x80", "\xC2\xC0\x80\x80", "\xDF\x7F\x80\x80", "\xDF\xC0\x80\x80", // s2 "\xE0\x9F\xBF\x80", "\xE0\xA0\x7F\x80", "\xE0\xBF\xC0\x80", "\xE0\xC0\x80\x80", // s3 "\xE1\x7F\xBF\x80", "\xE1\x80\x7F\x80", "\xE1\xBF\xC0\x80", "\xE1\xC0\x80\x80", //s4 "\xED\x7F\xBF\x80", "\xED\x80\x7F\x80", "\xED\x9F\xC0\x80", "\xED\xA0\x80\x80", // s5 "\xF0\x8F\xBF\xBF", "\xF0\x90\x7F\xBF", "\xF0\x90\x80\x7F", "\xF0\xBF\xBF\xC0", "\xF0\xBF\xC0\x80", "\xF0\xC0\x80\x80", // s6 "\xF1\x7F\xBF\xBF", "\xF1\x80\x7F\xBF", "\xF1\x80\x80\x7F", "\xF1\xBF\xBF\xC0", "\xF1\xBF\xC0\x80", "\xF1\xC0\x80\x80", // s7 "\xF4\x7F\xBF\xBF", "\xF4\x80\x7F\xBF", "\xF4\x80\x80\x7F", "\xF4\x8F\xBF\xC0", "\xF4\x8F\xC0\x80", "\xF4\x90\x80\x80", } func iterateInvalidSequenceTests(fn func(s0, s1 string)) { // Test against self for _, s := range invalidSequenceTests { fn(s, s) } // Test against next string for i := 0; i < len(invalidSequenceTests)-1; i++ { fn(invalidSequenceTests[i], invalidSequenceTests[i+1]) } // Test all possible combinations if *exhaustiveFuzz { for i := 0; i < len(invalidSequenceTests); i++ { for j := 0; j < len(invalidSequenceTests); j++ { if j == i { continue } fn(invalidSequenceTests[i], invalidSequenceTests[j]) } } return } // All the invalid sequences should be equal so test // random pairs. rr := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < 4; i++ { for i, s := range invalidSequenceTests { j := rr.Intn(len(invalidSequenceTests)) for j == i { j = rr.Intn(len(invalidSequenceTests)) } fn(s, invalidSequenceTests[j]) } } } func Contains(t *testing.T, fn ContainsFunc) { tt := &testWrapper{T: t} for _, test := range indexTests { got := fn(test.s, test.sep) want := test.out >= 0 if got != want { tt.Errorf("Contains(%q, %q) = %t; want: %t", test.s, test.sep, got, want) } } // Invalid: equal length iterateInvalidSequenceTests(func(s0, s1 string) { got := fn(s0, s1) want := strings.EqualFold(s0, s1) if got != want { tt.Errorf("Contains(%q, %q) = %t; want: %t", s0, s1, got, want) } }) // Invalid: short iterateInvalidSequenceTests(func(s0, s1 string) { want := strings.EqualFold(s0, s1) s0 = "a" + s0 got := fn(s0, s1) if got != want { tt.Errorf("Contains(%q, %q) = %t; want: %t", s0, s1, got, want) } }) // Invalid long prefix := strings.Repeat("=", 64) iterateInvalidSequenceTests(func(s0, s1 string) { want := strings.EqualFold(s0, s1) s0 = prefix + s0 got := fn(s0, s1) // want := strings.Contains(s0, s1) if got != want { tt.Errorf("Contains(%q, %q) = %t; want: %t", s0, s1, got, want) } }) } const ( a32 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" // "a" repeated 32 times dots = "1....2....3....4" ) var ContainsAnyTests = []struct { str, substr string expected bool }{ {"", "", false}, {"", "a", false}, {"", "abc", false}, {"a", "", false}, {"a", "a", true}, {"aaa", "a", true}, {"abc", "xyz", false}, {"abc", "xcz", true}, {"bas", "SsKs", true}, {"bak", "SsKs", true}, {a32 + "\u212a", "k", true}, {a32 + "\u212a", "K", true}, {"a☺b☻c☹d", "uvw☻xyz", true}, {"aRegExp*", ".(|)*+?^$[]", true}, {dots + dots + dots, " ", false}, // Case-insensitive {"a", "A", true}, {"aaa", "A", true}, {"αβa", "ΑΒΔ", true}, // Use asciiSet only if str is all ASCII {a32, "sS", false}, {a32, "kK", false}, // Cannot use asciiSet fallback to Unicode aware algorithm {a32 + "\u212a", "sS", false}, {a32 + "\u212a", "kK", true}, {a32, "kK" + "\u212a", false}, } func ContainsAny(t *testing.T, fn ContainsFunc) { for _, ct := range ContainsAnyTests { if fn(ct.str, ct.substr) != ct.expected { t.Errorf("ContainsAny(%s, %s) = %v, want %v", ct.str, ct.substr, !ct.expected, ct.expected) } } // Invalid iterateInvalidSequenceTests(func(s0, s1 string) { for _, s := range []string{s1, string(utf8.RuneError)} { got := fn(s0, s) if !got { t.Errorf("ContainsAny(%s, %s) = %v, want %v", s0, s1, got, true) } } }) } func LastIndex(t *testing.T, fn IndexFunc) { reference := func(s, sep string) int { return LastIndexRunesReference([]rune(s), []rune(sep)) } runIndexTests(t, reference, "LastIndexReference", lastIndexTests, false) runIndexTests(t, fn, "LastIndex", lastIndexTests, false) } func LastIndexInvalid(t *testing.T, fn IndexFunc) { var tests []indexTest iterateInvalidSequenceTests(func(s0, s1 string) { out := -1 if strings.EqualFold(s0, s1) { out = 0 } tests = append(tests, indexTest{ s: s0, sep: s1, out: out, }) }) tt := &testWrapper{T: t} // Limit number of failures reference := func(s, sep string) int { return LastIndexRunesReference([]rune(s), []rune(sep)) } runIndexTests(tt, reference, "LastIndexReference", tests, false) if t.Failed() { t.Fatal("invalid test cases") } runIndexTests(tt, fn, "LastIndex", tests, false) } type indexRuneTest struct { in string rune rune want int } var indexRuneTests = []indexRuneTest{ {"", 'a', -1}, {"", '☺', -1}, {"foo", '☹', -1}, {"foo", 'o', 1}, {"foo☺bar", '☺', 3}, {"foo☺☻☹bar", '☹', 9}, {"a A x", 'A', 0}, {"some_text=some_value", '=', 9}, {"☺a", 'a', 3}, {"a☻☺b", '☺', 4}, {"abc𐀀", '𐀀', 3}, // RuneError should match any invalid UTF-8 byte sequence. {"�", '�', 0}, {"\xff", '�', 0}, {"☻x�", '�', len("☻x")}, {"☻x\xe2\x98", '�', len("☻x")}, {"☻x\xe2\x98�", '�', len("☻x")}, {"☻x\xe2\x98x", '�', len("☻x")}, // Invalid rune values should never match. {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", -1, -1}, {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", 0xD800, -1}, // Surrogate pair {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", utf8.MaxRune + 1, -1}, // Case-folding {"Αβδ", 'α', 0}, // "ΑΒΔ" {"αβδ", 'Α', 0}, // "" {"αβδ", 'Δ', 4}, // "ΑΒΔ" // Case-folding with ASCII {"K", 'K', 0}, // U+212A {"S", 'ſ', 0}, // U+017F {"K", 'k', 0}, // U+006B {"ſ", 's', 0}, // U+0073 {"İ", 'İ', 0}, // U+0130 {"i", 'İ', -1}, // U+0130 {"ſS*ք", 'S', 0}, // Test cutover when strings.IndexByte does not advance far // enough. All the runes here have the same last byte when // encoded as UTF-8. {strings.Repeat("ā", 128) + "Á", 'Á', len("ā") * 128}, // 2 bytes per-rune {strings.Repeat("ā", 128), 'Á', -1}, {strings.Repeat("ᲅ", 128) + "ꙅ", 'ꙅ', len("ᲅ") * 128}, // 3 bytes per-rune {strings.Repeat("ᲅ", 128), 'ꙅ', -1}, {strings.Repeat("𥺻", 128) + "𥻻", '𥻻', len("𥺻") * 128}, // 4 bytes per-rune {strings.Repeat("𥺻", 128), '𥻻', -1}, // Test the cutover to to bytealg.IndexString when it is triggered in // the middle of rune that contains consecutive runs of equal bytes. {"aaaaaKKKK\U000bc104", '\U000bc104', 17}, // cutover: (n + 16) / 8 {"aaaaaKKKK鄄", '鄄', 17}, {"aaKKKKKa\U000bc104", '\U000bc104', 18}, // cutover: 4 + n>>4 {"aaKKKKKa鄄", '鄄', 18}, // Invalid rune {"abc", utf8.RuneError, -1}, } func IndexRune(t *testing.T, fn IndexRuneFunc) { for _, tt := range indexRuneTests { if got := fn(tt.in, tt.rune); got != tt.want { t.Errorf("IndexRune(%q, %q) = %v; want %v", tt.in, tt.rune, got, tt.want) } } } func IndexRuneCase(t *testing.T, fn IndexRuneFunc) { tests := []indexRuneTest{ {"", 'a', -1}, {"", '☺', -1}, {"foo", '☹', -1}, {"foo", 'o', 1}, {"foo☺bar", '☺', 3}, {"foo☺☻☹bar", '☹', 9}, {"a A x", 'A', 2}, {"some_text=some_value", '=', 9}, {"☺a", 'a', 3}, {"a☻☺b", '☺', 4}, // RuneError should match any invalid UTF-8 byte sequence. {"a", utf8.RuneError, -1}, {"�", '�', 0}, {"\xff", '�', 0}, {"☻x�", '�', len("☻x")}, {"☻x\xe2\x98", '�', len("☻x")}, {"☻x\xe2\x98�", '�', len("☻x")}, {"☻x\xe2\x98x", '�', len("☻x")}, // Invalid rune values should never match. {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", -1, -1}, {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", 0xD800, -1}, // Surrogate pair {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", utf8.MaxRune + 1, -1}, // Make sure IndexRune does not panic when the byte being searched // for occurs at the end of the string. {"abcÀ"[:len("abcÀ")-1], 'À', -1}, {"abc本"[:len("abc本")-1], '本', -1}, {"abc本"[:len("abc本")-2], '本', -1}, {"abc𐀀"[:len("abc𐀀")-1], '𐀀', -1}, {"abc𐀀"[:len("abc𐀀")-2], '𐀀', -1}, {"abc𐀀"[:len("abc𐀀")-3], '𐀀', -1}, } for _, tt := range tests { if got := fn(tt.in, tt.rune); got != tt.want { t.Errorf("indexRuneCase(%q, %d) = %v; want %v", tt.in, tt.rune, got, tt.want) } } } func ContainsRune(t *testing.T, fn func(s string, r rune) bool) { for _, test := range indexRuneTests { got := fn(test.in, test.rune) want := test.want >= 0 if got != want { t.Errorf("ContainsRune(%q, 0x%04X) = %t; want: %t", test.in, test.rune, got, want) } } } func LastIndexRune(t *testing.T, fn IndexRuneFunc) { tests := []struct { in string rune rune want int }{ {"", 'a', -1}, {"", '☺', -1}, {"foo", '☹', -1}, {"foo", 'o', 2}, {"foo☺bar", '☺', 3}, {"foo☺☻☹bar", '☹', 9}, {"a A x", 'A', 2}, {"some_text=some_value", '=', 9}, {"☺a", 'a', 3}, {"a☻☺b", '☺', 4}, // RuneError should match any invalid UTF-8 byte sequence. {"�", '�', 0}, {"\xff", '�', 0}, {"☻x�", '�', len("☻x")}, // Invalid rune values should never match. {"foo" + string(rune(utf8.RuneError)), utf8.RuneError, 3}, {"foo" + string(rune(unicode.MaxRune+1)), unicode.MaxRune + 1, -1}, {"foo" + string(utf8.RuneError), utf8.RuneError, 3}, {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", -1, -1}, {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", 0xD800, -1}, // Surrogate pair {"a☺b☻c☹d\xe2\x98�\xff�\xed\xa0\x80", utf8.MaxRune + 1, -1}, // Case-folding {"Αβδ", 'α', 0}, // "ΑΒΔ" {"αβδ", 'Α', 0}, // "ΑΒΔ" {"αβδ", 'Δ', 4}, // "ΑΒΔ" {"αβδ", 'Δ', 4}, // "ΑΒΔ" {"abcßẞ", 'ß', len("abcß")}, {"aΩωΩ", 'ω', len("aΩω")}, {"Θθϑϴabc", 0x03D1, len("Θθϑ")}, // Case-folding with ASCII {"K", 'K', 0}, // U+212A {"S", 'ſ', 0}, // U+017F {"K", 'k', 0}, // U+006B {"ſ", 's', 0}, // U+0073 {"İ", 'İ', 0}, // U+0130 {"i", 'İ', -1}, // U+0130 } for _, tt := range tests { if got := fn(tt.in, tt.rune); got != tt.want { t.Errorf("lastIndexRune(%q, %q) = %v; want %v", tt.in, tt.rune, got, tt.want) } } } func IndexByte(t *testing.T, fn IndexByteFunc) { tests := []struct { in string char byte want int }{ // Case-folding with ASCII {"", 0, -1}, {"K", 'k', 0}, {"K", 'K', 0}, {"ſ", 's', 0}, {"ſ", 'S', 0}, {"sſ", 'S', 0}, {"aKkK", 'k', 1}, {"aſSs", 's', 1}, } for _, tt := range tests { if got := fn(tt.in, tt.char); got != tt.want { t.Errorf("IndexByte(%q, %q) = %v; want %v", tt.in, tt.char, got, tt.want) } } } func LastIndexByte(t *testing.T, fn IndexByteFunc) { tests := []struct { in string char byte want int }{ {"", 'a', -1}, {"1", '2', -1}, {"abc", 'A', 0}, {"abc", 'B', 1}, {"abc", 'c', 2}, {"abc", 'x', -1}, // Case-folding with ASCII {"K", 'k', 0}, {"K", 'K', 0}, {"ſ", 's', 0}, {"ſ", 'S', 0}, {"x", 'S', -1}, {"akK", 'k', len("ak")}, {"aſSx", 's', len("aſ")}, } for _, tt := range tests { if got := fn(tt.in, tt.char); got != tt.want { t.Errorf("LastIndexByte(%q, %q) = %v; want %v", tt.in, tt.char, got, tt.want) } } } func IndexNonASCII(t *testing.T, fn func(s string) int) { index := func(s string) int { for i, r := range s { if r >= utf8.RuneSelf { return i } } return -1 } t.Run("IndexTests", func(t *testing.T) { tests := append([]indexTest(nil), indexTests...) tests = append(tests, unicodeIndexTests...) for _, test := range tests { want := index(test.s) got := fn(test.s) if got != want { t.Errorf("IndexNonASCII(%q) = %d; want: %d", test.s, got, want) } } }) t.Run("LongString", func(t *testing.T) { long := strings.Repeat("a", 4096) + "βaβa" idx := index(long) for i := 0; i < len(long); i++ { s := long[i:] want := idx - i if want < 0 { want = index(s) } got := fn(s) if got != want { t.Errorf("IndexNonASCII(long[%d:]) = %d; want: %d", i, got, want) } } }) } func ContainsNonASCII(t *testing.T, fn func(s string) bool) { contains := func(s string) bool { for i := 0; i < len(s); i++ { if s[i] >= utf8.RuneSelf { return true } } return false } tests := append([]indexTest(nil), indexTests...) tests = append(tests, unicodeIndexTests...) for _, test := range tests { want := contains(test.s) got := fn(test.s) if got != want { t.Errorf("ContainsNonASCII(%q) = %t; want: %t", test.s, got, want) } } } type prefixTest struct { s, prefix string out, exhausted bool } var prefixTests = []prefixTest{ {"", "", true, true}, {"1", "", true, false}, {"1", "2", false, true}, {"foo", "f", true, false}, {"αβδ", "ΑΒΔ", true, true}, {"αβδΑΒΔ", "ΑΒΔ", true, false}, {"abc", "xyz", false, false}, {"abc", "XYZ", false, false}, {"abc", "abc", true, true}, {"abc", "abd", false, true}, {"abcdefghijk", "abcdefghijX", false, true}, {"abcdefghijk", "abcdefghij\u212A", true, true}, {"abcdefghijk", "abcdefghij\u212Axyz", false, true}, {"abcdefghijk☺", "abcdefghij\u212A", true, false}, {"abcdefghijkz", "abcdefghij\u212Ay", false, true}, {"abcdefghijKz", "abcdefghij\u212Ay", false, true}, {"☺aβ", "☺aΔ", false, true}, {"☺aβc", "☺aΔ", false, false}, {"\u0250\u0250\u0250\u0250\u0250 a", "\u2C6F\u2C6F\u2C6F\u2C6F\u2C6F A", true, true}, // grows one byte per char {"a\u0250\u0250\u0250\u0250\u0250", "A\u2C6F\u2C6F\u2C6F\u2C6F\u2C6F", true, true}, // {"\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D a", "\u0251\u0251\u0251\u0251\u0251 A", true, true}, // shrinks one byte per char {"a\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D", "A\u0251\u0251\u0251\u0251\u0251", true, true}, // shrinks one byte per char // Handle large differences in encoded size ([kK]: 1 vs. 'K' (U+212A): 3 bytes). {strings.Repeat("\u212a", 8), strings.Repeat("k", 8), true, true}, {strings.Repeat("k", 8), strings.Repeat("\u212a", 8), true, true}, {"k-k", "\u212a-\u212a", true, true}, {"a", "bbb", false, true}, {"\u212a", strings.Repeat("a", len("\u212a")*2), false, true}, {"\u212a", strings.Repeat("a", len("\u212a")*3), false, true}, {"\u212a", strings.Repeat("a", len("\u212a")*4), false, true}, } func HasPrefix(t *testing.T, fn PrefixFunc) { // Make sure the tests cases are valid for i, test := range prefixTests { s := []rune(test.s) prefix := []rune(test.prefix) out, exhausted := HasPrefixRunes(s, prefix) if out != test.out || exhausted != test.exhausted { t.Errorf("invalid test: %d: %+v", i, test) } if n := len(prefix); len(s) >= n { if out := strings.EqualFold(string(s[:n]), string(prefix)); out != test.out { t.Errorf("strings.EqualFold(%q, %q) = %t; want: %t", test.s, test.prefix, out, test.out) } } } if t.Failed() { t.Fatal("Invalid tests cases") } for _, test := range prefixTests { out, exhausted := fn(test.s, test.prefix) if out != test.out || exhausted != test.exhausted { t.Errorf("hasPrefixUnicode(%q, %q) = %t, %t; want: %t, %t", test.s, test.prefix, out, exhausted, test.out, test.exhausted) t.Error("s: ", len(test.s), utf8.RuneCountInString(test.s)) t.Error("prefix:", len(test.prefix), utf8.RuneCountInString(test.prefix)) } } // Invalid iterateInvalidSequenceTests(func(s, prefix string) { got, _ := fn(s, prefix) want := strings.EqualFold(s, prefix) if got != want { t.Errorf("HasPrefix(%q, %q) = %t; want: %t", s, prefix, got, want) } }) } func TrimPrefix(t *testing.T, fn TrimFunc) { for i, test := range prefixTests { want := test.s if test.out { s := []rune(test.s) prefix := []rune(test.prefix) if len(prefix) <= len(s) { want = string(s[len(prefix):]) } } got := fn(test.s, test.prefix) if got != want { t.Errorf("%d: TrimPrefix(%q, %q) = %q; want: %q", i, test.s, test.prefix, got, want) } } } type suffixTest struct { s, suffix string out bool } var suffixTests = []suffixTest{ {"", "", true}, {"a", "", true}, {"", "a", false}, {"1", "2", false}, {"αβδ", "ΑΒΔ", true}, {"αβδΑΒΔ", "ΑΒΔ", true}, {"abc", "xyz", false}, {"abc", "XYZ", false}, {"abc", "abc", true}, {"abc", "abd", false}, {"aaβ", "☺aβ", false}, {"☺aβc", "☺aΔ", false}, {"\u0250\u0250\u0250\u0250\u0250 a", "\u2C6F\u2C6F\u2C6F\u2C6F\u2C6F A", true}, // grows one byte per char {"a\u0250\u0250\u0250\u0250\u0250", "A\u2C6F\u2C6F\u2C6F\u2C6F\u2C6F", true}, // {"\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D a", "\u0251\u0251\u0251\u0251\u0251 A", true}, // shrinks one byte per char {"a\u2C6D\u2C6D\u2C6D\u2C6D\u2C6D", "A\u0251\u0251\u0251\u0251\u0251", true}, // shrinks one byte per char // Handle large differences in encoded size ([kK]: 1 vs. 'K' (U+212A): 3 bytes). {strings.Repeat("\u212a", 8), strings.Repeat("k", 8), true}, {strings.Repeat("k", 8), strings.Repeat("\u212a", 8), true}, {"k-k", "\u212a-\u212a", true}, {"g^Y3i", "I", true}, {"G|S&>;C", "&>;C", true}, } func HasSuffix(t *testing.T, fn func(s, suffix string) bool) { // Make sure the tests cases are valid for _, test := range suffixTests { out := regexp.MustCompile(`(?i)` + regexp.QuoteMeta(test.suffix) + "$").MatchString(test.s) if out != test.out { t.Errorf("Invalid test s: %q, suffix: %q got: %t want: %t", test.s, test.suffix, out, test.out) } } if t.Failed() { t.Fatal("Invalid tests cases") } for _, test := range suffixTests { out := fn(test.s, test.suffix) if out != test.out { t.Errorf("HasSuffix(%q, %q) = %t; want: %t", test.s, test.suffix, out, test.out) } } // Invalid iterateInvalidSequenceTests(func(s, suffix string) { got := fn(s, suffix) want := strings.EqualFold(s, suffix) if got != want { t.Errorf("HasSuffix(%q, %q) = %t; want: %t", s, suffix, got, want) } }) } func TrimSuffix(t *testing.T, fn TrimFunc) { for i, test := range suffixTests { hasSuffix := test.out && test.suffix != "" want := test.s if hasSuffix { s := []rune(test.s) suffix := []rune(test.suffix) if len(s) >= len(suffix) { want = string(s[:len(s)-len(suffix)]) } } got := fn(test.s, test.suffix) if got != want { t.Errorf("%d: TrimSuffix(%q, %q) = %q; want: %q", i, test.s, test.suffix, got, want) } } } var countTests = []struct { s, sep string num int }{ {"", "", 1}, {"", "notempty", 0}, {"notempty", "", 9}, {"smaller", "not smaller", 0}, {"12345678987654321", "6", 2}, {"611161116", "6", 3}, {"notequal", "NotEqual", 1}, {"equal", "equal", 1}, {"abc1231231123q", "123", 3}, {"11111", "11", 2}, {"aAaAa", "a", 5}, {"a\u212akKa", "K", 3}, {"a\u212akKa", "S", 0}, {"a\u212a", "a\u212a", 1}, {"a\u212aa\u212a", "a\u212a", 2}, {"sſS", "s", 3}, {strings.Repeat("\u212a", 8), "kk", 4}, {strings.Repeat("k", 8), "\u212a\u212a", 4}, {strings.Repeat("\u212a", 32), "kk", 16}, {strings.Repeat("k", 32), "\u212a\u212a", 16}, } func Count(t *testing.T, fn IndexFunc) { for _, tt := range countTests { if num := fn(tt.s, tt.sep); num != tt.num { t.Errorf("Count(%q, %q) = %d, want %d", tt.s, tt.sep, num, tt.num) } } } var indexAnyTests = []indexTest{ {"", "", -1}, {"", "a", -1}, {"", "abc", -1}, {"a", "", -1}, {"a", "a", 0}, {"\x80", "\xffb", 0}, {"aaa", "a", 0}, {"abc", "xyz", -1}, {"abc", "xcz", 2}, {"abc", "XCZ", 2}, {"abcdefghijklmnop", "xyz", -1}, {"ab☺c", "x☺yz", 2}, {"a☺b☻c☹d", "cx", len("a☺b☻")}, {"a☺b☻c☹d", "uvw☻xyz", len("a☺b")}, {"aRegExp*", ".(|)*+?^$[]", 7}, {dots + dots + dots, " ", -1}, {dots + dots + dots + "a", "A", len(dots + dots + dots)}, {dots + dots + dots + "\u212a", "k", len(dots + dots + dots)}, {dots + dots + dots + "a", "Z", -1}, {"012abcba210", "\xffb", 4}, {"012\x80bcb\x80210", "\xffb", 3}, {"0123456\xcf\x80abc", "\xcfb\x80", 10}, {"a☺b☻c☹d", "☺"[:1], -1}, // ASCII chars that are equal to multi-byte runes {"\u212A" + strings.Repeat("x", 16), "k", 0}, {strings.Repeat("k", 16), "\u212A", 0}, {"\u017F" + strings.Repeat("x", 16), "s", 0}, {strings.Repeat("s", 16), "\u017F", 0}, } var lastIndexAnyTests = []indexTest{ {"", "", -1}, {"", "a", -1}, {"", "abc", -1}, {"a", "", -1}, {"a", "b", -1}, {"a", "a", 0}, {"\x80", "\xffb", 0}, {"aaa", "a", 2}, {"abc", "xyz", -1}, {"abc", "ab", 1}, {"ab☺c", "x☺yz", 2}, {"a☺b☻c☹d", "cx", len("a☺b☻")}, {"a☺b☻c☹d", "uvw☻xyz", len("a☺b")}, {"a.RegExp*", ".(|)*+?^$[]", 8}, {dots + dots + dots, " ", -1}, {"012abcba210", "\xffb", 6}, {"012\x80bcb\x80210", "\xffb", 7}, {"0123456\xcf\x80abc", "\xcfb\x80", 10}, // Case-insensitive {"a", "A", 0}, {"a☺b☻c☹d", "CX", len("a☺b☻")}, {"a☺b☻c☹d", "UVW☻XYZ", len("a☺b")}, {"kkk", "\u212a", 2}, {"☹", "☹"[:1], -1}, {"abc" + "☹"[:1], "☹"[:1], len("abc")}, // ASCII chars that are equal to multi-byte runes {"\u212A" + strings.Repeat("x", 16), "k", 0}, {strings.Repeat("k", 16), "\u212A", 15}, {"\u017F" + strings.Repeat("x", 16), "s", 0}, {strings.Repeat("s", 16), "\u017F", 15}, } func IndexAny(t *testing.T, fn IndexFunc) { runIndexTests(t, fn, "IndexAny", indexAnyTests, false) } func LastIndexAny(t *testing.T, fn IndexFunc) { runIndexTests(t, fn, "LastIndexAny", lastIndexAnyTests, false) } var cutTests = []struct { s, sep string before, after string found bool }{ {"abc", "b", "a", "c", true}, {"abc", "a", "", "bc", true}, {"abc", "c", "ab", "", true}, {"abc", "abc", "", "", true}, {"abc", "", "", "abc", true}, {"abc", "d", "abc", "", false}, {"", "d", "", "", false}, {"", "", "", "", true}, // Unicode {"αβδ", "ΑΒΔ", "", "", true}, {"αβδΑΒΔ", "ΑΒΔ", "", "ΑΒΔ", true}, {"123αβδ456", "ΑΒΔ", "123", "456", true}, {"\u212aZZZ\u212aABC", "ZKA", "\u212aZZ", "BC", true}, // TODO: test invalid UTF-8 sequences // // {"\xed\xa0\x80", string(utf8.RuneError), "", "", true}, // {"\xed\xa0\x80", string(utf8.RuneError), string(utf8.RuneError), "\xa0\x80", true}, // {string(utf8.RuneError), "\xed\xa0\x80", "", "", true}, } func Cut(t *testing.T, fn func(s, sep string) (before, after string, found bool)) { for _, tt := range cutTests { before, after, found := fn(tt.s, tt.sep) if before != tt.before || after != tt.after || found != tt.found { t.Errorf("Cut(%q, %q) = %q, %q, %v; want: %q, %q, %v", tt.s, tt.sep, before, after, found, tt.before, tt.after, tt.found) } } } var cutPrefixTests = []struct { s, sep string after string found bool }{ {"abc", "a", "bc", true}, {"abc", "abc", "", true}, {"abc", "", "abc", true}, {"abc", "d", "abc", false}, {"", "d", "", false}, {"", "", "", true}, // Unicode {"αβδ", "ΑΒΔ", "", true}, {"αβδΑΒΔ", "ΑΒΔ", "ΑΒΔ", true}, {"123αβδ456", "ΑΒΔ", "123αβδ456", false}, {"kk123", "\u212a\u212a123", "", true}, {"kk123xyz", "\u212a\u212a123", "xyz", true}, {"\u212a\u212a123xyz", "kK123", "xyz", true}, } func CutPrefix(t *testing.T, fn func(s, prefix string) (after string, found bool)) { for _, tt := range cutPrefixTests { after, found := fn(tt.s, tt.sep) if after != tt.after || found != tt.found { t.Errorf("CutPrefix(%q, %q) = %q, %v, want %q, %v", tt.s, tt.sep, after, found, tt.after, tt.found) } } } var cutSuffixTests = []struct { s, sep string after string found bool }{ {"abc", "bc", "a", true}, {"abc", "abc", "", true}, {"abc", "", "abc", true}, {"abc", "d", "abc", false}, {"", "d", "", false}, {"", "", "", true}, // Unicode {"αβδ", "ΑΒΔ", "", true}, {"αβδΑΒΔ", "ΑΒΔ", "αβδ", true}, {"123αβδ456", "ΑΒΔ", "123αβδ456", false}, {"kk123", "\u212a\u212a123", "", true}, {"xyzkK123", "\u212a\u212a123", "xyz", true}, } func CutSuffix(t *testing.T, fn func(s, prefix string) (before string, found bool)) { for _, tt := range cutSuffixTests { after, found := fn(tt.s, tt.sep) if after != tt.after || found != tt.found { t.Errorf("CutSuffix(%q, %q) = %q, %v, want %q, %v", tt.s, tt.sep, after, found, tt.after, tt.found) } } } // Ensure that strings.EqualFold does not match 'İ' (U+0130) and ASCII 'i' or 'I'. // This is mostly a sanity check. func LatinCapitalLetterIWithDotAbove(t *testing.T, fn IndexFunc) { if strings.EqualFold("İ", "i") { t.Errorf("strings.EqualFold(%q, %q) = true; want: false", "İ", "i") } if strings.EqualFold("İ", "I") { t.Errorf("strings.EqualFold(%q, %q) = true; want: false", "İ", "I") } if fn("İ", "i") == 0 { t.Errorf("Compare(%q, %q) = true; want: false", "İ", "i") } if fn("İ", "I") == 0 { t.Errorf("Compare(%q, %q) = true; want: false", "İ", "I") } } func NonLetterASCII(t *testing.T, fn func(s string) bool) { tests := []struct { s string want bool }{ {"", true}, {"1234", true}, {"1a", false}, {"1A", false}, } for _, test := range tests { got := fn(test.s) if got != test.want { t.Errorf("nonLetterASCII(%q) = %t; want: %t", test.s, got, test.want) } } } //////////////////////////////////////////////////////////// // Helper functions // EqualRune returns if runes sr and tr are equivalent under // Unicode-defined simple case folding. func EqualRune(sr, tr rune) bool { if sr == tr { return true } // Invalid runes are encoded as RuneError if (sr == utf8.RuneError || !utf8.ValidRune(sr)) && (tr == utf8.RuneError || !utf8.ValidRune(tr)) { return true } if tr < sr { tr, sr = sr, tr } if tr < utf8.RuneSelf { return 'A' <= sr && sr <= 'Z' && tr == sr+'a'-'A' } return tables.CaseFold(sr) == tables.CaseFold(tr) } // EqualRuneSlice returns if rune slices s1 and s2 are equivalent under // Unicode-defined simple case folding. func EqualRuneSlice(s1, s2 []rune) bool { if len(s1) != len(s2) { return false } for i, r := range s1 { if r != s2[i] && !EqualRune(r, s2[i]) { return false } } return true } // IndexRunesReference is a slow, but accurate case-insensitive version // of strings.Index. func IndexRunesReference(s, sep []rune) int { n := len(sep) for i := n; i <= len(s); i++ { if EqualRuneSlice(s[i-n:i], sep) { return EncodedLen(s[:i-n]) } } return -1 } // TODO: consider renaming func hasPrefixRunes(s, prefix []rune) (bool, bool) { if len(s) < len(prefix) { return false, true } var i int for i = 0; i < len(prefix); i++ { if !EqualRune(s[i], prefix[i]) { return false, i == len(s)-1 } } return i == len(prefix), i == len(s) } // Very slow, but accurate. func indexRegex(s, sep string) int { a := regexp.MustCompile(`(?i)` + regexp.QuoteMeta(sep)).FindStringIndex(s) if len(a) == 2 { return a[0] } return -1 } // Very slow, but accurate. func lastIndexRegex(s, sep string) int { a := regexp.MustCompile(`(?i)`+regexp.QuoteMeta(sep)).FindAllStringIndex(s, -1) if len(a) > 0 { return a[len(a)-1][0] } return -1 } func hasSuffixRegex(s, suffix string) bool { return regexp.MustCompile(`(?i)(` + regexp.QuoteMeta(suffix) + `)$`).MatchString(s) } // EncodedLen returns the UTF-8 encoded length of rune slice rs. func EncodedLen(rs []rune) int { i := 0 for _, r := range rs { n := utf8.RuneLen(r) if n < 0 { n = 3 // Invalid rune (add 3 to encode RuneError) } i += n } return i } // LastIndexRunesReference is a slow, but accurate case-insensitive // version of strings.Index func LastIndexRunesReference(s, sep []rune) int { n := len(sep) for i := len(s) - n; i >= 0; i-- { if EqualRuneSlice(s[i:i+n], sep) { return EncodedLen(s[:i]) } } return -1 } func HasPrefixRunes(s, prefix []rune) (bool, bool) { if len(s) < len(prefix) { return false, true } var i int for i = 0; i < len(prefix); i++ { sr := tables.CaseFold(s[i]) pr := tables.CaseFold(prefix[i]) if !utf8.ValidRune(sr) { sr = utf8.RuneError } if !utf8.ValidRune(pr) { pr = utf8.RuneError } if sr == pr { continue } return false, i == len(s)-1 } return i == len(prefix), i == len(s) } strcase-0.0.5/internal/test/test_test.go 0000664 0000000 0000000 00000006266 14720254634 0020341 0 ustar 00root root 0000000 0000000 package test import ( "math/rand" "regexp" "strings" "testing" "time" "unicode/utf8" ) // Reference test using regex: this will identify bad test cases and is more // accurate than our reference Index (since it might have bugs). func TestIndexRegex(t *testing.T) { index := func(s, sep string) int { i := regexp.MustCompile(`(?i)` + regexp.QuoteMeta(sep)).FindStringIndex(s) if len(i) == 2 { return i[0] } return -1 } tests := append(indexTests, unicodeIndexTests...) runIndexTests(t, index, "Regexp", tests, false) } // Make sure our reference implementation is correct. func TestIndexRunesReference(t *testing.T) { // Test that the Index tests are valid reference := func(s, sep string) int { return IndexRunesReference([]rune(s), []rune(sep)) } tests := append(indexTests, unicodeIndexTests...) runIndexTests(t, reference, "IndexReference", tests, false) } // Reference test using regex: this will identify bad test cases and is more // accurate than our reference LastIndex (since it might have bugs). func TestLastIndexRegex(t *testing.T) { index := func(s, sep string) int { a := regexp.MustCompile(`(?i)`+regexp.QuoteMeta(sep)).FindAllStringIndex(s, -1) if len(a) != 0 { return a[len(a)-1][0] } return -1 } runIndexTests(t, index, "Regexp", lastIndexTests, false) } func TestLastIndexReference(t *testing.T) { reference := func(s, sep string) int { return LastIndexRunesReference([]rune(s), []rune(sep)) } runIndexTests(t, reference, "LastIndexReference", lastIndexTests, false) } func TestLastIndexReference_XXX(t *testing.T) { want := 0 got := IndexRunesReference([]rune{'\uFFFD', '\uFFFD', '\u0061', '\u0043', '\uFFFD'}, []rune{'\uFFFD'}) if got != want { t.Errorf("got: %d want: %d", got, want) } } func TestHasPrefix(t *testing.T) { // Make sure the tests cases are valid for i, test := range prefixTests { s := []rune(test.s) prefix := []rune(test.prefix) out, exhausted := HasPrefixRunes(s, prefix) if out != test.out || exhausted != test.exhausted { t.Errorf("invalid test: %d: %+v", i, test) } if n := len(prefix); len(s) >= n { if out := strings.EqualFold(string(s[:n]), string(prefix)); out != test.out { t.Errorf("strings.EqualFold(%q, %q) = %t; want: %t", test.s, test.prefix, out, test.out) } } } if t.Failed() { t.Fatal("Invalid tests cases") } } func TestEqualRune(t *testing.T) { rr := rand.New(rand.NewSource(time.Now().UnixNano())) fails := 0 invalid := 0 for i := 0; i < 100_000; i++ { sr := rr.Int31n(utf8.MaxRune * 2) tr := sr switch n := rr.Int31n(100); { case n <= 10: tr = utf8.RuneError case n <= 50: tr = rr.Int31n(utf8.MaxRune * 2) } if !utf8.ValidRune(sr) || !utf8.ValidRune(tr) { invalid++ } got := EqualRune(sr, tr) want := strings.EqualFold(string(sr), string(tr)) if got != want { t.Errorf("EqualRune(%U, %U) = %t; want: %t", sr, tr, got, want) fails++ if fails >= 50 { t.Fatal("Too many errors") } } } } func TestEncodedLen(t *testing.T) { s := []rune{'a', utf8.RuneError, 'Ꝃ', '𞤔', utf8.MaxRune + 1, utf8.UTFMax + 1} want := len(string(s)) got := EncodedLen(s) if got != want { t.Errorf("EncodedLen(%q) = %d want: %d", string(s), got, want) } } strcase-0.0.5/open-source-license-acknowledgements.md 0000664 0000000 0000000 00000003017 14720254634 0022721 0 ustar 00root root 0000000 0000000 # Open Source License Acknowledgements The `strcase` library is licensed under the terms of the [MIT License](./LICENSE). The `strcase` utilizes some modified code and logic from the [Go](https://go.dev/) standard library. The Go [LICENSE](https://github.com/golang/go/blob/master/LICENSE) is reproduced below: ``` The MIT License (MIT) Copyright (c) 2022 Charlie Vieth 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. ``` ### golang/go License: BSD 3-Clause https://github.com/golang/go/blob/master/LICENSE Copyright (c) 2009 The Go Authors. All rights reserved. strcase-0.0.5/parity_test.go 0000664 0000000 0000000 00000001641 14720254634 0016067 0 ustar 00root root 0000000 0000000 package strcase import ( "go/ast" "go/parser" "go/token" "reflect" "sort" "testing" ) func parseFuncs(t *testing.T, filename string) []string { fset := token.NewFileSet() af, err := parser.ParseFile(fset, filename, nil, parser.AllErrors) if err != nil { t.Fatal(err) } var names []string for _, d := range af.Decls { if fd, _ := d.(*ast.FuncDecl); fd != nil { if fd.Name == nil { continue } name := fd.Name.Name if ast.IsExported(name) { names = append(names, name) } } } sort.Strings(names) return names } // Test that the strcase and bytcase packages have the same API func TestPackageParity(t *testing.T) { strnames := parseFuncs(t, "strcase.go") bytenames := parseFuncs(t, "bytcase/bytcase.go") if !reflect.DeepEqual(strnames, bytenames) { t.Fatalf("The API of the strcase and bytcase packages differs:\n"+ "strcase: %q\n"+ "bytcase: %q\n", strnames, bytenames) } } strcase-0.0.5/scripts/ 0000775 0000000 0000000 00000000000 14720254634 0014656 5 ustar 00root root 0000000 0000000 strcase-0.0.5/scripts/go-vet-harder 0000775 0000000 0000000 00000002034 14720254634 0017247 0 ustar 00root root 0000000 0000000 #!/usr/bin/env bash set -euo pipefail GREEN=$'\E[00;32m' RED=$'\E[00;31m' RESET=$'\E[0m' if [ ! -t 1 ]; then GREEN='' RED='' RESET='' fi VETTOOLS=( # fieldalignment: noisy and not useful here findcall ifaceassert lostcancel nilness shadow stringintconv unmarshal unusedresult ) DIR="$(mktemp -d -t 'go-vet-')" trap 'rm -r $DIR' EXIT touch "$DIR/vet" go vet ./... >"$DIR/vet" 2>&1 & for tool in "${VETTOOLS[@]}"; do touch "$DIR/$tool" "$tool" ./... >"$DIR/$tool" 2>&1 & done wait if hash escape-regex 2>/dev/null; then REPLACE="$(escape-regex -s "$(pwd)"/)" else REPLACE='' fi VETTOOLS+=(vet) ERRORS=0 for tool in "${VETTOOLS[@]}"; do if [[ -s "$DIR/$tool" ]]; then printf "%s: ${RED}error${RESET}\n" "$tool" if [[ -n $REPLACE ]]; then sed "s/$REPLACE//g" "$DIR/$tool" | pr -o4 -t - else pr -o4 -t - "$DIR/$tool" fi ERRORS=1 else printf "%s: ${GREEN}pass${RESET}\n" "$tool" fi done exit $ERRORS strcase-0.0.5/scripts/pre-commit 0000775 0000000 0000000 00000004256 14720254634 0016667 0 ustar 00root root 0000000 0000000 #!/bin/sh set -eu # Check if 'go generate' needs to be run. # TODO: see if we can only run this against the Unicode version native to # the installed version of Go since that takes around ~40ms compared to # ~450ms when we have to generate all the tables for the non-native version. FILES='^(tables_\w+\.go|internal/gen/gentables/main\.go|)$' ERROR=Error if [ -t 1 ]; then ERROR='\033[0;31mError\033[0m' # red fi if git rev-parse --verify HEAD >/dev/null 2>&1; then against=HEAD else # Initial commit: diff against an empty tree object against=$(git hash-object -t tree /dev/null) fi # Redirect output to stderr. exec 1>&2 if git diff --cached --name-only --diff-filter=M -z "${against}" | \grep --null --quiet --extended-regexp "${FILES}"; then # Project root root="$(git rev-parse --show-toplevel)" exit_code=0 [ -d "${root}/bin" ] || mkdir -p "${root}/bin" GOBIN="${root}/bin" go install "${root}/gen.go" if ! "${root}/bin/gen" -dry-run >/dev/null 2>&1; then echo "${ERROR}: Cannot commit changes without re-running \`go generate\`." echo '' echo 'This will cause failures in CI.' echo '' echo "Output of \`go run ${root}/bin/gen -dry-run\`:" echo '' echo '################################################################################' "${root}/bin/gen" -dry-run || true echo '################################################################################' exit_code=1 fi # Make sure changes to generation code and the .tables.json are coordinated. if ! git diff --cached --name-only --diff-filter=M -z "${against}" | \grep --null --quiet --extended-regexp '^\.tables\.json$'; then if [ $exit_code -ne 0 ]; then echo '' # Add a new line to separate this error from the prior one fi echo "${ERROR}: please stage your changes to \".tables.json\"" echo '' echo 'The ".tables.json" file is used by "gen.go" to determine' echo 'when the Unicode tables need to be updated and they should' echo 'always be committed together.' echo '' exit_code=1 fi exit $exit_code fi strcase-0.0.5/scripts/test-benchmarks.bash 0000775 0000000 0000000 00000002405 14720254634 0020613 0 ustar 00root root 0000000 0000000 #!/usr/bin/env bash set -euo pipefail if [ -t 1 ]; then RED=$'\E[00;31m' GREEN=$'\E[00;32m' RESET=$'\E[0m' else RED='' GREEN='' RESET='' fi echo '# Testing benchmarks' if ! command -v readarray &>/dev/null; then printf '%sSKIP%s\t%s\n' "${RED}" "${RESET}" \ "readarray not supported by this verison of bash" exit 0 fi # Go packages readarray -t PACKAGES < <(go list ./...) if ((${#PACKAGES[@]} == 0)); then printf '%sFAIL%s\t%s\n' "${RED}" "${RESET}" 'no Go packages' exit 1 fi TMP="$(mktemp -d -t 'strcase.XXXXXX')" trap 'rm -r "${TMP}"' EXIT for pkg in "${PACKAGES[@]}"; do out="${TMP}/${pkg//\//_}" # Run tests in parallel in a sub-shell ( if ! go test -run '^$' -shuffle on -bench . -benchtime 1us "${pkg}" &>"${out}"; then echo '' cat "${out}" echo '' echo "# ${pkg}" \grep --color=auto --after-context=1 --extended-regexp -- \ '-+ FAIL:.*' "${out}" echo '' printf '%sFAIL%s\t%s\n' "${RED}" "${RESET}" "${pkg}" touch "${TMP}/fail" else printf '%sok%s\t%s\n' "${GREEN}" "${RESET}" "${pkg}" fi ) & done wait if [[ -f "${TMP}/fail" ]]; then exit 1 fi exit 0 strcase-0.0.5/strcase.go 0000664 0000000 0000000 00000123225 14720254634 0015167 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. package strcase import ( "strings" "unicode/utf8" "github.com/charlievieth/strcase/internal/bytealg" "github.com/charlievieth/strcase/internal/tables" ) const UnicodeVersion = tables.UnicodeVersion const maxBruteForce = 16 // substring length const maxLen = 32 // subject length func clamp(n int) int { if n < 0 { return -1 } if n > 0 { return 1 } return 0 } // Compare returns an integer comparing two strings lexicographically // ignoring case. // The result will be 0 if a == b, -1 if a < b, and +1 if a > b. func Compare(s, t string) int { // TODO: move next to hasPrefixUnicode i := 0 for ; i < len(s) && i < len(t); i++ { sr := s[i] tr := t[i] if (sr|tr)&utf8.RuneSelf != 0 { goto hasUnicode } if sr == tr || _lower[sr] == _lower[tr] { continue } if _lower[sr] < _lower[tr] { return -1 } return 1 } return clamp(len(s) - len(t)) hasUnicode: s = s[i:] t = t[i:] for _, sr := range s { // If t is exhausted the strings are not equal. if len(t) == 0 { return 1 } // Extract first rune from second string. var tr rune if t[0] < utf8.RuneSelf { tr, t = rune(_lower[t[0]]), t[1:] } else { r, size := utf8.DecodeRuneInString(t) tr, t = tables.CaseFold(r), t[size:] } // Easy case. if sr == tr || tables.CaseFold(sr) == tr { continue } return clamp(int(tables.CaseFold(sr)) - int(tr)) } if len(t) == 0 { return 0 } return -1 } // EqualFold reports whether s and t, interpreted as UTF-8 strings, // are equal under simple Unicode case-folding, which is a more general // form of case-insensitivity. // // EqualFold is included for symmetry with the strings package and because // our implementation is usually 2x faster than [strings.EqualFold]. func EqualFold(s, t string) bool { return Compare(s, t) == 0 } func isAlpha(c byte) bool { return 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' } // NB: we previously used a table that only contained the 128 ASCII characters // and a mask, but this is a about ~6% faster. var _lower = [256]byte{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', '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', '[', '\\', ']', '^', '_', '`', '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', '{', '|', '}', '~', 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, } // containsKelvin returns true if string s contains rune 'K' (Kelvin). func containsKelvin(s string) bool { // TODO: it might be faster to check with IndexNonASCII first // then with Count. return len(s) > 0 && indexRuneCase(s, '\u212A') != -1 } // HasPrefix tests whether the string s begins with prefix ignoring case. func HasPrefix(s, prefix string) bool { ok, _ := hasPrefixUnicode(s, prefix) return ok } // hasPrefixUnicode returns if string s begins with prefix (ignoring case) and // if all of s was consumed matching prefix (either before a match could be found // or is prefix consumes all of s). func hasPrefixUnicode(s, prefix string) (bool, bool) { // TODO: return an enum instead of two bools // The max difference in encoded lengths between cases is 2 bytes for // [kK] (1 byte) and Kelvin 'K' (3 bytes). n := len(s) if len(prefix) > n*3 || (len(prefix) > n*2 && !containsKelvin(prefix)) { return false, true } // ASCII fast path i := 0 for ; i < len(s) && i < len(prefix); i++ { sr := s[i] tr := prefix[i] if (sr|tr)&utf8.RuneSelf != 0 { goto hasUnicode } if tr == sr || _lower[sr] == _lower[tr] { continue } return false, i == len(s)-1 } // Check if we've exhausted s return i == len(prefix), i == len(s) hasUnicode: s = s[i:] prefix = prefix[i:] for _, tr := range prefix { // If s is exhausted the strings are not equal. if len(s) == 0 { return false, true } var sr rune if s[0] < utf8.RuneSelf { sr, s = rune(_lower[s[0]]), s[1:] } else { r, size := utf8.DecodeRuneInString(s) sr, s = r, s[size:] } if tr == sr || tables.CaseFold(tr) == tables.CaseFold(sr) { continue } return false, len(s) == 0 } return true, len(s) == 0 // s exhausted } // TrimPrefix returns s without the provided leading prefix string. // If s doesn't start with prefix, s is returned unchanged. func TrimPrefix(s, prefix string) string { // The max difference in encoded lengths between cases is 2 bytes for // [kK] (1 byte) and Kelvin 'K' (3 bytes). n := len(s) if n*3 < len(prefix) || (n*2 < len(prefix) && !containsKelvin(prefix)) { return s } // ASCII fast path i := 0 for ; i < len(s) && i < len(prefix); i++ { sr := s[i] tr := prefix[i] if (sr|tr)&utf8.RuneSelf != 0 { goto hasUnicode } if tr == sr || _lower[sr] == _lower[tr] { continue } return s } return s[i:] hasUnicode: ss := s s = s[i:] prefix = prefix[i:] for _, tr := range prefix { // If s is exhausted the strings are not equal. if len(s) == 0 { return ss } var sr rune if s[0] < utf8.RuneSelf { sr, s = rune(_lower[s[0]]), s[1:] } else { r, size := utf8.DecodeRuneInString(s) sr, s = tables.CaseFold(r), s[size:] } if tr == sr || tables.CaseFold(tr) == sr { continue } return ss } return s } // HasSuffix tests whether the string s ends with suffix. func HasSuffix(s, suffix string) bool { ok, _ := hasSuffixUnicode(s, suffix) return ok } // hasSuffixUnicode returns if string s ends with suffix and the starting index // of the suffix in s (so that we can trim it). func hasSuffixUnicode(s, suffix string) (bool, int) { // TODO: if s and suffix have similar lengths it might be faster // to trim the left side of s then use HasPrefix since that saves // us from have to use utf8.DecodeLastRuneInString which is slow. // The max difference in encoded lengths between cases is 2 bytes for // [kK] (1 byte) and Kelvin 'K' (3 bytes). nt := len(suffix) ns := len(s) if nt == 0 { return true, ns } if ns*3 < nt || (ns*2 < nt && !containsKelvin(suffix)) { return false, 0 } t := suffix i := ns - 1 j := nt - 1 for ; i >= 0 && j >= 0; i, j = i-1, j-1 { sr := s[i] tr := t[j] if (sr|tr)&utf8.RuneSelf != 0 { goto hasUnicode } if tr == sr || _lower[sr] == _lower[tr] { continue } return false, 0 } return j == -1, i + 1 hasUnicode: s = s[:i+1] t = t[:j+1] for len(s) != 0 && len(t) != 0 { var sr, tr rune if n := len(s) - 1; s[n] < utf8.RuneSelf { sr, s = rune(_lower[s[n]]), s[:n] } else { r, size := utf8.DecodeLastRuneInString(s) sr, s = r, s[:len(s)-size] } if n := len(t) - 1; t[n] < utf8.RuneSelf { tr, t = rune(_lower[t[n]]), t[:n] } else { r, size := utf8.DecodeLastRuneInString(t) tr, t = r, t[:len(t)-size] } if sr == tr || tables.CaseFold(sr) == tables.CaseFold(tr) { continue } return false, 0 } return len(t) == 0, len(s) } // TrimSuffix returns s without the provided trailing suffix string. // If s doesn't end with suffix, s is returned unchanged. func TrimSuffix(s, suffix string) string { if match, i := hasSuffixUnicode(s, suffix); match { return s[:i] } return s } // bruteForceIndexUnicode performs a brute-force search for substr in s. func bruteForceIndexUnicode(s, substr string) int { var u0, u1 rune var sz0, sz1 int if substr[0] < utf8.RuneSelf { u0, sz0 = rune(substr[0]), 1 } else { u0, sz0 = utf8.DecodeRuneInString(substr) } if substr[sz0] < utf8.RuneSelf { u1, sz1 = rune(substr[sz0]), 1 } else { u1, sz1 = utf8.DecodeRuneInString(substr[sz0:]) } folds0 := tables.FoldMapExcludingUpperLower(u0) folds1 := tables.FoldMapExcludingUpperLower(u1) hasFolds0 := folds0[0] != 0 hasFolds1 := folds1[0] != 0 needle := substr[sz0+sz1:] // Ugly hack var l0, l1 rune switch u0 { case 'İ': l0 = 'İ' case 'ı': l0 = 'ı' default: u0, l0, _ = tables.ToUpperLower(u0) } switch u1 { case 'İ': l1 = 'İ' case 'ı': l1 = 'ı' default: u1, l1, _ = tables.ToUpperLower(u1) } // Limit search space. t := len(s) - len(substr)/3 + 2 if t > len(s) { t = len(s) } switch { case !hasFolds0 && u0 == l0 && !hasFolds1 && u1 == l1: i := 0 // Fast check for the first two runes. if u0 != utf8.RuneError && u1 != utf8.RuneError { i = strings.Index(s, substr[:sz0+sz1]) if i < 0 { return -1 } } for i < t { var n0 int var r0 rune if s[i] < utf8.RuneSelf { r0, n0 = rune(s[i]), 1 } else { r0, n0 = utf8.DecodeRuneInString(s[i:]) } if r0 != u0 { i += n0 continue } if i+n0 >= t { break } var n1 int var r1 rune if s[i+n0] < utf8.RuneSelf { r1, n1 = rune(s[i+n0]), 1 } else { r1, n1 = utf8.DecodeRuneInString(s[i+n0:]) } if r1 != u1 { i += n0 if r1 != u0 { i += n1 // Skip 2 runes when possible } continue } match, noMore := hasPrefixUnicode(s[i+n0+n1:], needle) if match { return i } if noMore { break } i += n0 if r1 != u0 { i += n1 // Skip 2 runes when possible } } return -1 case !hasFolds0 && !hasFolds1: // TODO: check is adding a fast check for l0 and u0 is faster i := 0 for i < t { var n0 int var r0 rune if s[i] < utf8.RuneSelf { r0, n0 = rune(s[i]), 1 } else { r0, n0 = utf8.DecodeRuneInString(s[i:]) } if r0 != u0 && r0 != l0 { i += n0 continue } if i+n0 >= t { break } var n1 int var r1 rune if s[i+n0] < utf8.RuneSelf { r1, n1 = rune(s[i+n0]), 1 } else { r1, n1 = utf8.DecodeRuneInString(s[i+n0:]) } if r1 != u1 && r1 != l1 { i += n0 if r1 != u0 && r1 != l0 { i += n1 // Skip 2 runes when possible } continue } match, noMore := hasPrefixUnicode(s[i+n0+n1:], needle) if match { return i } if noMore { break } i += n0 if r1 != u0 && r1 != l0 { i += n1 // Skip 2 runes when possible } } return -1 default: // TODO: see if there is a better cutoff to use i := 0 for i < t { var n0 int var r0 rune if s[i] < utf8.RuneSelf { r0, n0 = rune(s[i]), 1 } else { r0, n0 = utf8.DecodeRuneInString(s[i:]) } if r0 != u0 && r0 != l0 { if !hasFolds0 || (r0 != folds0[0] && r0 != folds0[1]) { i += n0 continue } } if i+n0 >= t { break } var n1 int var r1 rune if s[i+n0] < utf8.RuneSelf { r1, n1 = rune(s[i+n0]), 1 } else { r1, n1 = utf8.DecodeRuneInString(s[i+n0:]) } if r1 != u1 && r1 != l1 { if !hasFolds1 || (r1 != folds1[0] && r1 != folds1[1]) { i += n0 if !hasFolds0 && r1 != u0 && r1 != l0 { i += n1 // Skip 2 runes when possible } continue } } match, noMore := hasPrefixUnicode(s[i+n0+n1:], needle) if match { return i } if noMore { break } i += n0 if !hasFolds0 && r1 != u0 && r1 != l0 { i += n1 // Skip 2 runes when possible } } return -1 } } // nonLetterASCII checks if the first 32 bytes of s consist only of // non-letter ASCII characters. This is used to quickly check if we // can use strings.Index. func nonLetterASCII(s string) bool { for i := 0; i < len(s); i++ { // NB: this is faster than using a lookup table c := s[i] | ' ' // simplify check for alpha if c&utf8.RuneSelf != 0 || 'a' <= c && c <= 'z' { return false } } return true } // TODO: check substr for any folds - this should almost always be faster // than our current search - especially since we end up having to scan it // multiple times. Maybe: check first rune (and maybe second), then check // if substr has any folds. // // That said this library is meant for dealing with text and this might // only with languages that don't have any/few folds. // // One thing we could do is use the longest prefix that does not have any // folds and use the fast string search for that. // Index returns the index of the first instance of substr in s, or -1 if // substr is not present in s. Both s and substr are interpreted as UTF-8 // strings and simple Unicode case-folding is used to check for equality. // All invalid UTF-8 encoded runes are considered equal - this matches the // behavior of [strings.EqualFold]. // // If substr is a single byte and an invalid UTF-8 sequence (0x80-0xFF) the // index of the first invalid rune is returned. This matches the behavior of // [IndexRune], but does not match the behavior of [IndexByte], which will // return the index of bytes in the range of 0x80-0xFF. // This is required because we guarantee that the result of Index would equal // if compared with [strings.EqualFold]. func Index(s, substr string) int { n := len(substr) var r rune var size int if n > 0 { if substr[0] < utf8.RuneSelf { r, size = rune(substr[0]), 1 } else { r, size = utf8.DecodeRuneInString(substr) } } switch { case n == 0: return 0 case n == 1 && r != utf8.RuneError: return IndexByte(s, byte(r)) case n == size: return IndexRune(s, r) case n >= len(s): if n > len(s)*3 { return -1 } // Match here is possible due to upper/lower case runes // having different encoded sizes. // // Fast check to see if s contains the first character of substr. i := IndexRune(s, r) if i < 0 { return -1 } // Reduce the search space s = s[i:] // Kelvin K is three times the size of ASCII [Kk] so we need // to check for it to see if the longer needle (substr) could // possibly match the shorter haystack (s). if n > len(s)*2 && !containsKelvin(substr) { return -1 } // NB: until disproven this is sufficiently fast (and maybe fastest) if o := bruteForceIndexUnicode(s, substr); o != -1 { return o + i } return -1 case n <= maxLen: // WARN: 32 is for arm64 (see: bytealg.MaxLen) // WARN: // * this does not take non-folding runes into account // * figure out when this negatively impacts performance // * consider skipping if s is small relative to substr // * check if s contains the first char of substr first ??? // * check after the maxBruteForce check ??? // // Fast path if the sub-string is all non-alpha ASCII chars // // NB: This only works because len(substr) <= 32 // // TODO: // * Are we just gaming benchmarks here and need a quicker // cutover to Rabin-Karp? // * We should skip this check if s is small // if bytealg.NativeIndex && n <= 32 && nonLetterASCII(substr) { return bytealg.IndexString(s, substr) } // TODO: tune this if len(s) <= maxBruteForce { return bruteForceIndexUnicode(s, substr) } // fallthrough } var u0, u1 rune var sz0, sz1 int if substr[0] < utf8.RuneSelf { u0, sz0 = rune(substr[0]), 1 } else { u0, sz0 = utf8.DecodeRuneInString(substr) } if substr[sz0] < utf8.RuneSelf { u1, sz1 = rune(substr[sz0]), 1 } else { u1, sz1 = utf8.DecodeRuneInString(substr[sz0:]) } // Use Rabin-Karp if either of the first two runes are invalid // this is slower but simplifies the logic below. if u0 == utf8.RuneError || u1 == utf8.RuneError { return indexRabinKarpUnicode(s, substr) } // hasFolds{0,1} should be rare so consider optimizing // the no folds case folds0 := tables.FoldMapExcludingUpperLower(u0) folds1 := tables.FoldMapExcludingUpperLower(u1) needle := substr[sz0+sz1:] // TODO: we can possibly get rid of the ToUpperLower function // and table since it's not always on the critical path and it // adds a a lot to the size of this package // Ugly hack var l0, l1 rune switch u0 { case 'İ': l0 = 'İ' case 'ı': l0 = 'ı' default: u0, l0, _ = tables.ToUpperLower(u0) } switch u1 { case 'İ': l1 = 'İ' case 'ı': l1 = 'ı' default: u1, l1, _ = tables.ToUpperLower(u1) } fails := 0 // TODO: see if we can stop sooner. t := len(s) - len(substr)/3 + 1 if t > len(s) { t = len(s) } for i := 0; i < t; { var r0 rune var n0 int if s[i] < utf8.RuneSelf { r0, n0 = rune(s[i]), 1 } else { r0, n0 = utf8.DecodeRuneInString(s[i:]) } if r0 != u0 && r0 != l0 && (folds0[0] == 0 || (r0 != folds0[0] && r0 != folds0[1])) { var o, sz int if folds0[0] == 0 { o, sz = indexRune2(s[i+n0:], l0, u0) } else { // TODO: pass folds to indexRune so that we don't have to // look them up again. o, sz = indexRune(s[i+n0:], l0) } if o < 0 { return -1 } i += o + n0 n0 = sz // The rune we matched on might not be the same size as c0 } if i+n0 >= t { return -1 } var r1 rune var n1 int if s[i+n0] < utf8.RuneSelf { r1, n1 = rune(s[i+n0]), 1 } else { r1, n1 = utf8.DecodeRuneInString(s[i+n0:]) } if r1 == u1 || r1 == l1 || (folds1[0] != 0 && (r1 == folds1[0] || r1 == folds1[1])) { match, exhausted := hasPrefixUnicode(s[i+n0+n1:], needle) if match { return i } if exhausted { return -1 } } fails++ i += n0 // NB: After tuning this appears to be ideal across platforms. if fails >= 4+i>>4 && i < t { // From bytes/bytes.go: // // Give up on IndexByte, it isn't skipping ahead // far enough to be better than Rabin-Karp. // Experiments (using IndexPeriodic) suggest // the cutover is about 16 byte skips. // TODO: if large prefixes of sep are matching // we should cutover at even larger average skips, // because Equal becomes that much more expensive. // This code does not take that effect into account. // // NB(charlie): The above part about "Equal" being // more expensive is particularly relevant us since // our "Equal" is drastically more expensive than // the stdlibs. j := indexRabinKarpUnicode(s[i:], substr) if j < 0 { return -1 } return i + j } } return -1 } // LastIndex returns the index of the last instance of substr in s, or -1 if // substr is not present in s. func LastIndex(s, substr string) int { n := len(substr) var r rune var size int if n > 0 { if substr[n-1] < utf8.RuneSelf { r, size = rune(substr[n-1]), 1 } else { r, size = utf8.DecodeRuneInString(substr) } } switch { case n == 0: return len(s) // case n == 1 && r != utf8.RuneError: case n == 1: return LastIndexByte(s, substr[0]) case n == size: // TODO: indexRabinKarpRevUnicode might be faster here return lastIndexRune(s, r) case n >= len(s): if n > len(s)*3 { return -1 } if n > len(s)*2 && !containsKelvin(substr) { return -1 } // fallthrough } return indexRabinKarpRevUnicode(s, substr) } // IndexByte returns the index of the first instance of c (ignoring case) in s, // or -1 if c is not present in s. Matching is case-insensitive and Unicode // simple folding is used which means that ASCII bytes 'K' and 'k' match Kelvin // 'K', and ASCII bytes 'S' and 's' match 'ſ' (Latin small letter long S). // Therefore, string s may be scanned twice when c is in [KkSs] // (because the optimized assembly is ASCII only). // // On amd64 and arm64 this is only ~20-25% slower than strings.IndexByte for // small strings (<4M) and ~6% slower for larger strings. // The slowdown for small strings is due to additional checks and function call // overheard. func IndexByte(s string, c byte) int { // TODO: the below quick check is only to improve benchmark performance for // small strings (where the overhead of this function and IndexByteString // not being inlined becomes noticeable ~1ns). // See if we can get this function inlined or reduce the overhead of // indexByte. // // Fast check for bytes that can't be folded to from Unicode chars. // This shaves one or two nanoseconds from IndexByte, which is // meaningful when s is small. switch c { case 'K', 'S', 'k', 's': i, _ := indexByte(s, c) return i default: return bytealg.IndexByteString(s, c) } } // IndexByte returns the index of the first instance of c (ignoring case) in s, // or -1 if c is not present in s. Case matching is ASCII only, unlike // [IndexByte] which is Unicode aware. func IndexByteASCII(s string, c byte) int { return bytealg.IndexByteString(s, c) } // indexByte returns the index of the first instance of c in s, or -1 if c is // not present in s and the size (in bytes) of the character matched (this is // needed to handle matching [Kk] and [Ss] to multibyte characters 'K' and 'ſ'). func indexByte(s string, c byte) (int, int) { if len(s) == 0 { return -1, 1 } n := bytealg.IndexByteString(s, c) // Special case for Unicode characters that map to ASCII. var r rune var sz int switch c { case 'K', 'k': r = 'K' // Kelvin K sz = 3 case 'S', 's': r = 'ſ' // Latin small letter long S sz = 2 default: return n, 1 } // Search for Unicode characters that map to ASCII byte 'c' if n > 0 { if n < sz { return n, 1 // Matched c before a possible rune 'r' } s = s[:n] // Limit search space } if o := indexRuneCase(s, r); n == -1 || (o != -1 && o < n) { return o, sz } return n, 1 } // LastIndexByte returns the index of the last instance of c in s, or -1 // if c is not present in s. func LastIndexByte(s string, c byte) int { if len(s) == 0 { return -1 } if !isAlpha(c) { return strings.LastIndexByte(s, c) } // Special case for Unicode characters that map to ASCII. var r rune switch c { case 'K', 'k': r = 'K' case 'S', 's': r = 'ſ' default: c |= ' ' // convert to lower case for i := len(s) - 1; i >= 0; i-- { if s[i]|' ' == c { return i } } return -1 } // Handle ASCII characters with Unicode mappings c |= ' ' // convert to lower case for i := len(s); i > 0; { if s[i-1] < utf8.RuneSelf { i-- if s[i]|' ' == c { return i } } else { sr, size := utf8.DecodeLastRuneInString(s[:i]) i -= size if sr == r { return i } } } return -1 } // IndexRune returns the index of the first instance of the Unicode code point // r, or -1 if rune is not present in s. // If r is utf8.RuneError, it returns the first instance of any // invalid UTF-8 byte sequence. func IndexRune(s string, r rune) int { // TODO: This is faster than strings.IndexRune when r is not ASCII // so make a PR to go/strings. // TODO: consider checking if r is ASCII here so that it can be inlined i, _ := indexRune(s, r) return i } // indexRune returns the index of the first instance of the Unicode code point // r and the size of the rune that matched. func indexRune(s string, r rune) (int, int) { // TODO: handle invalid runes switch { case 0 <= r && r < utf8.RuneSelf: // TODO: Check if we can use bytealg.IndexByteString directly. return indexByte(s, byte(r)) case r == utf8.RuneError: for i, r := range s { if r == utf8.RuneError { return i, utf8.RuneLen(r) } } return -1, 1 case !utf8.ValidRune(r): return -1, 1 default: // TODO: use a function for len(folds) if folds := tables.FoldMap(r); folds != nil { size := utf8.RuneLen(r) n := indexRuneCase(s, r) if n == 0 { return 0, size } if n > 0 { s = s[:n] } for i := 0; i < len(folds); i++ { rr := rune(folds[i]) if rr == r { continue } if rr == 0 { break } o := indexRuneCase(s, rr) if o != -1 && (n == -1 || o < n) { n = o s = s[:n] size = utf8.RuneLen(rr) } } return n, size } else if u, l, ok := tables.ToUpperLower(r); ok { return indexRune2(s, l, u) } return indexRuneCase(s, r), utf8.RuneLen(r) } } // TODO: consider creating a version of this function for when we've already // decoded the rune and know that it is valid and not-ASCII. // // indexRuneCase is a *case-sensitive* version of strings.IndexRune that is // generally faster for Unicode characters since it searches for the rune's // second byte, which is generally more unique, instead of the first byte, // like strings.IndexRune. func indexRuneCase(s string, r rune) int { // TODO: // * remove if my PR is ever merged // * consider searching for the first byte if it is not one of: // 240, 243, or 244 (which are the first byte of ~78% of multi-byte // Unicode characters). switch { case 0 <= r && r < utf8.RuneSelf: return strings.IndexByte(s, byte(r)) case r == utf8.RuneError: for i, r := range s { if r == utf8.RuneError { return i } } return -1 case !utf8.ValidRune(r): return -1 default: var n int var c0, c1, c2, c3 byte // Inlined version of utf8.EncodeRune. This is one of our hottest // functions and EncodeRune or string(r) add significant overhead // when the string being searched is small. const ( tx = 0b10000000 t2 = 0b11000000 t3 = 0b11100000 t4 = 0b11110000 maskx = 0b00111111 rune2Max = 1<<11 - 1 rune3Max = 1<<16 - 1 ) switch i := uint32(r); { case i <= rune2Max: c0 = t2 | byte(r>>6) c1 = tx | byte(r)&maskx n = 2 // NB: removed the invalid rune check since that is // performed above. case i <= rune3Max: c0 = t3 | byte(r>>12) c1 = tx | byte(r>>6)&maskx c2 = tx | byte(r)&maskx n = 3 default: c0 = t4 | byte(r>>18) c1 = tx | byte(r>>12)&maskx c2 = tx | byte(r>>6)&maskx c3 = tx | byte(r)&maskx n = 4 } // Search for r using the last byte of its UTF-8 encoded form // since it is more unique than the first byte. This 4-5x faster // when all the text is Unicode. var fails, i int switch n { case 2: i = 1 for i < len(s) { if s[i] != c1 { o := strings.IndexByte(s[i+1:], c1) if o < 0 { return -1 } i += o + 1 } if s[i-1] == c0 { return i - 1 } fails++ i++ // Switch to bytealg.IndexString, if implemented, when the needle // is small and IndexByte produces too many false positives. if (bytealg.NativeIndex && fails > bytealg.Cutover(i) && i < len(s)) || (!bytealg.NativeIndex && fails >= 4+i>>4 && i < len(s)) { if bytealg.NativeIndex { // NB: Impossible to match in the middle of the two byte // rune so we don't need to search from: s[i-:]. if j := bytealg.IndexString(s[i:], string(r)); j != -1 { return i + j } } else { // Elided on platforms with a native IndexString. // This is faster than calling strings.Index or // using Rabin-Karp. for ; i < len(s); i++ { if s[i] == c1 && s[i-1] == c0 { return i - 1 } } } return -1 } } case 3: i = 2 for i < len(s) { if s[i] != c2 { o := strings.IndexByte(s[i+1:], c2) if o < 0 { return -1 } i += o + 1 } if s[i-2] == c0 && s[i-1] == c1 { return i - 2 } fails++ i++ if (bytealg.NativeIndex && fails > bytealg.Cutover(i) && i < len(s)) || (!bytealg.NativeIndex && fails >= 4+i>>4 && i < len(s)) { if bytealg.NativeIndex { // We might be in the middle of a rune so search: s[i-2:] if j := bytealg.IndexString(s[i-2:], string(r)); j != -1 { return i + j - 2 } } else { for ; i < len(s); i++ { if s[i] == c2 && s[i-1] == c1 && s[i-2] == c0 { return i - 2 } } } return -1 } } case 4: i = 3 for i < len(s) { if s[i] != c3 { o := strings.IndexByte(s[i+1:], c3) if o < 0 { return -1 } i += o + 1 } if s[i-3] == c0 && s[i-2] == c1 && s[i-1] == c2 { return i - 3 } fails++ i++ if (bytealg.NativeIndex && fails > bytealg.Cutover(i) && i < len(s)) || (!bytealg.NativeIndex && fails >= 4+i>>4 && i < len(s)) { if bytealg.NativeIndex { // We might be in the middle of a rune so search: s[i-3:] if j := bytealg.IndexString(s[i-3:], string(r)); j != -1 { return i + j - 3 } } else { for ; i < len(s); i++ { if s[i] == c3 && s[i-1] == c2 && s[i-2] == c1 && s[i-3] == c0 { return i - 3 } } } return -1 } } } return -1 } } // indexRune2 returns the index of the first instance of the Unicode code point // lower or upper. The search is *case-sensitive*. func indexRune2(s string, lower, upper rune) (int, int) { // TODO: // - do we need this now that we don't search for the first byte? // - check if any of the rune bytes are equal and search by that // - NB: this ^^^ was slower when I tried that // // Percentage of uppper/lower case runes that share bytes (at index): // // 0: 80.65% // 1: 46.58% // 2: 11.57% // 3: 3.83% // // Based on the above we could combine searches using the second byte. if lower|upper < utf8.RuneSelf { return indexByte(s, byte(lower&0x7F)) } n := indexRuneCase(s, lower) sz := utf8.RuneLen(lower) if n != 0 && lower != upper { if 0 <= n && n < len(s) { s = s[:n] // limit the search space } if o := indexRuneCase(s, upper); n == -1 || (0 <= o && o < n) { n = o sz = utf8.RuneLen(upper) } } return n, sz } // lastIndexRune returns the last index of the first instance of the Unicode // code point r, or -1 if rune is not present in s. // If r is utf8.RuneError, it returns the last instance of any // invalid UTF-8 byte sequence. func lastIndexRune(s string, r rune) int { switch { case r == utf8.RuneError: for i := len(s); i > 0; { sr, size := utf8.DecodeLastRuneInString(s[:i]) i -= size if sr == utf8.RuneError { return i } } return -1 case !utf8.ValidRune(r): return -1 default: if folds := tables.FoldMap(r); folds != nil { for i := len(s); i > 0; { var sr rune if sr = rune(s[i-1]); sr < utf8.RuneSelf { i-- } else { var size int sr, size = utf8.DecodeLastRuneInString(s[:i]) i -= size } for j := 0; j < len(folds) && folds[j] != 0; j++ { if sr == rune(folds[j]) { return i } } } } else { u, l, _ := tables.ToUpperLower(r) if u == l { rs := string(r) last := len(rs) - 1 loop: for i := len(s) - 1; i >= last; i-- { // Step backwards comparing bytes. if s[i] == rs[last] { for j := 1; j < len(rs); j++ { if s[i-j] != rs[last-j] { continue loop } } return i - last } } } else { for i := len(s); i > 0; { var sr rune if sr = rune(s[i-1]); sr < utf8.RuneSelf { i-- } else { var size int sr, size = utf8.DecodeLastRuneInString(s[:i]) i -= size } if sr == u || sr == l { return i } } } } return -1 } } // primeRK is the prime base used in Rabin-Karp algorithm. const primeRK = 16777619 // hashStrUnicode returns the hash and the appropriate multiplicative // factor for use in Rabin-Karp algorithm, and the number of runes // in sep. func hashStrUnicode(sep string) (uint32, uint32, int) { hash := uint32(0) n := 0 for _, r := range sep { if r < utf8.RuneSelf { r = rune(_lower[r]) } else { r = tables.CaseFold(r) } hash = hash*primeRK + uint32(r) n++ } var pow, sq uint32 = 1, primeRK for i := n; i > 0; i >>= 1 { if i&1 != 0 { pow *= sq } sq *= sq } return hash, pow, n } // hashStrRevUnicode returns the hash of the reverse of sep and the // appropriate multiplicative factor for use in Rabin-Karp algorithm, // and the number of runes in sep. func hashStrRevUnicode(sep string) (uint32, uint32, int) { hash := uint32(0) n := 0 for i := len(sep); i > 0; { var r rune var size int if sep[i-1] < utf8.RuneSelf { r, size = rune(_lower[sep[i-1]]), 1 } else { r, size = utf8.DecodeLastRuneInString(sep[:i]) r = tables.CaseFold(r) } hash = hash*primeRK + uint32(r) i -= size n++ } var pow, sq uint32 = 1, primeRK for i := n; i > 0; i >>= 1 { if i&1 != 0 { pow *= sq } sq *= sq } return hash, pow, n } // indexRabinKarpRevUnicode uses the Rabin-Karp search algorithm to return the // index of the last occurrence of substr in s, or -1 if not present. func indexRabinKarpRevUnicode(s, substr string) int { // Reverse Rabin-Karp search hashss, pow, n := hashStrRevUnicode(substr) var h uint32 i := len(s) for i > 0 { var r rune var size int if s[i-1] < utf8.RuneSelf { r, size = rune(_lower[s[i-1]]), 1 } else { r, size = utf8.DecodeLastRuneInString(s[:i]) r = tables.CaseFold(r) } h = h*primeRK + uint32(r) i -= size n-- if n == 0 { break } } if n > 0 { return -1 } if h == hashss && HasSuffix(s, substr) { return i // WARN } j := len(s) for i > 0 { var r0 rune var n0 int if s[i-1] < utf8.RuneSelf { r0, n0 = rune(_lower[s[i-1]]), 1 } else { r0, n0 = utf8.DecodeLastRuneInString(s[:i]) r0 = tables.CaseFold(r0) } var r1 rune var n1 int if s[j-1] < utf8.RuneSelf { r1, n1 = rune(_lower[s[j-1]]), 1 } else { r1, n1 = utf8.DecodeLastRuneInString(s[:j]) r1 = tables.CaseFold(r1) } h *= primeRK h += uint32(r0) h -= pow * uint32(r1) i -= n0 j -= n1 if h == hashss && HasSuffix(s[i:j], substr) { return i } } return -1 } // indexRabinKarpUnicode uses the Rabin-Karp search algorithm to return the // index of the first occurrence of substr in s, or -1 if not present. func indexRabinKarpUnicode(s, substr string) int { // Rabin-Karp search hashss, pow, n := hashStrUnicode(substr) var h uint32 sz := 0 // byte size of 'n' runes for i, r := range s { orig := r if r < utf8.RuneSelf { r = rune(_lower[r]) } else { r = tables.CaseFold(r) } h = h*primeRK + uint32(r) n-- if n == 0 { sz = i + utf8.RuneLen(orig) break } } if h == hashss && HasPrefix(s, substr) { return 0 } i := 0 // start of rolling hash for j := sz; j < len(s); { h *= primeRK var s0, s1 rune var n0, n1 int if s[j] < utf8.RuneSelf { s0, n0 = rune(_lower[s[j]]), 1 } else { s0, n0 = utf8.DecodeRuneInString(s[j:]) s0 = tables.CaseFold(s0) } if s[i] < utf8.RuneSelf { s1, n1 = rune(_lower[s[i]]), 1 } else { s1, n1 = utf8.DecodeRuneInString(s[i:]) s1 = tables.CaseFold(s1) } h += uint32(s0) h -= pow * uint32(s1) j += n0 i += n1 if h == hashss && HasPrefix(s[i:j], substr) { return i } } return -1 } func countRune(s string, r rune) (n int) { sz := utf8.RuneLen(r) for { i := indexRuneCase(s, r) if i == -1 { return n } n++ s = s[i+sz:] } } // Count counts the number of non-overlapping instances of substr in s. // If substr is an empty string, Count returns 1 + the number of Unicode // code points in s. func Count(s, substr string) int { // special case if len(substr) == 0 { return utf8.RuneCountInString(s) + 1 } if len(substr) == 1 { c := substr[0] n := bytealg.CountString(s, c) switch c { case 'K', 'k': n += countRune(s, 'K') case 'S', 's': n += countRune(s, 'ſ') } return n } n := 0 runeCount := -1 // Lazily calculated after the first match for { i := Index(s, substr) if i == -1 { return n } n++ if runeCount < 0 { runeCount = utf8.RuneCountInString(substr) } o := runeCount s = s[i:] // Trim substr prefix from s. for j, r := range s { o-- if o == 0 { s = s[j+utf8.RuneLen(r):] break } } } } // Contains reports whether substr is within s. func Contains(s, substr string) bool { return Index(s, substr) >= 0 } // ContainsAny reports whether any Unicode code points in chars are within s. func ContainsAny(s, chars string) bool { return IndexAny(s, chars) >= 0 } // ContainsRune reports whether the Unicode code point r is within s. func ContainsRune(s string, r rune) bool { return IndexRune(s, r) >= 0 } // asciiSet is a 32-byte value, where each bit represents the presence of a // given ASCII character in the set. The 128-bits of the lower 16 bytes, // starting with the least-significant bit of the lowest word to the // most-significant bit of the highest word, map to the full range of all // 128 ASCII characters. The 128-bits of the upper 16 bytes will be zeroed, // ensuring that any non-ASCII character will be reported as not in the set. // This allocates a total of 32 bytes even though the upper half // is unused to avoid bounds checks in asciiSet.contains. type asciiSet [8]uint32 // makeASCIISet creates a set of ASCII characters and reports whether all // characters in chars are ASCII. func makeASCIISet(s, chars string) (as asciiSet, ok bool) { i := 0 for ; i < len(chars); i++ { c := chars[i] if c >= utf8.RuneSelf { return as, false } as[c/32] |= 1 << (c % 32) if isAlpha(c) { c ^= ' ' // swap case as[c/32] |= 1 << (c % 32) // Can't use ASCII when non-ASCII chars fold to ASCII chars. switch c { case 'K', 'k', 'S', 's': // Checking if s contains only ASCII and using asciiSet is // faster than falling back to the Unicode aware search. // This holds true even on systems where ContainsNonASCII // does not use SIMD (tested on arm). if !ContainsNonASCII(s) { i++ goto ascii // ASCII fast path that elides this check } return as, false } } } ascii: // ASCII fast path for when we know s does not contain Unicode. for ; i < len(chars); i++ { c := chars[i] if c >= utf8.RuneSelf { return as, false } as[c/32] |= 1 << (c % 32) if isAlpha(c) { c ^= ' ' // swap case as[c/32] |= 1 << (c % 32) } } return as, true } // contains reports whether c is inside the set. func (as *asciiSet) contains(c byte) bool { return (as[c/32] & (1 << (c % 32))) != 0 } // IndexAny returns the index of the first instance of any Unicode code point // from chars in s, or -1 if no Unicode code point from chars is present in s. func IndexAny(s, chars string) int { if len(chars) == 0 { // Avoid scanning all of s. return -1 } if len(chars) == 1 { // Avoid scanning all of s. r := rune(chars[0]) if r >= utf8.RuneSelf { r = utf8.RuneError } return IndexRune(s, r) } if len(s) > 8 { if as, isASCII := makeASCIISet(s, chars); isASCII { // TODO: should we convert Kelvin and Small Long S to ASCII here? for i := 0; i < len(s); i++ { if as.contains(s[i]) { return i } } return -1 } } if len(s) > len(chars)*2 { // Avoid the overhead of repeatedly calling IndexRune // if s significantly longer than chars (IndexRune is // also quite fast for long strings). // // This cutover was empirically found via internal/benchtest. n := -1 for _, r := range chars { i := IndexRune(s, r) if i != -1 && (n == -1 || i < n) { n = i if n == 0 { break } s = s[:n] } } return n } for i, c := range s { if IndexRune(chars, c) >= 0 { return i } } return -1 } // LastIndexAny returns the index of the last instance of any Unicode code // point from chars in s, or -1 if no Unicode code point from chars is // present in s. func LastIndexAny(s, chars string) int { if len(chars) == 0 { return -1 } if len(s) == 1 { rc := rune(s[0]) if rc >= utf8.RuneSelf { rc = utf8.RuneError } if IndexRune(chars, rc) >= 0 { return 0 } return -1 } if len(s) > 8 { if as, isASCII := makeASCIISet(s, chars); isASCII { for i := len(s) - 1; i >= 0; i-- { if as.contains(s[i]) { return i } } return -1 } } if len(chars) == 1 { if c := chars[0]; c < utf8.RuneSelf { return LastIndexByte(s, c) } for i := len(s); i > 0; { r, size := utf8.DecodeLastRuneInString(s[:i]) i -= size if r == utf8.RuneError { return i } } return -1 } for i := len(s); i > 0; { r, size := utf8.DecodeLastRuneInString(s[:i]) i -= size if IndexRune(chars, r) >= 0 { return i } } return -1 } // Cut slices s around the first instance of sep, // returning the text before and after sep. // The found result reports whether sep appears in s. // If sep does not appear in s, cut returns s, "", false. func Cut(s, sep string) (before, after string, found bool) { // TODO: both Cut and Count would benefit from Index returning the // number of bytes consumed from sep - consider adding this. if i := Index(s, sep); i >= 0 { after = s[i:] // trim sep from s for range sep { if after[0] < utf8.RuneSelf { after = after[1:] } else { _, n := utf8.DecodeRuneInString(after) after = after[n:] } } return s[:i], after, true } return s, "", false } // CutPrefix returns s without the provided leading prefix string // and reports whether it found the prefix. // If s doesn't start with prefix, CutPrefix returns s, false. // If prefix is the empty string, CutPrefix returns s, true. func CutPrefix(s, prefix string) (after string, found bool) { if len(prefix) == 0 { return s, true } if ss := TrimPrefix(s, prefix); len(ss) != len(s) { return ss, true } return s, false } // CutSuffix returns s without theI provided ending suffix string // and reports whether it found the suffix. // If s doesn't end with suffix, CutSuffix returns s, false. // If suffix is the empty string, CutSuffix returns s, true. func CutSuffix(s, suffix string) (before string, found bool) { if len(suffix) == 0 { return s, true } if match, i := hasSuffixUnicode(s, suffix); match { return s[:i], true } return s, false } // IndexNonASCII returns the index of first non-ASCII rune in s, or -1 if s // consists only of ASCII characters. // // On arm64 and amd64, IndexNonASCII is an order of magnitude faster than // using a for loop and checking each byte of s and should be close to that // of strings.IndexByte (54GBi/s on arm64). // // IndexNonASCII is up to 17 times faster on arm64 and 12 times faster on // amd64 compared to using a for loop and checking each byte of s. func IndexNonASCII(s string) int { return bytealg.IndexNonASCII(s) } // ContainsNonASCII returns true if s contains any non-ASCII characters. func ContainsNonASCII(s string) bool { return bytealg.IndexNonASCII(s) >= 0 } strcase-0.0.5/strcase_test.go 0000664 0000000 0000000 00000100575 14720254634 0016231 0 ustar 00root root 0000000 0000000 // Copyright 2023 Charlie Vieth. All rights reserved. // Use of this source code is governed by the MIT license. package strcase import ( "flag" "fmt" "math/rand" "sort" "strconv" "strings" "testing" "unicode" "unicode/utf8" "unsafe" "github.com/charlievieth/strcase/internal/tables" "github.com/charlievieth/strcase/internal/test" ) func TestUnicodeVersion(t *testing.T) { test.UnicodeVersion(t, UnicodeVersion) } func TestCompare(t *testing.T) { test.Compare(t, Compare) } func TestEqualFold(t *testing.T) { test.EqualFold(t, EqualFold) } func TestIndex(t *testing.T) { test.Index(t, Index) } func TestIndexUnicode(t *testing.T) { test.IndexUnicode(t, Index) } func TestIndexInvalid(t *testing.T) { test.IndexInvalid(t, Index) } func TestIndexRuneIndexParity(t *testing.T) { test.IndexRuneIndexParity(t, Index, IndexRune) } func TestIndexAllAssigned(t *testing.T) { test.IndexAllAssigned(t, test.TestFunc{Name: "Compare", Index: Compare}, test.TestFunc{Name: "Contains", Contains: Contains}, test.TestFunc{Name: "EqualFold", Contains: EqualFold}, test.TestFunc{Name: "HasPrefix", Contains: HasPrefix}, test.TestFunc{Name: "HasSuffix", Contains: HasSuffix}, test.TestFunc{Name: "Index", Index: Index}, test.TestFunc{Name: "LastIndex", Index: LastIndex}, ) } // Test our use of bytealg.IndexString func TestIndexNumeric(t *testing.T) { test.IndexNumeric(t, Index) } // Extensively test the handling of Kelvin K since it is three times the size // of ASCII [Kk] it requires special handling. func TestIndexKelvin(t *testing.T) { test.IndexKelvin(t, Index) } // Test the Rabin-Karp fallback logic directly since not all test cases will // trigger it. func TestRabinKarp(t *testing.T) { test.Index(t, test.WrapRabinKarp(indexRabinKarpUnicode)) } // Test the Rabin-Karp fallback logic directly since not all test cases will // trigger it. func TestRabinKarpUnicode(t *testing.T) { test.IndexUnicode(t, test.WrapRabinKarp(indexRabinKarpUnicode)) } func TestBruteForceIndexUnicode(t *testing.T) { test.IndexUnicode(t, func(s, substr string) int { n := len(substr) var size int if n > 0 { if substr[0] < utf8.RuneSelf { size = 1 } else { _, size = utf8.DecodeRuneInString(substr) } } if len(s) == 0 || len(substr) == 0 || n == size { // Can't use brute-force here return Index(s, substr) } return bruteForceIndexUnicode(s, substr) }) } func TestIndexAllocs(t *testing.T) { haystack := "test世界İ" allocs := testing.AllocsPerRun(1000, func() { if i := Index(haystack, "世界İ"); i != 4 { t.Fatalf("'s' at %d; want 4", i) } if i := Index(haystack, "t世"); i != 3 { t.Fatalf("'世' at %d; want 3", i) } if i := Index(haystack, "test世界İ"); i != 0 { t.Fatalf("'İ' at %d; want 0", i) } }) if allocs != 0 { t.Errorf("expected no allocations, got %f", allocs) } } func TestContains(t *testing.T) { test.Contains(t, Contains) } func TestContainsAny(t *testing.T) { test.ContainsAny(t, ContainsAny) } func TestLastIndex(t *testing.T) { test.LastIndex(t, LastIndex) } func TestLastIndexInvalid(t *testing.T) { test.LastIndexInvalid(t, LastIndex) } func TestIndexRune(t *testing.T) { test.IndexRune(t, IndexRune) } func TestIndexRuneAllocs(t *testing.T) { haystack := "test世界İ" allocs := testing.AllocsPerRun(1000, func() { if i := IndexRune(haystack, 's'); i != 2 { t.Fatalf("'s' at %d; want 2", i) } if i := IndexRune(haystack, '世'); i != 4 { t.Fatalf("'世' at %d; want 4", i) } if i := IndexRune(haystack, 'İ'); i != 10 { t.Fatalf("'İ' at %d; want 10", i) } }) if allocs != 0 { t.Errorf("expected no allocations, got %f", allocs) } } func TestIndexRuneCase(t *testing.T) { test.IndexRuneCase(t, indexRuneCase) } func TestContainsRune(t *testing.T) { test.ContainsRune(t, ContainsRune) } func TestLastIndexRune(t *testing.T) { test.LastIndexRune(t, lastIndexRune) } func TestIndexByte(t *testing.T) { test.IndexByte(t, IndexByte) } func TestLastIndexByte(t *testing.T) { test.LastIndexByte(t, LastIndexByte) } func TestIndexNonASCII(t *testing.T) { test.IndexNonASCII(t, IndexNonASCII) } func TestContainsNonASCII(t *testing.T) { test.ContainsNonASCII(t, ContainsNonASCII) } func TestHasPrefix(t *testing.T) { test.HasPrefix(t, hasPrefixUnicode) } func TestTrimPrefix(t *testing.T) { test.TrimPrefix(t, TrimPrefix) } func TestHasSuffix(t *testing.T) { test.HasSuffix(t, HasSuffix) } func TestTrimSuffix(t *testing.T) { test.TrimSuffix(t, TrimSuffix) } func TestCount(t *testing.T) { test.Count(t, Count) } func TestTestIndexAny(t *testing.T) { test.IndexAny(t, IndexAny) } func TestTestLastIndexAny(t *testing.T) { test.LastIndexAny(t, LastIndexAny) } func TestCut(t *testing.T) { test.Cut(t, Cut) } func TestCutPrefix(t *testing.T) { test.CutPrefix(t, CutPrefix) } func TestCutSuffix(t *testing.T) { test.CutSuffix(t, CutSuffix) } // Ensure that strings.EqualFold does not match 'İ' (U+0130) and ASCII 'i' or 'I'. // This is mostly a sanity check. func TestLatinCapitalLetterIWithDotAbove(t *testing.T) { test.LatinCapitalLetterIWithDotAbove(t, Compare) } func TestNonLetterASCII(t *testing.T) { test.NonLetterASCII(t, nonLetterASCII) } //////////////////////////////////////////////////////////// // Fuzz tests func TestIndexFuzz(t *testing.T) { test.IndexFuzz(t, Index) } func TestLastIndexFuzz(t *testing.T) { test.LastIndexFuzz(t, LastIndex) } func TestHasPrefixFuzz(t *testing.T) { test.HasPrefixFuzz(t, hasPrefixUnicode) } func TestHasSuffixFuzz(t *testing.T) { test.HasSuffixFuzz(t, HasSuffix) } func TestCompareFuzz(t *testing.T) { test.CompareFuzz(t, Compare) } func TestEqualFoldFuzz(t *testing.T) { test.EqualFoldFuzz(t, test.TestFunc{Name: "Contains", Contains: Contains}, test.TestFunc{Name: "EqualFold", Contains: EqualFold}, test.TestFunc{Name: "HasPrefix", Contains: HasPrefix}, test.TestFunc{Name: "HasSuffix", Contains: HasSuffix}, ) } //////////////////////////////////////////////////////////// // Benchmarks // TODO: update benchmarks to match my Go PR and see if my approach // there is faster than ours (use last byte) func BenchmarkCompare(b *testing.B) { bench := func(b *testing.B, s, t string) { b.Helper() n := len(s) if len(t) < n { n = len(t) } b.SetBytes(int64(n)) for i := 0; i < b.N; i++ { Compare(s, t) } } const s1 = "abcdefghijKz" const s2 = "abcDefGhijKz" b.Run("ASCII", func(b *testing.B) { bench(b, s1, s2) }) b.Run("ASCII_Long", func(b *testing.B) { const s = s1 + s1 + s1 + s1 + s1 const t = s2 + s2 + s2 + s2 + s2 bench(b, s, t) }) b.Run("UnicodePrefix", func(b *testing.B) { // WARN const s1 = "AbCdCfghIjKz" const s2 = "abcDeFGhijKz" bench(b, "αβδ"+s1, "ΑΒΔ"+s2) }) b.Run("UnicodeSuffix", func(b *testing.B) { bench(b, s1+"αβδ", s2+"ΑΒΔ") }) b.Run("Russian", func(b *testing.B) { b.SetBytes(int64(len(russianText))) bench(b, russianText, russianText) }) } const benchmarkString = "some_text=some☺value" // WARN: dev only func BenchmarkIndexRuneRussian(b *testing.B) { want := strings.IndexRune(russianText, 'ж') if got := IndexRune(russianText, 'ж'); got != want { b.Fatalf("got: %d want: %d", got, want) } b.SetBytes(int64(len(russianText))) for i := 0; i < b.N; i++ { IndexRune(russianText, 'ж') } } func BenchmarkIndexRune(b *testing.B) { // const str = benchmarkString + "\u212a" const str = benchmarkString + "k" // const str = benchmarkString + string(rune(0x212A)) // if got := IndexRune(benchmarkString, '☺'); got != 14 { if got := IndexRune(str, rune(0x212A)); got != 22 { b.Fatalf("wrong index: expected 14, got=%d", got) } for i := 0; i < b.N; i++ { IndexRune(benchmarkString, '☺') } } // TODO: remove this benchmark func BenchmarkIndexRuneFastPath(b *testing.B) { if got := IndexRune(benchmarkString, 'v'); got != 17 { b.Fatalf("wrong index: expected 17, got=%d", got) } for i := 0; i < b.N; i++ { IndexRune(benchmarkString, 'v') } } // Benchmark buffer var bmbuf []byte func valName(x int) string { if s := x >> 20; s<<20 == x { return fmt.Sprintf("%dM", s) } if s := x >> 10; s<<10 == x { return fmt.Sprintf("%dK", s) } return fmt.Sprint(x) } var indexSizes = []int{10, 32, 4 << 10, 4 << 20, 64 << 20} func benchBytesUnicode(b *testing.B, sizes []int, f func(b *testing.B, n int, s string)) { // WARN: change this to runes with the same last byte // These character all have the same second byte (0x90) const _s = "𐀀𐀁𐀂𐀃𐀄𐀅𐀆𐀇𐀈𐀉𐀊𐀋𐀍𐀎𐀏𐀐𐀑𐀒𐀓𐀔𐀕𐀖𐀗𐀘𐀙𐀚𐀛𐀜𐀝𐀞𐀟𐀠" const s = _s + _s + _s + _s + _s + _s + _s + _s + _s + _s + _s + _s + _s + _s + _s + _s // 2048 for _, n := range sizes { b.Run(valName(n), func(b *testing.B) { if len(bmbuf) < n { bmbuf = make([]byte, n) } for i := 0; i < n; { i += copy(bmbuf[i:], s) } copy(bmbuf[n-len("𐀤"):], "𐀤") b.SetBytes(int64(n)) f(b, n, string(bmbuf)) }) } } func bmIndexRune(index func(string, rune) int) func(b *testing.B, n int, s string) { return func(b *testing.B, n int, s string) { // Sanity check since I got this wrong in the past want := strings.IndexRune(s, '𐀤') got := index(s, '𐀤') if want != got { b.Fatalf("bad index %d want: %d", got, want) } if got != n-4 { b.Fatalf("bad index %d want: %d", got, n-4) } for i := 0; i < b.N; i++ { _ = index(s, '𐀤') } } } func benchBytes(b *testing.B, sizes []int, f func(b *testing.B, n int)) { for _, n := range sizes { b.Run(valName(n), func(b *testing.B) { if len(bmbuf) < n { bmbuf = make([]byte, n) } b.SetBytes(int64(n)) f(b, n) }) } } func bmIndexRuneCaseUnicode(rt *unicode.RangeTable, needle rune) func(b *testing.B, n int) { n := 0 visitTable(rt, func(_ rune) { n++ }) rs := make([]rune, 0, n) visitTable(rt, func(r rune) { if r != needle { rs = append(rs, r) } }) // Shuffle the runes so that they are not in descending order. // The sort is deterministic since this is used for benchmarks, // which need to be repeatable. rr := rand.New(rand.NewSource(1)) rr.Shuffle(len(rs), func(i, j int) { rs[i], rs[j] = rs[j], rs[i] }) uchars := string(rs) return func(b *testing.B, n int) { buf := bmbuf[0:n] o := copy(buf, uchars) for o < len(buf) { o += copy(buf[o:], uchars) } // Make space for the needle rune at the end of buf. m := utf8.RuneLen(needle) for o := m; o > 0; { _, sz := utf8.DecodeLastRune(buf) copy(buf[len(buf)-sz:], "\x00\x00\x00\x00") buf = buf[:len(buf)-sz] o -= sz } buf = utf8.AppendRune(buf[:n-m], needle) s := *(*string)(unsafe.Pointer(&buf)) n -= m // adjust for rune len for i := 0; i < b.N; i++ { j := indexRuneCase(s, needle) if j != n { b.Fatal("bad index", j) } } for i := range buf { buf[i] = 0 } } } func BenchmarkIndexRuneCaseUnicode(b *testing.B) { b.Run("Latin", func(b *testing.B) { // Latin is mostly 1, 2, 3 byte runes. benchBytes(b, indexSizes, bmIndexRuneCaseUnicode(unicode.Latin, 'é')) }) b.Run("Cyrillic", func(b *testing.B) { // Cyrillic is mostly 2 and 3 byte runes. benchBytes(b, indexSizes, bmIndexRuneCaseUnicode(unicode.Cyrillic, 'Ꙁ')) }) b.Run("Han", func(b *testing.B) { // Han consists only of 3 and 4 byte runes. benchBytes(b, indexSizes, bmIndexRuneCaseUnicode(unicode.Han, '𠀿')) }) } // Torture test IndexRune. This is useful for calculating the cutover // for when we should switch to strings.Index in indexRuneCase. func BenchmarkIndexRuneTorture_Bytes(b *testing.B) { b.Log("WARN: this only tests runes that are 4 bytes!") if *benchStdLib { benchBytesUnicode(b, indexSizes, bmIndexRune(strings.IndexRune)) } else { benchBytesUnicode(b, indexSizes, bmIndexRune(IndexRune)) } } func BenchmarkIndexByte(b *testing.B) { const ch = 'V' if got := IndexByte(benchmarkString, ch); got != 17 { b.Fatalf("wrong index: expected 17, got=%d", got) } b.SetBytes(int64(len(benchmarkString))) for i := 0; i < b.N; i++ { IndexByte(benchmarkString, ch) } } func BenchmarkIndexByteEmpty(b *testing.B) { const ch = 'V' for i := 0; i < b.N; i++ { IndexByte("", ch) } } // Benchmark the handling of [KkSs] which require a check for their // equivalent Unicode folds. func BenchmarkIndexByteLongSpecial(b *testing.B) { for i := range bmbuf { bmbuf[i] = 0 } bmIndexByte := func(index func(string, byte) int) func(b *testing.B, n int) { return func(b *testing.B, n int) { buf := bmbuf[0:n] buf[n/2] = 's' copy(buf[n-2:], "ſ") s := string(buf) // We scan the first half of the string twice but the match occurs // in the first half so using that index here seems more fair than // using the full length of the string as number of bytes processed. b.SetBytes(int64(index(s, 's'))) for i := 0; i < b.N; i++ { j := index(s, 's') if j != n/2 { b.Fatal("bad index", j) } } buf[n/2] = '\x00' buf[n-2] = '\x00' buf[n-1] = '\x00' } } benchBytes := func(b *testing.B, sizes []int, f func(b *testing.B, n int)) { for _, n := range sizes { b.Run(valName(n), func(b *testing.B) { if len(bmbuf) < n { bmbuf = make([]byte, n) } f(b, n) }) } } benchBytes(b, indexSizes, bmIndexByte(IndexByte)) } func BenchmarkLastIndexByte(b *testing.B) { if testing.Short() { b.Skip("short test") } s := "b" + strings.Repeat("a", 128) c := byte('B') if i := LastIndexByte(s, c); i != 0 { b.Fatal("invalid index:", i) } b.SetBytes(int64(len(s))) for i := 0; i < b.N; i++ { LastIndexByte(s, c) } } // WARN var benchStdLib = flag.Bool("stdlib", false, "Use strings.Index in benchmarks (for comparison)") // WARN: this is not really fair because of strings.ToLower func benchmarkIndex(b *testing.B, s, substr string) { if *benchStdLib { n := strings.Index(strings.ToLower(s), strings.ToLower(substr)) if o := Index(s, substr); n != o { b.Errorf("strings.Index(%q, %q) = %d; want: %d", s, substr, n, o) } if n >= 0 { b.SetBytes(int64(len(s) + len(substr))) } else { b.SetBytes(int64(len(s))) } for i := 0; i < b.N; i++ { strings.Index(strings.ToLower(s), strings.ToLower(substr)) } } else { if n := Index(s, substr); n >= 0 { b.SetBytes(int64(len(s) + len(substr))) } else { b.SetBytes(int64(len(s))) } for i := 0; i < b.N; i++ { Index(s, substr) } } } func BenchmarkIndex(b *testing.B) { if got := Index(benchmarkString, "v"); got != 17 { b.Fatalf("wrong index: expected 17, got=%d", got) } benchmarkIndex(b, benchmarkString, "v") } func BenchmarkLastIndex(b *testing.B) { if got := LastIndex(benchmarkString, "v"); got != 17 { b.Fatalf("wrong index: expected 17, got=%d", got) } for i := 0; i < b.N; i++ { LastIndex(benchmarkString, "v") } } // Thanks to variable length encoding it's possible the needle // to be larger than the haystack. func BenchmarkLastIndexNeedleExceedsHaystack(b *testing.B) { s := strings.Repeat("ab", 1024) substr := "z" + s i1 := strings.LastIndex(s, substr) i2 := LastIndex(s, substr) if i1 != i2 { b.Fatalf("wrong index: expected: %d, got: %d", i1, i2) } // Can't compare perf to the stdlib because we have to scan // the whole string and not just bail at the length mismatch. b.SetBytes(int64(len(s))) for i := 0; i < b.N; i++ { LastIndex(s, substr) } } func BenchmarkIndexNeedleLongerThanSubject(b *testing.B) { const s = benchmarkString b.Run("FirstRuneEqual", func(b *testing.B) { substr := s + "-" benchmarkIndex(b, s, substr) }) b.Run("FirstRuneNotEqual", func(b *testing.B) { substr := "-" + s benchmarkIndex(b, s, substr) }) } const russianText = `Владимир Маяковский родился в селе Багдади[10] Кутаисской губернии Российской империи, в обедневшей дворянской семье[11] Владимира Константиновича Маяковского (1857—1906), служившего лесничим третьего разряда в Эриванской губернии, а с 1889 г. — в Багдатском лесничестве. Маяковский вёл род от запорожских казаков, прадед отца поэта Кирилл Маяковский был полковым есаулом Черноморских войск, что дало ему право получить звание дворянина[12]. Мать поэта, Александра Алексеевна Павленко (1867−1954), из рода кубанских казаков, родилась на Кубани, в станице Терновской. В поэме «Владикавказ — Тифлис» 1924 года Маяковский называет себя «грузином». О себе Маяковский сказал в 1927 году: «Родился я в 1894[13] году на Кавказе. Отец был казак, мать — украинка. Первый язык — грузинский. Так сказать, между тремя культурами» (из интервью пражской газете «Prager Presse»)[14]. Бабушка по отцовской линии, Ефросинья Осиповна Данилевская, — двоюродная сестра автора исторических романов Г. П. Данилевского, родом из запорожских казаков. У Маяковского было две сестры: Людмила (1884—1972) и Ольга (1890—1949) и два брата: Константин (умер в трёхлетнем возрасте от скарлатины) и Александр (умер во младенчестве).` var ( russianUpper = strings.ToUpper(russianText) russianLower = strings.ToLower(russianText) ) func BenchmarkIndexRussian(b *testing.B) { benchmarkIndex(b, russianText, "младенчестве") } // Pathological worst-case. func BenchmarkIndexLateMatchLargeNeedle(b *testing.B) { bench := func(b *testing.B, s1, s2, s3 string) { m := strings.Repeat(s1, 100/len(s1)) haystack := strings.Repeat(m+s2, 300) + m + s3 needle := m + s3 benchmarkIndex(b, haystack, needle) } b.Run("Latin", func(b *testing.B) { bench(b, "AB", "C", "D") }) b.Run("Cyrillic", func(b *testing.B) { bench(b, "А̀ВЄ", "Ж", "Њ") }) b.Run("Han", func(b *testing.B) { bench(b, "遠方", "來", "矣") }) } // Pathological worst-case. Consistency here is a good thing. func BenchmarkIndexLateMatchSmallNeedle(b *testing.B) { bench := func(b *testing.B, s1, s2 string) { s := strings.Repeat(s1, 1_000/len(s1)) + s2 rs := []rune(s) for i := 2; i <= 64; i *= 2 { b.Run(strconv.Itoa(i), func(b *testing.B) { benchmarkIndex(b, s, string(rs[len(rs)-i:])) }) } } b.Run("Numeric", func(b *testing.B) { bench(b, "123", "4") }) b.Run("Latin", func(b *testing.B) { bench(b, "abc", "d") }) b.Run("Cyrillic", func(b *testing.B) { bench(b, "А̀ВЄ", "Њ") }) b.Run("Han", func(b *testing.B) { bench(b, "遠方", "來") }) } // Pathological worst-case. Consistency here is a good thing. func BenchmarkIndexEarlyMatchSmallNeedle(b *testing.B) { bench := func(b *testing.B, s1, s2 string) { for i := 2; i <= 32; i += 2 { s := strings.Repeat(s1, i) + s2 substr := s1 + s2 b.Run(strconv.Itoa(i), func(b *testing.B) { benchmarkIndex(b, s, substr) }) } } b.Run("Latin", func(b *testing.B) { bench(b, "AB", "C") }) b.Run("Cyrillic", func(b *testing.B) { bench(b, "А̀В", "Њ") }) b.Run("Han", func(b *testing.B) { bench(b, "遠方", "來") }) } // Thanks to variable length encoding it's possible the needle // to be larger than the haystack. func BenchmarkIndexNeedleExceedsHaystack(b *testing.B) { s := strings.Repeat("А̀В", 32*1024) substr := s + s[:len(s)/2] + "z" i1 := strings.Index(s, substr) i2 := Index(s, substr) if i1 != i2 { b.Fatalf("wrong index: expected: %d, got: %d", i1, i2) } // Can't compare perf to the stdlib because we have to scan // the whole string and not just bail at the length mismatch. b.SetBytes(int64(len(s))) for i := 0; i < b.N; i++ { Index(s, substr) } } // Pathological worst-case. Consistency here is a good thing. func BenchmarkLastIndexLateMatchSmallNeedle(b *testing.B) { bench := func(b *testing.B, s1, s2 string) { s := s2 + strings.Repeat(s1, 1_000/len(s1)) rs := []rune(s) for _, i := range []int{2, 16, 32} { b.Run(strconv.Itoa(i), func(b *testing.B) { b.SetBytes(int64(len(s))) substr := string(rs[:i]) for i := 0; i < b.N; i++ { if j := LastIndex(s, substr); j != 0 { b.Fatalf("LastIndex(%q, %q) = %d; want: %d", s, substr, j, 0) } } }) } } b.Run("Cyrillic", func(b *testing.B) { bench(b, "А̀ВЄ", "Њ") }) b.Run("Han", func(b *testing.B) { bench(b, "遠方", "來") }) } func makeBenchInputHard() string { tokens := [...]string{ "", "
", "", "", "
", "", "", "", "hello", "world", } x := make([]byte, 0, 1<<20) for { i := rand.Intn(len(tokens)) if len(x)+len(tokens[i]) >= 1<<20 { break } x = append(x, tokens[i]...) } return string(x) } var benchInputHard = makeBenchInputHard() func benchmarkIndexHard(b *testing.B, sep string) { benchmarkIndex(b, benchInputHard, sep) } func benchmarkLastIndexHard(b *testing.B, sep string) { i := LastIndex(benchInputHard, sep) if i < 0 { b.SetBytes(int64(len(benchInputHard))) } else { b.SetBytes(int64(i + len(sep))) } for i := 0; i < b.N; i++ { LastIndex(benchInputHard, sep) } } func BenchmarkIndexHard1(b *testing.B) { benchmarkIndexHard(b, "<>") } func BenchmarkIndexHard2(b *testing.B) { benchmarkIndexHard(b, "") } func BenchmarkIndexHard3(b *testing.B) { benchmarkIndexHard(b, "hello world") } func BenchmarkIndexHard4(b *testing.B) { benchmarkIndexHard(b, "helloworld") } // TODO: these benchmarks are not very useful func BenchmarkLastIndexHard1(b *testing.B) { benchmarkLastIndexHard(b, "<>") } func BenchmarkLastIndexHard2(b *testing.B) { benchmarkLastIndexHard(b, "") } func BenchmarkLastIndexHard3(b *testing.B) { benchmarkLastIndexHard(b, "hello world") } // visitTable visits all runes in the given RangeTable in order, calling fn for each. func visitTable(rt *unicode.RangeTable, fn func(rune)) { for _, r16 := range rt.R16 { for r := rune(r16.Lo); r <= rune(r16.Hi); r += rune(r16.Stride) { fn(r) } } for _, r32 := range rt.R32 { for r := rune(r32.Lo); r <= rune(r32.Hi); r += rune(r32.Stride) { fn(r) } } } func BenchmarkLastIndexRuneUnicode(b *testing.B) { bench := func(b *testing.B, name string, rt *unicode.RangeTable) { b.Run(name, func(b *testing.B) { var rs []rune visitTable(rt, func(r rune) { if len(rs) < 1024 { rs = append(rs, r) } }) s := string(rs) r := rs[0] b.SetBytes(int64(len(s))) for i := 0; i < b.N; i++ { lastIndexRune(s, r) } }) } bench(b, "Han", unicode.Han) // no folds bench(b, "Cyrillic", unicode.Cyrillic) // folds } var ( benchInputTorture = strings.Repeat("ABC", 1<<10) + "123" + strings.Repeat("ABC", 1<<10) benchNeedleTorture = strings.Repeat("ABC", 1<<10+1) benchInputTortureUnicode = strings.Repeat("ΑΒΔ", 1<<10) + "123" + strings.Repeat("ΑΒΔ", 1<<10) benchNeedleTortureUnicode = strings.Repeat("ΑΒΔ", 1<<10+1) ) func BenchmarkIndexTorture(b *testing.B) { benchmarkIndex(b, benchInputTorture, benchNeedleTorture) } func BenchmarkIndexTortureUnicode(b *testing.B) { benchmarkIndex(b, benchInputTortureUnicode, benchNeedleTortureUnicode) } func BenchmarkIndexPeriodic(b *testing.B) { key := "aa" for _, skip := range [...]int{2, 4, 8, 16, 32, 64} { b.Run(fmt.Sprintf("IndexPeriodic%d", skip), func(b *testing.B) { s := strings.Repeat("a"+strings.Repeat(" ", skip-1), 1<<16/skip) benchmarkIndex(b, s, key) }) } } func BenchmarkIndexPeriodicUnicode(b *testing.B) { key := "αa" for _, skip := range [...]int{2, 4, 8, 16, 32, 64} { b.Run(fmt.Sprintf("IndexPeriodic%d", skip), func(b *testing.B) { s := strings.Repeat("α"+strings.Repeat(" ", skip-1), 1<<16/skip) benchmarkIndex(b, s, key) }) } } func BenchmarkIndexNonASCII(b *testing.B) { for _, size := range indexSizes { b.Run(valName(size), func(b *testing.B) { s := strings.Repeat("a", size-1) + string(rune(utf8.RuneSelf)) if i := IndexNonASCII(s); i < 0 { b.Fatalf("IndexNonASCII(%q) = -1", s) return } b.SetBytes(int64(len(s))) for i := 0; i < b.N; i++ { IndexNonASCII(s) } }) } } func BenchmarkHasPrefixASCII(b *testing.B) { s0 := strings.Repeat("a", 64) s1 := strings.Repeat("A", 64) if !HasPrefix(s0, s1) { b.Fatalf("HasPrefix(%[1]q, %[1]q) = false; want: true", s0, s1) } b.SetBytes(int64(len(s0))) for i := 0; i < b.N; i++ { HasPrefix(s0, s1) } } func BenchmarkHasPrefix(b *testing.B) { if !HasPrefix(benchmarkString, benchmarkString) { b.Fatalf("HasPrefix(%[1]q, %[1]q) = false; want: true", benchmarkString) } b.SetBytes(int64(len(benchmarkString))) for i := 0; i < b.N; i++ { HasPrefix(benchmarkString, benchmarkString) } } func BenchmarkHasPrefixUnicode(b *testing.B) { const prefix = "Владимир Маяковский родился" b.SetBytes(int64(len(prefix))) for i := 0; i < b.N; i++ { HasPrefix(prefix, "Владимир МАЯКОВСКИЙ родился") } } func BenchmarkHasPrefixHard(b *testing.B) { if !HasPrefix(benchInputHard, benchInputHard) { b.Fatalf("HasPrefix(%[1]q, %[1]q) = false; want: true", benchInputHard) } b.SetBytes(int64(len(benchInputHard))) for i := 0; i < b.N; i++ { HasPrefix(benchInputHard, benchInputHard) } } func BenchmarkHasPrefixRussian(b *testing.B) { if !HasPrefix(russianLower, russianUpper) { b.Fatalf("HasPrefix(%[1]q, %[1]q) = false; want: true", russianText) } b.SetBytes(int64(len(russianLower))) for i := 0; i < b.N; i++ { HasPrefix(russianLower, russianUpper) } } func BenchmarkHasPrefixLonger(b *testing.B) { prefix := strings.Repeat("\u212a", 32) s := strings.Repeat("k", 32) if !HasPrefix(s, prefix) { b.Fatalf("HasPrefix(%q, %q) = false; want: true", s, prefix) } b.Run("Equal", func(b *testing.B) { b.SetBytes(int64(len(prefix))) for i := 0; i < b.N; i++ { HasPrefix(s, prefix) } }) b.Run("ShortCircuitSize", func(b *testing.B) { kprefix := prefix + "\u212a" b.SetBytes(int64(len(kprefix))) for i := 0; i < b.N; i++ { HasPrefix(s, kprefix) } }) // Benchmark the overhead of checking for Kelvin b.Run("KelvinCheck", func(b *testing.B) { ks := s + "\u212a" b.SetBytes(int64(len(ks))) for i := 0; i < b.N; i++ { containsKelvin(ks) } }) } // TODO: need to compare against the stdlib func BenchmarkHasSuffix(b *testing.B) { if !HasSuffix(benchmarkString, benchmarkString) { b.Fatalf("HasSuffix(%[1]q, %[1]q) = false; want: true", benchmarkString) } for i := 0; i < b.N; i++ { HasSuffix(benchmarkString, benchmarkString) } } // TODO: match the logic of HasPrefix // TODO: need to compare against the stdlib func BenchmarkHasSuffixRussian(b *testing.B) { if !HasSuffix(russianLower, russianUpper) { b.Fatalf("HasSuffix(%[1]q, %[1]q) = false; want: true", russianText) } b.SetBytes(int64(len(russianLower))) for i := 0; i < b.N; i++ { HasSuffix(russianLower, russianUpper) } } func benchmarkIndexAny(b *testing.B, s, chars string) { i1 := strings.IndexAny(s, chars) i2 := IndexAny(s, chars) if i1 != i2 { b.Fatalf("strings.IndexAny != IndexAny: %d != %d", i1, i2) } min := len(s) for i, r := range chars { o := strings.IndexRune(s, r) if 0 <= o && o < min { min = i + utf8.RuneLen(r) // Include the length of the matched rune } } bytes := int64(min) if *benchStdLib { b.SetBytes(bytes) for i := 0; i < b.N; i++ { strings.IndexAny(s, chars) } } else { b.SetBytes(bytes) for i := 0; i < b.N; i++ { IndexAny(s, chars) } } } func BenchmarkIndexAnyASCII(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set cs := "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz" for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { benchmarkIndexAny(b, x[:k], cs[:j]) }) } } } func BenchmarkIndexAnyUTF8(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set // TODO: use a more diverse string (diff languages) cs := "你好世界, hello world. 你好世界, hello world. 你好世界, hello world." for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { var chars string n := j for i, r := range cs { n-- if n <= 0 { chars = cs[:i+utf8.RuneLen(r)] break } } benchmarkIndexAny(b, x[:k], chars) }) } } } func benchmarkLastIndexAny(b *testing.B, s, chars string) { i1 := strings.LastIndexAny(s, chars) i2 := LastIndexAny(s, chars) if i1 != i2 { b.Fatalf("strings.LastIndexAny != LastIndexAny: %d != %d", i1, i2) } // TODO: make sure the logic here is correct i := strings.LastIndexAny(s, chars) if i < 0 { i = 0 } bytes := int64(len(s) - i) if *benchStdLib { b.SetBytes(bytes) for i := 0; i < b.N; i++ { strings.LastIndexAny(s, chars) } } else { b.SetBytes(bytes) for i := 0; i < b.N; i++ { LastIndexAny(s, chars) } } } func BenchmarkLastIndexAnyASCII(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set cs := "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz" for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { benchmarkLastIndexAny(b, x[:k], cs[:j]) }) } } } func BenchmarkLastIndexAnyUTF8(b *testing.B) { x := strings.Repeat("#", 2048) // Never matches set cs := "你好世界, hello world. 你好世界, hello world. 你好世界, hello world." for k := 1; k <= 2048; k <<= 4 { for j := 1; j <= 64; j <<= 1 { b.Run(fmt.Sprintf("%d:%d", k, j), func(b *testing.B) { benchmarkLastIndexAny(b, x[:k], cs[:j]) }) } } } func BenchmarkCount(b *testing.B) { bench := func(name, s, sep string) { b.Run(name, func(b *testing.B) { i := strings.Count(strings.ToLower(s), strings.ToLower(sep)) j := Count(s, sep) if i != j { b.Fatalf("Count(%q, %q) = %d; want: %d", s, sep, j, i) } b.SetBytes(int64(len(s))) for i := 0; i < b.N; i++ { Count(s, sep) } }) } bench("ASCII_Torture", strings.Repeat("ab", 64), "ab") bench("ASCII_Short", strings.Repeat(" ab", 64), "ab") bench("ASCII_Long", strings.Repeat( " abcdefghijklmnopqrstuvwxyz", 64), "abcdefghijklmnopqrstuvwxyz") bench("Unicode", strings.Repeat("你好世界", 128), "你好世界") // Make sure we lazily process substr. bench("NoMatch", strings.Repeat("你", 8), strings.Repeat("好", 256)) } // Micro-benchmarks for caseFold var caseFoldBenchmarkRunes = [16]rune{ 0xA7C9, 0xA696, 0x03A7, 0x021E, 0x03A3, 0x01B5, 0x01A6, 0xABBC, 0xA72C, 0x1F8E, 0x0056, 0x016E, 0x1E86, 0x1C92, 0x0555, 0x0544, } var caseFoldBenchmarkAll []rune func loadCaseFoldBenchmarkAll() { if caseFoldBenchmarkAll != nil { return } a := make([]rune, 0, len(test.FoldableRunes())) for _, r := range test.FoldableRunes() { if tables.CaseFold(r) != r { a = append(a, r) } } // Make sure the slice is consistently sorted before // randomizing order. This is relevant because the // order of slice elements may change. less := func(i, j int) bool { return a[i] < a[j] } if !sort.SliceIsSorted(a, less) { sort.Slice(a, less) } rr := rand.New(rand.NewSource(12345)) rr.Shuffle(len(a), func(i, j int) { a[i], a[j] = a[j], a[i] }) caseFoldBenchmarkAll = a } func BenchmarkCaseFold(b *testing.B) { for i := 0; i < b.N; i++ { _ = tables.CaseFold(caseFoldBenchmarkRunes[i%len(caseFoldBenchmarkRunes)]) } } func BenchmarkCaseFoldAll(b *testing.B) { loadCaseFoldBenchmarkAll() for i := 0; i < b.N; i++ { for j := i; j < len(caseFoldBenchmarkAll) && j < b.N; j++ { _ = tables.CaseFold(caseFoldBenchmarkAll[j]) } } } // Micro-benchmarks for toUpperLower var toUpperLowerBenchmarkRunes = [16]rune{ 0xA68A, 0x0204, 0x04EC, 0x00D0, 0x0053, 0xA698, 0x1F1A, 0x038E, 0x1F1B, 0x2126, 0x16E47, 0x01D1, 0x13CC, 0x01BC, 0x048E, 0x0386, } func BenchmarkToUpperLower(b *testing.B) { for i := 0; i < b.N; i++ { _, _, _ = tables.ToUpperLower(toUpperLowerBenchmarkRunes[i%len(toUpperLowerBenchmarkRunes)]) } } func BenchmarkNonLetterASCII(b *testing.B) { base := "!\"#$%&'()*+,-./0123456789:;<=>?@[\\]^_`{|}~" base += base + base + base for _, size := range []int{4, 8, 16, 24, 32, 64, 128} { b.Run(fmt.Sprint(size), func(b *testing.B) { s := base[:size] b.SetBytes(int64(len(s))) for i := 0; i < b.N; i++ { nonLetterASCII(s) } }) } }