├── .editorconfig ├── .gitattributes ├── .github ├── dependabot.yml └── workflows │ └── workflow-1.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── package-lock.json ├── package.json ├── scripts └── gen.js ├── src └── index.js ├── test-data ├── bad │ ├── case-early-padding.txt │ ├── caseDemo.txt │ ├── every-byte.txt │ ├── hatetris-wr-rle.txt │ ├── hatetris-wr-rle2.txt │ ├── hatetris-wr.txt │ └── padding-mismatch.txt └── pairs │ ├── caseDemo.bin │ ├── caseDemo.txt │ ├── caseEmpty.bin │ ├── caseEmpty.txt │ ├── every-byte.bin │ ├── every-byte.txt │ ├── every-pair-of-bytes.bin │ ├── every-pair-of-bytes.txt │ ├── hatetris-wr-rle.bin │ ├── hatetris-wr-rle.txt │ ├── hatetris-wr-rle2.bin │ ├── hatetris-wr-rle2.txt │ ├── hatetris-wr.bin │ ├── hatetris-wr.txt │ ├── lena_std.tif.bin │ ├── lena_std.tif.txt │ └── single-bytes │ ├── case0.bin │ ├── case0.txt │ ├── case1.bin │ ├── case1.txt │ ├── case10.bin │ ├── case10.txt │ ├── case100.bin │ ├── case100.txt │ ├── case101.bin │ ├── case101.txt │ ├── case102.bin │ ├── case102.txt │ ├── case103.bin │ ├── case103.txt │ ├── case104.bin │ ├── case104.txt │ ├── case105.bin │ ├── case105.txt │ ├── case106.bin │ ├── case106.txt │ ├── case107.bin │ ├── case107.txt │ ├── case108.bin │ ├── case108.txt │ ├── case109.bin │ ├── case109.txt │ ├── case11.bin │ ├── case11.txt │ ├── case110.bin │ ├── case110.txt │ ├── case111.bin │ ├── case111.txt │ ├── case112.bin │ ├── case112.txt │ ├── case113.bin │ ├── case113.txt │ ├── case114.bin │ ├── case114.txt │ ├── case115.bin │ ├── case115.txt │ ├── case116.bin │ ├── case116.txt │ ├── case117.bin │ ├── case117.txt │ ├── case118.bin │ ├── case118.txt │ ├── case119.bin │ ├── case119.txt │ ├── case12.bin │ ├── case12.txt │ ├── case120.bin │ ├── case120.txt │ ├── case121.bin │ ├── case121.txt │ ├── case122.bin │ ├── case122.txt │ ├── case123.bin │ ├── case123.txt │ ├── case124.bin │ ├── case124.txt │ ├── case125.bin │ ├── case125.txt │ ├── case126.bin │ ├── case126.txt │ ├── case127.bin │ ├── case127.txt │ ├── case128.bin │ ├── case128.txt │ ├── case129.bin │ ├── case129.txt │ ├── case13.bin │ ├── case13.txt │ ├── case130.bin │ ├── case130.txt │ ├── case131.bin │ ├── case131.txt │ ├── case132.bin │ ├── case132.txt │ ├── case133.bin │ ├── case133.txt │ ├── case134.bin │ ├── case134.txt │ ├── case135.bin │ ├── case135.txt │ ├── case136.bin │ ├── case136.txt │ ├── case137.bin │ ├── case137.txt │ ├── case138.bin │ ├── case138.txt │ ├── case139.bin │ ├── case139.txt │ ├── case14.bin │ ├── case14.txt │ ├── case140.bin │ ├── case140.txt │ ├── case141.bin │ ├── case141.txt │ ├── case142.bin │ ├── case142.txt │ ├── case143.bin │ ├── case143.txt │ ├── case144.bin │ ├── case144.txt │ ├── case145.bin │ ├── case145.txt │ ├── case146.bin │ ├── case146.txt │ ├── case147.bin │ ├── case147.txt │ ├── case148.bin │ ├── case148.txt │ ├── case149.bin │ ├── case149.txt │ ├── case15.bin │ ├── case15.txt │ ├── case150.bin │ ├── case150.txt │ ├── case151.bin │ ├── case151.txt │ ├── case152.bin │ ├── case152.txt │ ├── case153.bin │ ├── case153.txt │ ├── case154.bin │ ├── case154.txt │ ├── case155.bin │ ├── case155.txt │ ├── case156.bin │ ├── case156.txt │ ├── case157.bin │ ├── case157.txt │ ├── case158.bin │ ├── case158.txt │ ├── case159.bin │ ├── case159.txt │ ├── case16.bin │ ├── case16.txt │ ├── case160.bin │ ├── case160.txt │ ├── case161.bin │ ├── case161.txt │ ├── case162.bin │ ├── case162.txt │ ├── case163.bin │ ├── case163.txt │ ├── case164.bin │ ├── case164.txt │ ├── case165.bin │ ├── case165.txt │ ├── case166.bin │ ├── case166.txt │ ├── case167.bin │ ├── case167.txt │ ├── case168.bin │ ├── case168.txt │ ├── case169.bin │ ├── case169.txt │ ├── case17.bin │ ├── case17.txt │ ├── case170.bin │ ├── case170.txt │ ├── case171.bin │ ├── case171.txt │ ├── case172.bin │ ├── case172.txt │ ├── case173.bin │ ├── case173.txt │ ├── case174.bin │ ├── case174.txt │ ├── case175.bin │ ├── case175.txt │ ├── case176.bin │ ├── case176.txt │ ├── case177.bin │ ├── case177.txt │ ├── case178.bin │ ├── case178.txt │ ├── case179.bin │ ├── case179.txt │ ├── case18.bin │ ├── case18.txt │ ├── case180.bin │ ├── case180.txt │ ├── case181.bin │ ├── case181.txt │ ├── case182.bin │ ├── case182.txt │ ├── case183.bin │ ├── case183.txt │ ├── case184.bin │ ├── case184.txt │ ├── case185.bin │ ├── case185.txt │ ├── case186.bin │ ├── case186.txt │ ├── case187.bin │ ├── case187.txt │ ├── case188.bin │ ├── case188.txt │ ├── case189.bin │ ├── case189.txt │ ├── case19.bin │ ├── case19.txt │ ├── case190.bin │ ├── case190.txt │ ├── case191.bin │ ├── case191.txt │ ├── case192.bin │ ├── case192.txt │ ├── case193.bin │ ├── case193.txt │ ├── case194.bin │ ├── case194.txt │ ├── case195.bin │ ├── case195.txt │ ├── case196.bin │ ├── case196.txt │ ├── case197.bin │ ├── case197.txt │ ├── case198.bin │ ├── case198.txt │ ├── case199.bin │ ├── case199.txt │ ├── case2.bin │ ├── case2.txt │ ├── case20.bin │ ├── case20.txt │ ├── case200.bin │ ├── case200.txt │ ├── case201.bin │ ├── case201.txt │ ├── case202.bin │ ├── case202.txt │ ├── case203.bin │ ├── case203.txt │ ├── case204.bin │ ├── case204.txt │ ├── case205.bin │ ├── case205.txt │ ├── case206.bin │ ├── case206.txt │ ├── case207.bin │ ├── case207.txt │ ├── case208.bin │ ├── case208.txt │ ├── case209.bin │ ├── case209.txt │ ├── case21.bin │ ├── case21.txt │ ├── case210.bin │ ├── case210.txt │ ├── case211.bin │ ├── case211.txt │ ├── case212.bin │ ├── case212.txt │ ├── case213.bin │ ├── case213.txt │ ├── case214.bin │ ├── case214.txt │ ├── case215.bin │ ├── case215.txt │ ├── case216.bin │ ├── case216.txt │ ├── case217.bin │ ├── case217.txt │ ├── case218.bin │ ├── case218.txt │ ├── case219.bin │ ├── case219.txt │ ├── case22.bin │ ├── case22.txt │ ├── case220.bin │ ├── case220.txt │ ├── case221.bin │ ├── case221.txt │ ├── case222.bin │ ├── case222.txt │ ├── case223.bin │ ├── case223.txt │ ├── case224.bin │ ├── case224.txt │ ├── case225.bin │ ├── case225.txt │ ├── case226.bin │ ├── case226.txt │ ├── case227.bin │ ├── case227.txt │ ├── case228.bin │ ├── case228.txt │ ├── case229.bin │ ├── case229.txt │ ├── case23.bin │ ├── case23.txt │ ├── case230.bin │ ├── case230.txt │ ├── case231.bin │ ├── case231.txt │ ├── case232.bin │ ├── case232.txt │ ├── case233.bin │ ├── case233.txt │ ├── case234.bin │ ├── case234.txt │ ├── case235.bin │ ├── case235.txt │ ├── case236.bin │ ├── case236.txt │ ├── case237.bin │ ├── case237.txt │ ├── case238.bin │ ├── case238.txt │ ├── case239.bin │ ├── case239.txt │ ├── case24.bin │ ├── case24.txt │ ├── case240.bin │ ├── case240.txt │ ├── case241.bin │ ├── case241.txt │ ├── case242.bin │ ├── case242.txt │ ├── case243.bin │ ├── case243.txt │ ├── case244.bin │ ├── case244.txt │ ├── case245.bin │ ├── case245.txt │ ├── case246.bin │ ├── case246.txt │ ├── case247.bin │ ├── case247.txt │ ├── case248.bin │ ├── case248.txt │ ├── case249.bin │ ├── case249.txt │ ├── case25.bin │ ├── case25.txt │ ├── case250.bin │ ├── case250.txt │ ├── case251.bin │ ├── case251.txt │ ├── case252.bin │ ├── case252.txt │ ├── case253.bin │ ├── case253.txt │ ├── case254.bin │ ├── case254.txt │ ├── case255.bin │ ├── case255.txt │ ├── case26.bin │ ├── case26.txt │ ├── case27.bin │ ├── case27.txt │ ├── case28.bin │ ├── case28.txt │ ├── case29.bin │ ├── case29.txt │ ├── case3.bin │ ├── case3.txt │ ├── case30.bin │ ├── case30.txt │ ├── case31.bin │ ├── case31.txt │ ├── case32.bin │ ├── case32.txt │ ├── case33.bin │ ├── case33.txt │ ├── case34.bin │ ├── case34.txt │ ├── case35.bin │ ├── case35.txt │ ├── case36.bin │ ├── case36.txt │ ├── case37.bin │ ├── case37.txt │ ├── case38.bin │ ├── case38.txt │ ├── case39.bin │ ├── case39.txt │ ├── case4.bin │ ├── case4.txt │ ├── case40.bin │ ├── case40.txt │ ├── case41.bin │ ├── case41.txt │ ├── case42.bin │ ├── case42.txt │ ├── case43.bin │ ├── case43.txt │ ├── case44.bin │ ├── case44.txt │ ├── case45.bin │ ├── case45.txt │ ├── case46.bin │ ├── case46.txt │ ├── case47.bin │ ├── case47.txt │ ├── case48.bin │ ├── case48.txt │ ├── case49.bin │ ├── case49.txt │ ├── case5.bin │ ├── case5.txt │ ├── case50.bin │ ├── case50.txt │ ├── case51.bin │ ├── case51.txt │ ├── case52.bin │ ├── case52.txt │ ├── case53.bin │ ├── case53.txt │ ├── case54.bin │ ├── case54.txt │ ├── case55.bin │ ├── case55.txt │ ├── case56.bin │ ├── case56.txt │ ├── case57.bin │ ├── case57.txt │ ├── case58.bin │ ├── case58.txt │ ├── case59.bin │ ├── case59.txt │ ├── case6.bin │ ├── case6.txt │ ├── case60.bin │ ├── case60.txt │ ├── case61.bin │ ├── case61.txt │ ├── case62.bin │ ├── case62.txt │ ├── case63.bin │ ├── case63.txt │ ├── case64.bin │ ├── case64.txt │ ├── case65.bin │ ├── case65.txt │ ├── case66.bin │ ├── case66.txt │ ├── case67.bin │ ├── case67.txt │ ├── case68.bin │ ├── case68.txt │ ├── case69.bin │ ├── case69.txt │ ├── case7.bin │ ├── case7.txt │ ├── case70.bin │ ├── case70.txt │ ├── case71.bin │ ├── case71.txt │ ├── case72.bin │ ├── case72.txt │ ├── case73.bin │ ├── case73.txt │ ├── case74.bin │ ├── case74.txt │ ├── case75.bin │ ├── case75.txt │ ├── case76.bin │ ├── case76.txt │ ├── case77.bin │ ├── case77.txt │ ├── case78.bin │ ├── case78.txt │ ├── case79.bin │ ├── case79.txt │ ├── case8.bin │ ├── case8.txt │ ├── case80.bin │ ├── case80.txt │ ├── case81.bin │ ├── case81.txt │ ├── case82.bin │ ├── case82.txt │ ├── case83.bin │ ├── case83.txt │ ├── case84.bin │ ├── case84.txt │ ├── case85.bin │ ├── case85.txt │ ├── case86.bin │ ├── case86.txt │ ├── case87.bin │ ├── case87.txt │ ├── case88.bin │ ├── case88.txt │ ├── case89.bin │ ├── case89.txt │ ├── case9.bin │ ├── case9.txt │ ├── case90.bin │ ├── case90.txt │ ├── case91.bin │ ├── case91.txt │ ├── case92.bin │ ├── case92.txt │ ├── case93.bin │ ├── case93.txt │ ├── case94.bin │ ├── case94.txt │ ├── case95.bin │ ├── case95.txt │ ├── case96.bin │ ├── case96.txt │ ├── case97.bin │ ├── case97.txt │ ├── case98.bin │ ├── case98.txt │ ├── case99.bin │ └── case99.txt ├── test ├── gen.spec.js └── index.spec.js └── typings └── index.d.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | insert_final_newline = true 3 | 4 | [{*.js,*.json,*.html}] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | 9 | [test-data/**] 10 | insert_final_newline = false 11 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | 19 | test-data/** binary 20 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'npm' 4 | directory: '/' 5 | schedule: 6 | interval: 'monthly' 7 | ignore: 8 | - dependency-name: '*' 9 | update-types: 10 | - 'version-update:semver-minor' 11 | - 'version-update:semver-patch' 12 | -------------------------------------------------------------------------------- /.github/workflows/workflow-1.yml: -------------------------------------------------------------------------------- 1 | name: 'Travis CI replacement' 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - '**' 7 | 8 | jobs: 9 | build-job: 10 | runs-on: 'ubuntu-latest' 11 | 12 | strategy: 13 | matrix: 14 | node-version: ['14.x', '16.x', '18.x', '20.x', '22.x'] 15 | 16 | steps: 17 | - uses: 'actions/checkout@v2' 18 | 19 | - name: 'Use Node.js ${{ matrix.node-version }}' 20 | uses: 'actions/setup-node@v1' 21 | with: 22 | node-version: '${{ matrix.node-version }}' 23 | 24 | - name: 'Actual npm tasks' 25 | run: | 26 | npm install 27 | npm run test 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear in the root of a volume 35 | .DocumentRevisions-V100 36 | .fseventsd 37 | .Spotlight-V100 38 | .TemporaryItems 39 | .Trashes 40 | .VolumeIcon.icns 41 | 42 | # Directories potentially created on remote AFP share 43 | .AppleDB 44 | .AppleDesktop 45 | Network Trash Folder 46 | Temporary Items 47 | .apdisk 48 | 49 | # WHY ISN'T THIS HERE BY DEFAULT 50 | node_modules 51 | coverage 52 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## 2.x.x 4 | 5 | `base2048` now ships as JavaScript ("ES6") modules, not CommonJS modules. The package has `"type": "module"`. Additionally a separate IIFE for browser use is no longer distributed. 6 | 7 | ## 1.x.x 8 | 9 | `base2048` now operates on `Uint8Array`s, not `ArrayBuffer`s. 10 | 11 | ## 0.0.x 12 | 13 | Prototype release. 14 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 qntm 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # base2048 2 | 3 | Base2048 is a binary encoding optimised for transmitting data through Twitter. This JavaScript module, `base2048`, is the first implementation of this encoding. Using Base2048, up to 385 octets can fit in a single Tweet. Compare with [Base65536](https://github.com/qntm/base65536), which manages only 280 octets. 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 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 |
EncodingEfficiencyBytes per Tweet *
UTF‑8UTF‑16UTF‑32
ASCII‑constrainedUnary / Base10%0%0%1
Binary13%6%3%35
Hexadecimal50%25%13%140
Base6475%38%19%210
Base85 †80%40%20%224
BMP‑constrainedHexagramEncode25%38%19%105
BrailleEncode33%50%25%140
Base204856%69%34%385
Base3276863%94%47%263
Full UnicodeEcoji31%31%31%175
Base6553656%64%50%280
Base13107253%+53%+53%297
108 | 109 | \* A Tweet can be up to 280 Unicode characters, give or take Twitter's complex "weighting" calculation.
110 | † Base85 is listed for completeness but all variants use characters which are considered hazardous for general use in text: escape characters, brackets, punctuation *etc.*.
111 | ‡ Base131072 is a work in progress, not yet ready for general use.
112 | 113 | ## Installation 114 | 115 | ```bash 116 | npm install base2048 117 | ``` 118 | 119 | ## Usage 120 | 121 | ```js 122 | import { encode, decode } from 'base2048' 123 | 124 | const uint8Array = new Uint8Array([1, 2, 4, 8, 16, 32, 64, 128]) 125 | const str = encode(uint8Array) 126 | console.log(str) // 'GƸOʜeҩ' 127 | 128 | const uint8Array2 = decode(str) 129 | console.log(uint8Array2) 130 | // [1, 2, 4, 8, 16, 32, 64, 128] 131 | ``` 132 | 133 | ## API 134 | 135 | `base2048` accepts and returns `Uint8Array`s. Note that every Node.js `Buffer` is a `Uint8Array`. A `Uint8Array` can be converted to a Node.js `Buffer` like so: 136 | 137 | ```js 138 | const buffer = Buffer.from(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength) 139 | ``` 140 | 141 | ### encode(uint8Array) 142 | 143 | Encodes a [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) and returns a Base2048 `String` suitable for passing through Twitter. Give or take some padding characters, the output string has 1 character per 11 bits of input. 144 | 145 | ### decode(string) 146 | 147 | Decodes a Base2048 `String` and returns a `Uint8Array` containing the original binary data. 148 | 149 | ## Rationale 150 | 151 | Originally, Twitter allowed Tweets to be at most 140 characters. Discounting URLs, which have their own complex rules, Tweet length was computed as the number of Unicode code points in the Tweet — *not* the number of octets in any particular encoding of that Unicode string. In 2015, observing that most existing text-based encodings made negligible use of most of the Unicode code point space (e.g. Base64 encodes only 6 bits per character = 105 octets per Tweet), I developed [Base65536](https://github.com/qntm/base65536), which encodes 16 bits per character = 280 octets per Tweet. 152 | 153 | On 26 September 2017, Twitter announced that 154 | 155 | > we're going to try out a longer limit, 280 characters, in languages impacted by cramming (which is all except Japanese, Chinese, and Korean). 156 | 157 | This statement is fairly light on usable details and/or factual accuracy. However, following some experimentation and examination of the new web client code, we now understand that maximum Tweet length is indeed 280 Unicode code points, *except that code points U+1100 HANGUL CHOSEONG KIYEOK upwards now count double*. 158 | 159 | Effectively, Twitter divides Unicode into 4,352 "light" code points (U+0000 to U+10FF inclusive) and 1,109,760 "heavy" code points (U+1100 to U+10FFFF inclusive). 160 | 161 | Base65536 *solely* uses heavy characters, which means that a new "long" Tweet can still only contain at most 140 characters of Base65536, encoding 280 octets. This seemed like an imperfect state of affairs to me, and so here we are. 162 | 163 | Base2048 solely uses light characters, which means a new "long" Tweet can contain at most 280 characters of Base2048. Base2048 is an 11-bit encoding, so those 280 characters encode 3080 bits i.e. 385 octets of data, significantly better than Base65536. 164 | 165 | ### Note 166 | 167 | At the time of writing, the sophisticated weighted-code point check is only carried out client-side. Server-side, the check is still a simple code point length check, now capped at 280 code points. So, by circumventing the client-side check, it's possible to send 280 characters of Base65536 i.e. 560 bytes of data in a single Tweet. 168 | 169 | Base2048 was developed under the assumption that most people will not go to the trouble of circumventing the client-side check and/or that eventually the check will be implemented server-side as well. 170 | 171 | ## Code point safety 172 | 173 | Base2048 uses only ["safe" Unicode code points](https://qntm.org/safe) (no unassigned code points, no control characters, no whitespace, no combining diacritics, ...). This guarantees that the data sent will remain intact when sent through any "Unicode-clean" text interface. 174 | 175 | In the available space of 4,352 light code points, there are 2,343 safe code points. For Base2048, since I felt it improved the character repertoire, I further ruled out the four "Symbol" General Categories, leaving 2,212 safe code points, and the "Letter, Modifier" General Category, leaving 2,176 safe code points. From these I chose 211 = 2048 code points for the primary repertoire and 23 = 8 additional code points to use as padding characters. 176 | 177 | ## License 178 | 179 | MIT 180 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "base2048", 3 | "version": "2.0.3", 4 | "description": "Binary encoding optimised for Twitter", 5 | "homepage": "https://github.com/qntm/base2048", 6 | "repository": { 7 | "type": "git", 8 | "url": "git://github.com/qntm/base2048.git" 9 | }, 10 | "type": "module", 11 | "main": "src/index.js", 12 | "types": "typings/index.d.ts", 13 | "scripts": { 14 | "mocha": "c8 --100 mocha", 15 | "standard": "standard", 16 | "tag": "node -e \"require('child_process').spawn('git', ['tag', `v${require('./package.json').version}`], { stdio: 'inherit' })\"", 17 | "tag-and-publish": "npm run tag && git push --tags && npm publish && npm version patch --no-git-tag-version && git add . && git commit -m \"Bump patch\" && git push", 18 | "test": "npm run standard && npm run mocha" 19 | }, 20 | "keywords": [ 21 | "encoding", 22 | "binary", 23 | "twitter", 24 | "unicode" 25 | ], 26 | "author": "qntm", 27 | "license": "MIT", 28 | "devDependencies": { 29 | "c8": "^10.1.2", 30 | "mocha": "^11.0.0", 31 | "safe-code-point": "^3.0.0", 32 | "standard": "^17.0.0" 33 | }, 34 | "files": [ 35 | "src", 36 | "typings" 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /scripts/gen.js: -------------------------------------------------------------------------------- 1 | // The purpose of this module is to generate 2,048 + 8 = 2,056 "safe" 2 | // Unicode code points suitable for use in the Base2048 3 | // encoding. It makes use of the package `safe-code-point` 4 | // . 5 | 6 | // This program was run once, with the successful results immediately 7 | // transplanted into `base2048` for use. It is kept here for historical reasons 8 | // and to ensure reproducibility. 9 | 10 | import SafeCodePoint from 'safe-code-point' 11 | 12 | const BITS_PER_CHAR = 11 // Base2048 is an 11-bit encoding 13 | const BITS_PER_BYTE = 8 14 | 15 | export const genPromise = SafeCodePoint('10.0.0').then(safeCodePoint => { 16 | const repertoireSizes = [] 17 | for (let i = BITS_PER_CHAR; i > 0; i -= BITS_PER_BYTE) { 18 | repertoireSizes.unshift(1 << i) 19 | } 20 | 21 | let codePoint = 0 22 | const full = repertoireSizes 23 | .map(repertoireSize => { 24 | const codePoints = [] 25 | while (codePoints.length < repertoireSize) { 26 | if (safeCodePoint(codePoint)) { 27 | if ( 28 | safeCodePoint(codePoint) && 29 | !safeCodePoint.generalCategory(codePoint).startsWith('S') && 30 | safeCodePoint.generalCategory(codePoint) !== 'Lm' 31 | ) { 32 | codePoints.push(codePoint) 33 | } 34 | } 35 | 36 | codePoint++ 37 | } 38 | return codePoints 39 | }) 40 | .map(codePoints => codePoints.map(x => String.fromCodePoint(x)).join('')) 41 | .reverse() 42 | 43 | // Just have the first and last character in each contiguous range 44 | const compressed = full.map(input => { 45 | const comp2 = [] 46 | const chrs = [...input] 47 | chrs.forEach(chr => { 48 | if ( 49 | comp2.length - 1 in comp2 && 50 | comp2[comp2.length - 1].codePointAt(0) + 1 === chr.codePointAt(0) 51 | ) { 52 | // Extend the existing run 53 | comp2[comp2.length - 1] = chr 54 | } else { 55 | // Start a new run (zero length at first) 56 | comp2.push(chr, chr) 57 | } 58 | }) 59 | return comp2.join('') 60 | }) 61 | 62 | const wordBreakable = { 63 | no: [], 64 | maybe: [] 65 | } 66 | for (let codePoint = 0; codePoint < 0x1100; codePoint++) { 67 | if (safeCodePoint(codePoint)) { 68 | const wordBreak = safeCodePoint.wordBreak(codePoint) 69 | if (wordBreak === 'Numeric' || wordBreak === 'ALetter' || wordBreak === 'Hebrew_Letter') { 70 | wordBreakable.no.push(codePoint) 71 | } else { 72 | wordBreakable.maybe.push(codePoint) 73 | } 74 | } 75 | } 76 | 77 | return { full, compressed, wordBreakable } 78 | }) 79 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | Base2048 is a binary-to-text encoding optimised for transmitting data 3 | through Twitter. 4 | */ 5 | 6 | // Z is a number, usually a uint11 but sometimes a uint3 7 | 8 | const BITS_PER_CHAR = 11 // Base2048 is an 11-bit encoding 9 | const BITS_PER_BYTE = 8 10 | 11 | // Compressed representation of inclusive ranges of characters used in this encoding. 12 | const pairStrings = [ 13 | '89AZazÆÆÐÐØØÞßææððøøþþĐđĦħııĸĸŁłŊŋŒœŦŧƀƟƢƮƱǃǝǝǤǥǶǷȜȝȠȥȴʯͰͳͶͷͻͽͿͿΑΡΣΩαωϏϏϗϯϳϳϷϸϺϿЂЂЄІЈЋЏИКикяђђєіјћџѵѸҁҊӀӃӏӔӕӘәӠӡӨөӶӷӺԯԱՖաֆאתװײؠءاؿفي٠٩ٮٯٱٴٹڿہہۃےەەۮۼۿۿܐܐܒܯݍޥޱޱ߀ߪࠀࠕࡀࡘࡠࡪࢠࢴࢶࢽऄनपरलळवहऽऽॐॐॠॡ०९ॲঀঅঌএঐওনপরললশহঽঽৎৎৠৡ০ৱ৴৹ৼৼਅਊਏਐਓਨਪਰਲਲਵਵਸਹੜੜ੦੯ੲੴઅઍએઑઓનપરલળવહઽઽૐૐૠૡ૦૯ૹૹଅଌଏଐଓନପରଲଳଵହଽଽୟୡ୦୯ୱ୷ஃஃஅஊஎஐஒஓககஙசஜஜஞடணதநபமஹௐௐ௦௲అఌఎఐఒనపహఽఽౘౚౠౡ౦౯౸౾ಀಀಅಌಎಐಒನಪಳವಹಽಽೞೞೠೡ೦೯ೱೲഅഌഎഐഒഺഽഽൎൎൔൖ൘ൡ൦൸ൺൿඅඖකනඳරලලවෆ෦෯กะาาเๅ๐๙ກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອະາາຽຽເໄ໐໙ໞໟༀༀ༠༳ཀགངཇཉཌཎདནབམཛཝཨཪཬྈྌကဥဧဪဿ၉ၐၕ', 14 | '07' 15 | ] 16 | 17 | const lookupE = {} 18 | const lookupD = {} 19 | pairStrings.forEach((pairString, r) => { 20 | // Decompression 21 | const encodeRepertoire = [] 22 | pairString.match(/../gu).forEach(pair => { 23 | const first = pair.codePointAt(0) 24 | const last = pair.codePointAt(1) 25 | for (let codePoint = first; codePoint <= last; codePoint++) { 26 | encodeRepertoire.push(String.fromCodePoint(codePoint)) 27 | } 28 | }) 29 | 30 | const numZBits = BITS_PER_CHAR - BITS_PER_BYTE * r // 0 -> 11, 1 -> 3 31 | lookupE[numZBits] = encodeRepertoire 32 | encodeRepertoire.forEach((chr, z) => { 33 | lookupD[chr] = [numZBits, z] 34 | }) 35 | }) 36 | 37 | export const encode = uint8Array => { 38 | const length = uint8Array.length 39 | 40 | let str = '' 41 | let z = 0 42 | let numZBits = 0 43 | 44 | for (let i = 0; i < length; i++) { 45 | const uint8 = uint8Array[i] 46 | 47 | // Take most significant bit first 48 | for (let j = BITS_PER_BYTE - 1; j >= 0; j--) { 49 | const bit = (uint8 >> j) & 1 50 | 51 | z = (z << 1) + bit 52 | numZBits++ 53 | 54 | if (numZBits === BITS_PER_CHAR) { 55 | str += lookupE[numZBits][z] 56 | z = 0 57 | numZBits = 0 58 | } 59 | } 60 | } 61 | 62 | if (numZBits !== 0) { 63 | // Final bits require special treatment. 64 | 65 | // byte = bbbcccccccc, numBits = 11, padBits = 0 66 | // byte = bbcccccccc, numBits = 10, padBits = 1 67 | // byte = bcccccccc, numBits = 9, padBits = 2 68 | // byte = cccccccc, numBits = 8, padBits = 3 69 | // byte = ccccccc, numBits = 7, padBits = 4 70 | // byte = cccccc, numBits = 6, padBits = 5 71 | // byte = ccccc, numBits = 5, padBits = 6 72 | // byte = cccc, numBits = 4, padBits = 7 73 | // => Pad `byte` out to 11 bits using 1s, then encode as normal (repertoire 0) 74 | 75 | // byte = ccc, numBits = 3, padBits = 0 76 | // byte = cc, numBits = 2, padBits = 1 77 | // byte = c, numBits = 1, padBits = 2 78 | // => Pad `byte` out to 3 bits using 1s, then encode specially (repertoire 1) 79 | 80 | while (!(numZBits in lookupE)) { 81 | z = (z << 1) + 1 82 | numZBits++ 83 | } 84 | 85 | str += lookupE[numZBits][z] 86 | } 87 | 88 | return str 89 | } 90 | 91 | export const decode = str => { 92 | const length = str.length 93 | 94 | // This length is a guess. There's a chance we allocate one more byte here 95 | // than we actually need. But we can count and slice it off later 96 | const uint8Array = new Uint8Array(Math.floor(length * BITS_PER_CHAR / BITS_PER_BYTE)) 97 | let numUint8s = 0 98 | let uint8 = 0 99 | let numUint8Bits = 0 100 | 101 | for (let i = 0; i < length; i++) { 102 | const chr = str.charAt(i) 103 | 104 | if (!(chr in lookupD)) { 105 | throw new Error(`Unrecognised Base2048 character: ${chr}`) 106 | } 107 | 108 | const [numZBits, z] = lookupD[chr] 109 | 110 | if (numZBits !== BITS_PER_CHAR && i !== length - 1) { 111 | throw new Error('Secondary character found before end of input at position ' + String(i)) 112 | } 113 | 114 | // Take most significant bit first 115 | for (let j = numZBits - 1; j >= 0; j--) { 116 | const bit = (z >> j) & 1 117 | 118 | uint8 = (uint8 << 1) + bit 119 | numUint8Bits++ 120 | 121 | if (numUint8Bits === BITS_PER_BYTE) { 122 | uint8Array[numUint8s] = uint8 123 | numUint8s++ 124 | uint8 = 0 125 | numUint8Bits = 0 126 | } 127 | } 128 | } 129 | 130 | // Final padding bits! Requires special consideration! 131 | // Remember how we always pad with 1s? 132 | // Note: there could be 0 such bits, check still works though 133 | if (uint8 !== ((1 << numUint8Bits) - 1)) { 134 | throw new Error('Padding mismatch') 135 | } 136 | 137 | return new Uint8Array(uint8Array.buffer, 0, numUint8s) 138 | } 139 | -------------------------------------------------------------------------------- /test-data/bad/case-early-padding.txt: -------------------------------------------------------------------------------- 1 | ഴຜшʊ6ƌR੮HকڰƼ -------------------------------------------------------------------------------- /test-data/bad/caseDemo.txt: -------------------------------------------------------------------------------- 1 | ഴຜшʊƌR੮Hকڰ 2 | -------------------------------------------------------------------------------- /test-data/bad/every-byte.txt: -------------------------------------------------------------------------------- 1 | 8đߝđՌaʛʤƋٱӄʋGࡥԪࠁɊஜwеଣƩށญʣƿಝԚڅॠਸәϦڽࢰٱȥɦചઆюమԽݱౠ৵ဣĦҸɫǁࢷݢΖςھԳݑഴਢΚણսಭמಬॼச൛Аߣϧڍͳרഈࡊ୩૪आܔޚɼดяѱൿໄމലනဒฬడuՌࠐϦਜƿওӨХଣकࠐڗβԒರهȥঢචδҏဋՏࢦݢ੫о๖խધ൞୶൛ଚअૠڽخرคя௨ผܞߓƓ෧ƭওಉҘЧॲ௱کѵဋഢॺནર۹ຜڭخඟໃஏమʋݍस௱ฬԂޓ൮ഈཧఝʋ༱ৼґຮߓޥທߓဿཬ 2 | -------------------------------------------------------------------------------- /test-data/bad/hatetris-wr-rle.txt: -------------------------------------------------------------------------------- 1 | టɾܡØඖI8ǂటƗГWນԉƅљӄݎړߛπʜҾĦਅOͻࠈfӼQɚएOڋߛτߝЈBࢬeГࠄѾʬнʚࢬgକࡎযʤιלCڂʚࠄƔMнƷణuʛࠌѣٯØBउȽߞɾʚӼGǝKڲจߗѡයǷљaҖBɖ8౭PڴࢴuƼȠɠٮƄđࢰOڝߛĸරɋ8ࢰgܡࠄޞʤдКటɻचߟƓʠƭŁࡘđʦߟسʨȤħࠔɊߘȠљFđМҪuʛߟƔMαƸc8ʬWƓ౦ƦκࡖOʪWߘ౩8ܧటɻГWۮEȤƽҺҖƾĸɝٮƃঊaɪʧߛɟරOঊӄɚʧߟҦౘ8ƻడɺ໗ࠄДҾƥ൰ӄʊƺðĦයuஐKɚܡWԨM 2 | -------------------------------------------------------------------------------- /test-data/bad/hatetris-wr-rle2.txt: -------------------------------------------------------------------------------- 1 | ౚටลݹமȺІݿ௨ගÐݸಳටɱݹশට๐ݹஜуເঅ௧ڈໃݹ௩Οເஜ௨ಗໃܭ௨൝ܘܭۑටຜݹౚඦͲஉݣටմݹԥ൝ໃѢ௨ɊІܥࡂܯໃρಛԀໃݪরටเݹਫටঋݹछقฐݹहටܨݹసقܨݺɷඩܘѧ௦قෆऄதටฅ൫ࠑඨɑݹமΟลຍஐق༱ݚذงໃͷશජХࢭಎටȻݢமҔСݐෂඞවౘஓӺХಏமԗVݏआඖໃϠஐΟවݶѻ౾ແࡑࢲඤÐɥઅඪຯஇಈ౾ຣݪذඪϽऔƐڠÐלஜҕɐזѻڐ༥މభ೯۱ࠇࢳ 2 | -------------------------------------------------------------------------------- /test-data/bad/hatetris-wr.txt: -------------------------------------------------------------------------------- 1 | ఠսધսକսધտŁսધࡀધսફսધվધսધϟધսધનધսઝսધս൙սધխધսન୪ધսધսધ۸ધսঀ୪ધջધսધݨધսൡսધભધսધսƈսફoધչൡببսદ੨ધչધվրսભ୪ધҩϚսઞஏDսધԷ໕IધսଆߙધսઑսધջTսધԜધսકսધՋધսਇսધտTսનAધտTսవսનɄધݨધըધսઊ୪ધϯધվבսণսભൕધսધ۸ધبבսࢧսરսભൕભ୪ધջϚփƈպ୭בրս੧սণבببધNಫս९Đƈսܘ߇ƈսரwધճఔսߘսતൕઢൕઢսઢoધ٩ધלϚټધࡀଆռبվրոધبધߙટսൡսનൕൖյધݨࠁվϚۉન୪TջTվրבપտϚמઓࡀવ 2 | -------------------------------------------------------------------------------- /test-data/bad/padding-mismatch.txt: -------------------------------------------------------------------------------- 1 | ഴຜшʊȣƌRڰƼ੮Hক -------------------------------------------------------------------------------- /test-data/pairs/caseDemo.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/caseDemo.bin -------------------------------------------------------------------------------- /test-data/pairs/caseDemo.txt: -------------------------------------------------------------------------------- 1 | ഴຜшʊƌR੮HকڰƼ -------------------------------------------------------------------------------- /test-data/pairs/caseEmpty.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/caseEmpty.bin -------------------------------------------------------------------------------- /test-data/pairs/caseEmpty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/caseEmpty.txt -------------------------------------------------------------------------------- /test-data/pairs/every-byte.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/every-byte.bin -------------------------------------------------------------------------------- /test-data/pairs/every-byte.txt: -------------------------------------------------------------------------------- 1 | 8đߝđՌaʛʤƋٱӄʋGࡥԪࠁɊஜwеଣƩށญʣƿಝԚڅॠਸәϦڽࢰٱȥɦചઆюమԽݱౠ৵ဣĦҸɫǁࢷݢΖςھԳݑഴਢΚણսಭמಬॼச൛Аߣϧڍͳרഈࡊ୩૪आܔޚɼดяѱൿໄމലනဒฬడuՌࠐϦਜƿওӨХଣकࠐڗβԒರهȥঢචδҏဋՏࢦݢ੫о๖խધ൞୶൛ଚअૠڽخرคя௨ผܞߓƓ෧ƭওಉҘЧॲ௱کѵဋഢॺནર۹ຜڭخඟໃஏమʋݍस௱ฬԂޓ൮ഈཧఝʋ༱ৼґຮߓޥທߓဿཬ7 -------------------------------------------------------------------------------- /test-data/pairs/every-pair-of-bytes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/every-pair-of-bytes.bin -------------------------------------------------------------------------------- /test-data/pairs/hatetris-wr-rle.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/hatetris-wr-rle.bin -------------------------------------------------------------------------------- /test-data/pairs/hatetris-wr-rle.txt: -------------------------------------------------------------------------------- 1 | టɾܡØඖI8ǂటƗГWນԉƅљӄݎړߛπʜҾĦਅOͻࠈfӼQɚएOڋߛτߝЈBࢬeГࠄѾʬнʚࢬgକࡎযʤιלCڂʚࠄƔMнƷణuʛࠌѣٯØBउȽߞɾʚӼGǝKڲจߗѡයǷљaҖBɖ8౭PڴࢴuƼȠɠٮƄđࢰOڝߛĸරɋ8ࢰgܡࠄޞʤдКటɻचߟƓʠƭŁࡘđʦߟسʨȤħࠔɊߘȠљFđМҪuʛߟƔMαƸc8ʬWƓ౦ƦκࡖOʪWߘ౩8ܧటɻГWۮEȤƽҺҖƾĸɝٮƃঊaɪʧߛɟරOঊӄɚʧߟҦౘ8ƻడɺ໗ࠄДҾƥ൰ӄʊƺðĦයuஐKɚܡWԨMƒ -------------------------------------------------------------------------------- /test-data/pairs/hatetris-wr-rle2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/hatetris-wr-rle2.bin -------------------------------------------------------------------------------- /test-data/pairs/hatetris-wr-rle2.txt: -------------------------------------------------------------------------------- 1 | ౚටลݹமȺІݿ௨ගÐݸಳටɱݹশට๐ݹஜуເঅ௧ڈໃݹ௩Οເஜ௨ಗໃܭ௨൝ܘܭۑටຜݹౚඦͲஉݣටմݹԥ൝ໃѢ௨ɊІܥࡂܯໃρಛԀໃݪরටเݹਫටঋݹछقฐݹहටܨݹసقܨݺɷඩܘѧ௦قෆऄதටฅ൫ࠑඨɑݹமΟลຍஐق༱ݚذงໃͷશජХࢭಎටȻݢமҔСݐෂඞවౘஓӺХಏமԗVݏआඖໃϠஐΟවݶѻ౾ແࡑࢲඤÐɥઅඪຯஇಈ౾ຣݪذඪϽऔƐڠÐלஜҕɐזѻڐ༥މభ೯۱ࠇࢳ൯ -------------------------------------------------------------------------------- /test-data/pairs/hatetris-wr.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/hatetris-wr.bin -------------------------------------------------------------------------------- /test-data/pairs/hatetris-wr.txt: -------------------------------------------------------------------------------- 1 | ఠսધսକսધտŁսધࡀધսફսધվધսધϟધսધનધսઝսધս൙սધխધսન୪ધսધսધ۸ધսঀ୪ધջધսધݨધսൡսધભધսધսƈսફoધչൡببսદ੨ધչધվրսભ୪ધҩϚսઞஏDսધԷ໕IધսଆߙધսઑսધջTսધԜધսકսધՋધսਇսધտTսનAધտTսవսનɄધݨધըધսઊ୪ધϯધվבսণսભൕધսધ۸ધبבսࢧսરսભൕભ୪ધջϚփƈպ୭בրս੧սণבببધNಫս९Đƈսܘ߇ƈսரwધճఔսߘսતൕઢൕઢսઢoધ٩ધלϚټધࡀଆռبվրոધبધߙટսൡսનൕൖյધݨࠁվϚۉન୪TջTվրבપտϚמઓࡀવɅ -------------------------------------------------------------------------------- /test-data/pairs/lena_std.tif.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/lena_std.tif.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case0.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case0.txt: -------------------------------------------------------------------------------- 1 | F -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case1.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case1.txt: -------------------------------------------------------------------------------- 1 | N -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case10.bin: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case10.txt: -------------------------------------------------------------------------------- 1 | Ɗ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case100.bin: -------------------------------------------------------------------------------- 1 | d -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case100.txt: -------------------------------------------------------------------------------- 1 | ڙ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case101.bin: -------------------------------------------------------------------------------- 1 | e -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case101.txt: -------------------------------------------------------------------------------- 1 | ڡ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case102.bin: -------------------------------------------------------------------------------- 1 | f -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case102.txt: -------------------------------------------------------------------------------- 1 | ک -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case103.bin: -------------------------------------------------------------------------------- 1 | g -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case103.txt: -------------------------------------------------------------------------------- 1 | ڱ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case104.bin: -------------------------------------------------------------------------------- 1 | h -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case104.txt: -------------------------------------------------------------------------------- 1 | ڹ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case105.bin: -------------------------------------------------------------------------------- 1 | i -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case105.txt: -------------------------------------------------------------------------------- 1 | ۃ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case106.bin: -------------------------------------------------------------------------------- 1 | j -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case106.txt: -------------------------------------------------------------------------------- 1 | ۋ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case107.bin: -------------------------------------------------------------------------------- 1 | k -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case107.txt: -------------------------------------------------------------------------------- 1 | ە -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case108.bin: -------------------------------------------------------------------------------- 1 | l -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case108.txt: -------------------------------------------------------------------------------- 1 | ۵ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case109.bin: -------------------------------------------------------------------------------- 1 | m -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case109.txt: -------------------------------------------------------------------------------- 1 | ۿ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case11.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case11.txt: -------------------------------------------------------------------------------- 1 | ƒ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case110.bin: -------------------------------------------------------------------------------- 1 | n -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case110.txt: -------------------------------------------------------------------------------- 1 | ܘ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case111.bin: -------------------------------------------------------------------------------- 1 | o -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case111.txt: -------------------------------------------------------------------------------- 1 | ܠ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case112.bin: -------------------------------------------------------------------------------- 1 | p -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case112.txt: -------------------------------------------------------------------------------- 1 | ܨ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case113.bin: -------------------------------------------------------------------------------- 1 | q -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case113.txt: -------------------------------------------------------------------------------- 1 | ݍ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case114.bin: -------------------------------------------------------------------------------- 1 | r -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case114.txt: -------------------------------------------------------------------------------- 1 | ݕ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case115.bin: -------------------------------------------------------------------------------- 1 | s -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case115.txt: -------------------------------------------------------------------------------- 1 | ݝ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case116.bin: -------------------------------------------------------------------------------- 1 | t -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case116.txt: -------------------------------------------------------------------------------- 1 | ݥ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case117.bin: -------------------------------------------------------------------------------- 1 | u -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case117.txt: -------------------------------------------------------------------------------- 1 | ݭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case118.bin: -------------------------------------------------------------------------------- 1 | v -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case118.txt: -------------------------------------------------------------------------------- 1 | ݵ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case119.bin: -------------------------------------------------------------------------------- 1 | w -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case119.txt: -------------------------------------------------------------------------------- 1 | ݽ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case12.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case12.txt: -------------------------------------------------------------------------------- 1 | ƚ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case120.bin: -------------------------------------------------------------------------------- 1 | x -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case120.txt: -------------------------------------------------------------------------------- 1 | ޅ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case121.bin: -------------------------------------------------------------------------------- 1 | y -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case121.txt: -------------------------------------------------------------------------------- 1 | ލ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case122.bin: -------------------------------------------------------------------------------- 1 | z -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case122.txt: -------------------------------------------------------------------------------- 1 | ޕ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case123.bin: -------------------------------------------------------------------------------- 1 | { -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case123.txt: -------------------------------------------------------------------------------- 1 | ޝ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case124.bin: -------------------------------------------------------------------------------- 1 | | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case124.txt: -------------------------------------------------------------------------------- 1 | ޥ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case125.bin: -------------------------------------------------------------------------------- 1 | } -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case125.txt: -------------------------------------------------------------------------------- 1 | ߆ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case126.bin: -------------------------------------------------------------------------------- 1 | ~ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case126.txt: -------------------------------------------------------------------------------- 1 | ߎ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case127.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case127.txt: -------------------------------------------------------------------------------- 1 | ߖ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case128.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case128.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case128.txt: -------------------------------------------------------------------------------- 1 | ߞ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case129.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case129.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case129.txt: -------------------------------------------------------------------------------- 1 | ߦ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case13.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case13.txt: -------------------------------------------------------------------------------- 1 | Ƥ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case130.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case130.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case130.txt: -------------------------------------------------------------------------------- 1 | ࠃ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case131.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case131.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case131.txt: -------------------------------------------------------------------------------- 1 | ࠋ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case132.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case132.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case132.txt: -------------------------------------------------------------------------------- 1 | ࠓ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case133.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case133.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case133.txt: -------------------------------------------------------------------------------- 1 | ࡅ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case134.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case134.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case134.txt: -------------------------------------------------------------------------------- 1 | ࡍ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case135.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case135.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case135.txt: -------------------------------------------------------------------------------- 1 | ࡕ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case136.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case136.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case136.txt: -------------------------------------------------------------------------------- 1 | ࡤ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case137.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case137.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case137.txt: -------------------------------------------------------------------------------- 1 | ࢡ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case138.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case138.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case138.txt: -------------------------------------------------------------------------------- 1 | ࢩ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case139.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case139.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case139.txt: -------------------------------------------------------------------------------- 1 | ࢱ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case14.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case14.txt: -------------------------------------------------------------------------------- 1 | Ƭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case140.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case140.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case140.txt: -------------------------------------------------------------------------------- 1 | ࢺ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case141.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case141.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case141.txt: -------------------------------------------------------------------------------- 1 | ई -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case142.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case142.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case142.txt: -------------------------------------------------------------------------------- 1 | ऐ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case143.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case143.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case143.txt: -------------------------------------------------------------------------------- 1 | घ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case144.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case144.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case144.txt: -------------------------------------------------------------------------------- 1 | ठ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case145.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case145.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case145.txt: -------------------------------------------------------------------------------- 1 | न -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case146.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case146.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case146.txt: -------------------------------------------------------------------------------- 1 | ल -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case147.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case147.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case147.txt: -------------------------------------------------------------------------------- 1 | ॐ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case148.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case148.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case148.txt: -------------------------------------------------------------------------------- 1 | ५ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case149.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case149.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case149.txt: -------------------------------------------------------------------------------- 1 | ॵ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case15.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case15.txt: -------------------------------------------------------------------------------- 1 | ƶ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case150.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case150.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case150.txt: -------------------------------------------------------------------------------- 1 | ॽ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case151.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case151.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case151.txt: -------------------------------------------------------------------------------- 1 | উ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case152.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case152.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case152.txt: -------------------------------------------------------------------------------- 1 | ক -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case153.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case153.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case153.txt: -------------------------------------------------------------------------------- 1 | ঝ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case154.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case154.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case154.txt: -------------------------------------------------------------------------------- 1 | থ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case155.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case155.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case155.txt: -------------------------------------------------------------------------------- 1 | ম -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case156.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case156.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case156.txt: -------------------------------------------------------------------------------- 1 | ঽ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case157.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case157.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case157.txt: -------------------------------------------------------------------------------- 1 | ৪ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case158.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case158.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case158.txt: -------------------------------------------------------------------------------- 1 | ৴ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case159.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case159.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case159.txt: -------------------------------------------------------------------------------- 1 | ਆ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case16.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case16.txt: -------------------------------------------------------------------------------- 1 | ƾ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case160.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case160.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case160.txt: -------------------------------------------------------------------------------- 1 | ਔ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case161.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case161.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case161.txt: -------------------------------------------------------------------------------- 1 | ਜ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case162.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case162.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case162.txt: -------------------------------------------------------------------------------- 1 | ਤ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case163.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case163.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case163.txt: -------------------------------------------------------------------------------- 1 | ਭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case164.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case164.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case164.txt: -------------------------------------------------------------------------------- 1 | ੜ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case165.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case165.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case165.txt: -------------------------------------------------------------------------------- 1 | ੭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case166.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case166.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case166.txt: -------------------------------------------------------------------------------- 1 | ઇ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case167.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case167.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case167.txt: -------------------------------------------------------------------------------- 1 | ઐ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case168.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case168.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case168.txt: -------------------------------------------------------------------------------- 1 | ઙ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case169.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case169.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case169.txt: -------------------------------------------------------------------------------- 1 | ડ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case17.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case17.txt: -------------------------------------------------------------------------------- 1 | ǥ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case170.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case170.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case170.txt: -------------------------------------------------------------------------------- 1 | પ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case171.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case171.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case171.txt: -------------------------------------------------------------------------------- 1 | ળ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case172.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case172.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case172.txt: -------------------------------------------------------------------------------- 1 | ૠ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case173.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case173.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case173.txt: -------------------------------------------------------------------------------- 1 | ૬ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case174.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case174.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case174.txt: -------------------------------------------------------------------------------- 1 | ଈ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case175.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case175.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case175.txt: -------------------------------------------------------------------------------- 1 | ଔ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case176.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case176.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case176.txt: -------------------------------------------------------------------------------- 1 | ଜ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case177.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case177.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case177.txt: -------------------------------------------------------------------------------- 1 | ତ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case178.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case178.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case178.txt: -------------------------------------------------------------------------------- 1 | ଭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case179.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case179.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case179.txt: -------------------------------------------------------------------------------- 1 | ଷ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case18.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case18.txt: -------------------------------------------------------------------------------- 1 | ȣ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case180.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case180.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case180.txt: -------------------------------------------------------------------------------- 1 | ୧ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case181.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case181.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case181.txt: -------------------------------------------------------------------------------- 1 | ୯ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case182.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case182.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case182.txt: -------------------------------------------------------------------------------- 1 | ஃ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case183.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case183.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case183.txt: -------------------------------------------------------------------------------- 1 | ஏ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case184.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case184.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case184.txt: -------------------------------------------------------------------------------- 1 | ஞ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case185.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case185.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case185.txt: -------------------------------------------------------------------------------- 1 | ய -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case186.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case186.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case186.txt: -------------------------------------------------------------------------------- 1 | ஷ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case187.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case187.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case187.txt: -------------------------------------------------------------------------------- 1 | ௪ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case188.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case188.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case188.txt: -------------------------------------------------------------------------------- 1 | ௲ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case189.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case189.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case189.txt: -------------------------------------------------------------------------------- 1 | ఌ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case19.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case19.txt: -------------------------------------------------------------------------------- 1 | ȹ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case190.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case190.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case190.txt: -------------------------------------------------------------------------------- 1 | ఖ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case191.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case191.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case191.txt: -------------------------------------------------------------------------------- 1 | ఞ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case192.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case192.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case192.txt: -------------------------------------------------------------------------------- 1 | ద -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case193.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case193.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case193.txt: -------------------------------------------------------------------------------- 1 | య -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case194.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case194.txt: -------------------------------------------------------------------------------- 1 | ష -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case195.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case195.txt: -------------------------------------------------------------------------------- 1 | ౡ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case196.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case196.txt: -------------------------------------------------------------------------------- 1 | ౭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case197.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case197.txt: -------------------------------------------------------------------------------- 1 | ౽ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case198.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case198.txt: -------------------------------------------------------------------------------- 1 | ಊ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case199.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case199.txt: -------------------------------------------------------------------------------- 1 | ಔ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case2.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case2.txt: -------------------------------------------------------------------------------- 1 | V -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case20.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case20.txt: -------------------------------------------------------------------------------- 1 | Ɂ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case200.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case200.txt: -------------------------------------------------------------------------------- 1 | ಜ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case201.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case201.txt: -------------------------------------------------------------------------------- 1 | ತ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case202.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case202.txt: -------------------------------------------------------------------------------- 1 | ಭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case203.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case203.txt: -------------------------------------------------------------------------------- 1 | ಶ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case204.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case204.txt: -------------------------------------------------------------------------------- 1 | ೦ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case205.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case205.txt: -------------------------------------------------------------------------------- 1 | ೮ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case206.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case206.txt: -------------------------------------------------------------------------------- 1 | ഉ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case207.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case207.txt: -------------------------------------------------------------------------------- 1 | ഓ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case208.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case208.txt: -------------------------------------------------------------------------------- 1 | ഛ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case209.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case209.txt: -------------------------------------------------------------------------------- 1 | ണ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case21.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case21.txt: -------------------------------------------------------------------------------- 1 | ɉ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case210.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case210.txt: -------------------------------------------------------------------------------- 1 | ഫ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case211.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case211.txt: -------------------------------------------------------------------------------- 1 | ള -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case212.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case212.txt: -------------------------------------------------------------------------------- 1 | ഽ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case213.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case213.txt: -------------------------------------------------------------------------------- 1 | ൛ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case214.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case214.txt: -------------------------------------------------------------------------------- 1 | ൧ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case215.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case215.txt: -------------------------------------------------------------------------------- 1 | ൯ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case216.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case216.txt: -------------------------------------------------------------------------------- 1 | ൷ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case217.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case217.txt: -------------------------------------------------------------------------------- 1 | අ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case218.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case218.txt: -------------------------------------------------------------------------------- 1 | ඍ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case219.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case219.txt: -------------------------------------------------------------------------------- 1 | ඕ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case22.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case22.txt: -------------------------------------------------------------------------------- 1 | ɑ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case220.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case220.txt: -------------------------------------------------------------------------------- 1 | ච -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case221.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case221.txt: -------------------------------------------------------------------------------- 1 | ඨ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case222.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case222.txt: -------------------------------------------------------------------------------- 1 | ධ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case223.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case223.txt: -------------------------------------------------------------------------------- 1 | ඹ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case224.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case224.txt: -------------------------------------------------------------------------------- 1 | හ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case225.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case225.txt: -------------------------------------------------------------------------------- 1 | ෫ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case226.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case226.txt: -------------------------------------------------------------------------------- 1 | ค -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case227.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case227.txt: -------------------------------------------------------------------------------- 1 | ฌ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case228.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case228.txt: -------------------------------------------------------------------------------- 1 | ด -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case229.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case229.txt: -------------------------------------------------------------------------------- 1 | ผ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case23.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case23.txt: -------------------------------------------------------------------------------- 1 | ə -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case230.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case230.txt: -------------------------------------------------------------------------------- 1 | ฤ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case231.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case231.txt: -------------------------------------------------------------------------------- 1 | ฬ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case232.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case232.txt: -------------------------------------------------------------------------------- 1 | โ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case233.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case233.txt: -------------------------------------------------------------------------------- 1 | ๔ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case234.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case234.txt: -------------------------------------------------------------------------------- 1 | ຄ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case235.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case235.txt: -------------------------------------------------------------------------------- 1 | ທ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case236.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case236.txt: -------------------------------------------------------------------------------- 1 | ມ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case237.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case237.txt: -------------------------------------------------------------------------------- 1 | ຮ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case238.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case238.txt: -------------------------------------------------------------------------------- 1 | ໃ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case239.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case239.txt: -------------------------------------------------------------------------------- 1 | ໖ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case24.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case24.txt: -------------------------------------------------------------------------------- 1 | ɡ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case240.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case240.txt: -------------------------------------------------------------------------------- 1 | ༡ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case241.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case241.txt: -------------------------------------------------------------------------------- 1 | ༩ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case242.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case242.txt: -------------------------------------------------------------------------------- 1 | ༱ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case243.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case243.txt: -------------------------------------------------------------------------------- 1 | ཆ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case244.bin: -------------------------------------------------------------------------------- 1 | � -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case244.txt: -------------------------------------------------------------------------------- 1 | ཐ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case245.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case245.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case245.txt: -------------------------------------------------------------------------------- 1 | ཚ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case246.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case246.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case246.txt: -------------------------------------------------------------------------------- 1 | ལ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case247.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case247.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case247.txt: -------------------------------------------------------------------------------- 1 | ཬ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case248.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case248.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case248.txt: -------------------------------------------------------------------------------- 1 | ဂ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case249.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case249.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case249.txt: -------------------------------------------------------------------------------- 1 | ည -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case25.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case25.txt: -------------------------------------------------------------------------------- 1 | ɩ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case250.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case250.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case250.txt: -------------------------------------------------------------------------------- 1 | ဒ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case251.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case251.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case251.txt: -------------------------------------------------------------------------------- 1 | ယ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case252.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case252.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case252.txt: -------------------------------------------------------------------------------- 1 | ဢ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case253.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case253.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case253.txt: -------------------------------------------------------------------------------- 1 | ဿ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case254.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case254.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case254.txt: -------------------------------------------------------------------------------- 1 | ၇ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case255.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qntm/base2048/b719ffce7c23b8fab03e917894db483f7571a0b4/test-data/pairs/single-bytes/case255.bin -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case255.txt: -------------------------------------------------------------------------------- 1 | ၕ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case26.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case26.txt: -------------------------------------------------------------------------------- 1 | ɱ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case27.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case27.txt: -------------------------------------------------------------------------------- 1 | ɹ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case28.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case28.txt: -------------------------------------------------------------------------------- 1 | ʁ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case29.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case29.txt: -------------------------------------------------------------------------------- 1 | ʉ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case3.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case3.txt: -------------------------------------------------------------------------------- 1 | d -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case30.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case30.txt: -------------------------------------------------------------------------------- 1 | ʑ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case31.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case31.txt: -------------------------------------------------------------------------------- 1 | ʙ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case32.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case32.txt: -------------------------------------------------------------------------------- 1 | ʡ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case33.bin: -------------------------------------------------------------------------------- 1 | ! -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case33.txt: -------------------------------------------------------------------------------- 1 | ʩ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case34.bin: -------------------------------------------------------------------------------- 1 | " -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case34.txt: -------------------------------------------------------------------------------- 1 | ͱ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case35.bin: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case35.txt: -------------------------------------------------------------------------------- 1 | Ϳ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case36.bin: -------------------------------------------------------------------------------- 1 | $ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case36.txt: -------------------------------------------------------------------------------- 1 | Θ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case37.bin: -------------------------------------------------------------------------------- 1 | % -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case37.txt: -------------------------------------------------------------------------------- 1 | Π -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case38.bin: -------------------------------------------------------------------------------- 1 | & -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case38.txt: -------------------------------------------------------------------------------- 1 | Ω -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case39.bin: -------------------------------------------------------------------------------- 1 | ' -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case39.txt: -------------------------------------------------------------------------------- 1 | θ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case4.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case4.txt: -------------------------------------------------------------------------------- 1 | l -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case40.bin: -------------------------------------------------------------------------------- 1 | ( -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case40.txt: -------------------------------------------------------------------------------- 1 | π -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case41.bin: -------------------------------------------------------------------------------- 1 | ) -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case41.txt: -------------------------------------------------------------------------------- 1 | ψ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case42.bin: -------------------------------------------------------------------------------- 1 | * -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case42.txt: -------------------------------------------------------------------------------- 1 | Ϝ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case43.bin: -------------------------------------------------------------------------------- 1 | + -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case43.txt: -------------------------------------------------------------------------------- 1 | Ϥ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case44.bin: -------------------------------------------------------------------------------- 1 | , -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case44.txt: -------------------------------------------------------------------------------- 1 | Ϭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case45.bin: -------------------------------------------------------------------------------- 1 | - -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case45.txt: -------------------------------------------------------------------------------- 1 | ϻ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case46.bin: -------------------------------------------------------------------------------- 1 | . -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case46.txt: -------------------------------------------------------------------------------- 1 | І -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case47.bin: -------------------------------------------------------------------------------- 1 | / -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case47.txt: -------------------------------------------------------------------------------- 1 | В -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case48.bin: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case48.txt: -------------------------------------------------------------------------------- 1 | Л -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case49.bin: -------------------------------------------------------------------------------- 1 | 1 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case49.txt: -------------------------------------------------------------------------------- 1 | У -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case5.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case5.txt: -------------------------------------------------------------------------------- 1 | t -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case50.bin: -------------------------------------------------------------------------------- 1 | 2 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case50.txt: -------------------------------------------------------------------------------- 1 | Ы -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case51.bin: -------------------------------------------------------------------------------- 1 | 3 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case51.txt: -------------------------------------------------------------------------------- 1 | г -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case52.bin: -------------------------------------------------------------------------------- 1 | 4 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case52.txt: -------------------------------------------------------------------------------- 1 | м -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case53.bin: -------------------------------------------------------------------------------- 1 | 5 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case53.txt: -------------------------------------------------------------------------------- 1 | ф -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case54.bin: -------------------------------------------------------------------------------- 1 | 6 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case54.txt: -------------------------------------------------------------------------------- 1 | ь -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case55.bin: -------------------------------------------------------------------------------- 1 | 7 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case55.txt: -------------------------------------------------------------------------------- 1 | ј -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case56.bin: -------------------------------------------------------------------------------- 1 | 8 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case56.txt: -------------------------------------------------------------------------------- 1 | ѣ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case57.bin: -------------------------------------------------------------------------------- 1 | 9 -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case57.txt: -------------------------------------------------------------------------------- 1 | ѫ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case58.bin: -------------------------------------------------------------------------------- 1 | : -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case58.txt: -------------------------------------------------------------------------------- 1 | ѳ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case59.bin: -------------------------------------------------------------------------------- 1 | ; -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case59.txt: -------------------------------------------------------------------------------- 1 | ѽ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case6.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case6.txt: -------------------------------------------------------------------------------- 1 | Ð -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case60.bin: -------------------------------------------------------------------------------- 1 | < -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case60.txt: -------------------------------------------------------------------------------- 1 | ҍ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case61.bin: -------------------------------------------------------------------------------- 1 | = -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case61.txt: -------------------------------------------------------------------------------- 1 | ҕ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case62.bin: -------------------------------------------------------------------------------- 1 | > -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case62.txt: -------------------------------------------------------------------------------- 1 | ҝ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case63.bin: -------------------------------------------------------------------------------- 1 | ? -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case63.txt: -------------------------------------------------------------------------------- 1 | ҥ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case64.bin: -------------------------------------------------------------------------------- 1 | @ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case64.txt: -------------------------------------------------------------------------------- 1 | ҭ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case65.bin: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case65.txt: -------------------------------------------------------------------------------- 1 | ҵ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case66.bin: -------------------------------------------------------------------------------- 1 | B -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case66.txt: -------------------------------------------------------------------------------- 1 | ҽ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case67.bin: -------------------------------------------------------------------------------- 1 | C -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case67.txt: -------------------------------------------------------------------------------- 1 | Ӈ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case68.bin: -------------------------------------------------------------------------------- 1 | D -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case68.txt: -------------------------------------------------------------------------------- 1 | ӏ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case69.bin: -------------------------------------------------------------------------------- 1 | E -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case69.txt: -------------------------------------------------------------------------------- 1 | ө -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case7.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case7.txt: -------------------------------------------------------------------------------- 1 | Đ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case70.bin: -------------------------------------------------------------------------------- 1 | F -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case70.txt: -------------------------------------------------------------------------------- 1 | ӿ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case71.bin: -------------------------------------------------------------------------------- 1 | G -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case71.txt: -------------------------------------------------------------------------------- 1 | ԇ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case72.bin: -------------------------------------------------------------------------------- 1 | H -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case72.txt: -------------------------------------------------------------------------------- 1 | ԏ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case73.bin: -------------------------------------------------------------------------------- 1 | I -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case73.txt: -------------------------------------------------------------------------------- 1 | ԗ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case74.bin: -------------------------------------------------------------------------------- 1 | J -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case74.txt: -------------------------------------------------------------------------------- 1 | ԟ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case75.bin: -------------------------------------------------------------------------------- 1 | K -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case75.txt: -------------------------------------------------------------------------------- 1 | ԧ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case76.bin: -------------------------------------------------------------------------------- 1 | L -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case76.txt: -------------------------------------------------------------------------------- 1 | ԯ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case77.bin: -------------------------------------------------------------------------------- 1 | M -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case77.txt: -------------------------------------------------------------------------------- 1 | Ը -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case78.bin: -------------------------------------------------------------------------------- 1 | N -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case78.txt: -------------------------------------------------------------------------------- 1 | Հ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case79.bin: -------------------------------------------------------------------------------- 1 | O -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case79.txt: -------------------------------------------------------------------------------- 1 | Ո -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case8.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case8.txt: -------------------------------------------------------------------------------- 1 | Ŋ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case80.bin: -------------------------------------------------------------------------------- 1 | P -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case80.txt: -------------------------------------------------------------------------------- 1 | Ր -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case81.bin: -------------------------------------------------------------------------------- 1 | Q -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case81.txt: -------------------------------------------------------------------------------- 1 | բ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case82.bin: -------------------------------------------------------------------------------- 1 | R -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case82.txt: -------------------------------------------------------------------------------- 1 | ժ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case83.bin: -------------------------------------------------------------------------------- 1 | S -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case83.txt: -------------------------------------------------------------------------------- 1 | ղ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case84.bin: -------------------------------------------------------------------------------- 1 | T -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case84.txt: -------------------------------------------------------------------------------- 1 | պ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case85.bin: -------------------------------------------------------------------------------- 1 | U -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case85.txt: -------------------------------------------------------------------------------- 1 | ւ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case86.bin: -------------------------------------------------------------------------------- 1 | V -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case86.txt: -------------------------------------------------------------------------------- 1 | ד -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case87.bin: -------------------------------------------------------------------------------- 1 | W -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case87.txt: -------------------------------------------------------------------------------- 1 | כ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case88.bin: -------------------------------------------------------------------------------- 1 | X -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case88.txt: -------------------------------------------------------------------------------- 1 | ף -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case89.bin: -------------------------------------------------------------------------------- 1 | Y -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case89.txt: -------------------------------------------------------------------------------- 1 | װ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case9.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case9.txt: -------------------------------------------------------------------------------- 1 | Ƃ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case90.bin: -------------------------------------------------------------------------------- 1 | Z -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case90.txt: -------------------------------------------------------------------------------- 1 | ت -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case91.bin: -------------------------------------------------------------------------------- 1 | [ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case91.txt: -------------------------------------------------------------------------------- 1 | ز -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case92.bin: -------------------------------------------------------------------------------- 1 | \ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case92.txt: -------------------------------------------------------------------------------- 1 | غ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case93.bin: -------------------------------------------------------------------------------- 1 | ] -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case93.txt: -------------------------------------------------------------------------------- 1 | ك -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case94.bin: -------------------------------------------------------------------------------- 1 | ^ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case94.txt: -------------------------------------------------------------------------------- 1 | ٠ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case95.bin: -------------------------------------------------------------------------------- 1 | _ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case95.txt: -------------------------------------------------------------------------------- 1 | ٨ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case96.bin: -------------------------------------------------------------------------------- 1 | ` -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case96.txt: -------------------------------------------------------------------------------- 1 | ٹ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case97.bin: -------------------------------------------------------------------------------- 1 | a -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case97.txt: -------------------------------------------------------------------------------- 1 | ځ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case98.bin: -------------------------------------------------------------------------------- 1 | b -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case98.txt: -------------------------------------------------------------------------------- 1 | ډ -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case99.bin: -------------------------------------------------------------------------------- 1 | c -------------------------------------------------------------------------------- /test-data/pairs/single-bytes/case99.txt: -------------------------------------------------------------------------------- 1 | ڑ -------------------------------------------------------------------------------- /test/gen.spec.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import assert from 'assert' 4 | 5 | import { genPromise } from '../scripts/gen.js' 6 | 7 | describe('gen', () => { 8 | let gen 9 | before(function () { 10 | this.timeout(5000) 11 | return genPromise.then(resolved => { 12 | gen = resolved 13 | }) 14 | }) 15 | 16 | it('generates the correct repertoire offsets', () => { 17 | assert.deepStrictEqual(gen.full, [ 18 | '89ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÆÐØÞßæðøþĐđĦħıĸŁłŊŋŒœŦŧƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƢƣƤƥƦƧƨƩƪƫƬƭƮƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃǝǤǥǶǷȜȝȠȡȢȣȤȥȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯͰͱͲͳͶͷͻͼͽͿΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρςστυφχψωϏϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϳϷϸϺϻϼϽϾϿЂЄЅІЈЉЊЋЏАБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзиклмнопрстуфхцчшщъыьэюяђєѕіјљњћџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѸѹѺѻѼѽѾѿҀҁҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӃӄӅӆӇӈӉӊӋӌӍӎӏӔӕӘәӠӡӨөӶӷӺӻӼӽӾӿԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦԧԨԩԪԫԬԭԮԯԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆאבגדהוזחטיךכלםמןנסעףפץצקרשתװױײؠءابةتثجحخدذرزسشصضطظعغػؼؽؾؿفقكلمنهوىي٠١٢٣٤٥٦٧٨٩ٮٯٱٲٳٴٹٺٻټٽپٿڀځڂڃڄڅچڇڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨکڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿہۃۄۅۆۇۈۉۊۋیۍێۏېۑےەۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼۿܐܒܓܔܕܖܗܘܙܚܛܜܝܞܟܠܡܢܣܤܥܦܧܨܩܪܫܬܭܮܯݍݎݏݐݑݒݓݔݕݖݗݘݙݚݛݜݝݞݟݠݡݢݣݤݥݦݧݨݩݪݫݬݭݮݯݰݱݲݳݴݵݶݷݸݹݺݻݼݽݾݿހށނރބޅކއވމފދތލގޏސޑޒޓޔޕޖޗޘޙޚޛޜޝޞޟޠޡޢޣޤޥޱ߀߁߂߃߄߅߆߇߈߉ߊߋߌߍߎߏߐߑߒߓߔߕߖߗߘߙߚߛߜߝߞߟߠߡߢߣߤߥߦߧߨߩߪࠀࠁࠂࠃࠄࠅࠆࠇࠈࠉࠊࠋࠌࠍࠎࠏࠐࠑࠒࠓࠔࠕࡀࡁࡂࡃࡄࡅࡆࡇࡈࡉࡊࡋࡌࡍࡎࡏࡐࡑࡒࡓࡔࡕࡖࡗࡘࡠࡡࡢࡣࡤࡥࡦࡧࡨࡩࡪࢠࢡࢢࢣࢤࢥࢦࢧࢨࢩࢪࢫࢬࢭࢮࢯࢰࢱࢲࢳࢴࢶࢷࢸࢹࢺࢻࢼࢽऄअआइईउऊऋऌऍऎएऐऑऒओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहऽॐॠॡ०१२३४५६७८९ॲॳॴॵॶॷॸॹॺॻॼॽॾॿঀঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহঽৎৠৡ০১২৩৪৫৬৭৮৯ৰৱ৴৵৶৷৸৹ৼਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸਹੜ੦੧੨੩੪੫੬੭੮੯ੲੳੴઅઆઇઈઉઊઋઌઍએઐઑઓઔકખગઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલળવશષસહઽૐૠૡ૦૧૨૩૪૫૬૭૮૯ૹଅଆଇଈଉଊଋଌଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଳଵଶଷସହଽୟୠୡ୦୧୨୩୪୫୬୭୮୯ୱ୲୳୴୵୶୷ஃஅஆஇஈஉஊஎஏஐஒஓகஙசஜஞடணதநனபமயரறலளழவஶஷஸஹௐ௦௧௨௩௪௫௬௭௮௯௰௱௲అఆఇఈఉఊఋఌఎఏఐఒఓఔకఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళఴవశషసహఽౘౙౚౠౡ౦౧౨౩౪౫౬౭౮౯౸౹౺౻౼౽౾ಀಅಆಇಈಉಊಋಌಎಏಐಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಱಲಳವಶಷಸಹಽೞೠೡ೦೧೨೩೪೫೬೭೮೯ೱೲഅആഇഈഉഊഋഌഎഏഐഒഓഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനഩപഫബഭമയരറലളഴവശഷസഹഺഽൎൔൕൖ൘൙൚൛൜൝൞ൟൠൡ൦൧൨൩൪൫൬൭൮൯൰൱൲൳൴൵൶൷൸ൺൻർൽൾൿඅආඇඈඉඊඋඌඍඎඏඐඑඒඓඔඕඖකඛගඝඞඟචඡජඣඤඥඦටඨඩඪණඬතථදධනඳපඵබභමඹයරලවශෂසහළෆ෦෧෨෩෪෫෬෭෮෯กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะาเแโใไๅ๐๑๒๓๔๕๖๗๘๙ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯະາຽເແໂໃໄ໐໑໒໓໔໕໖໗໘໙ໞໟༀ༠༡༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳ཀཁགངཅཆཇཉཊཋཌཎཏཐདནཔཕབམཙཚཛཝཞཟའཡརལཤཥསཧཨཪཫཬྈྉྊྋྌကခဂဃငစဆဇဈဉညဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝသဟဠအဢဣဤဥဧဨဩဪဿ၀၁၂၃၄၅၆၇၈၉ၐၑၒၓၔၕ', 19 | '01234567' 20 | ]) 21 | }) 22 | 23 | it('compresses', () => { 24 | assert.deepStrictEqual(gen.compressed, [ 25 | '89AZazÆÆÐÐØØÞßææððøøþþĐđĦħııĸĸŁłŊŋŒœŦŧƀƟƢƮƱǃǝǝǤǥǶǷȜȝȠȥȴʯͰͳͶͷͻͽͿͿΑΡΣΩαωϏϏϗϯϳϳϷϸϺϿЂЂЄІЈЋЏИКикяђђєіјћџѵѸҁҊӀӃӏӔӕӘәӠӡӨөӶӷӺԯԱՖաֆאתװײؠءاؿفي٠٩ٮٯٱٴٹڿہہۃےەەۮۼۿۿܐܐܒܯݍޥޱޱ߀ߪࠀࠕࡀࡘࡠࡪࢠࢴࢶࢽऄनपरलळवहऽऽॐॐॠॡ०९ॲঀঅঌএঐওনপরললশহঽঽৎৎৠৡ০ৱ৴৹ৼৼਅਊਏਐਓਨਪਰਲਲਵਵਸਹੜੜ੦੯ੲੴઅઍએઑઓનપરલળવહઽઽૐૐૠૡ૦૯ૹૹଅଌଏଐଓନପରଲଳଵହଽଽୟୡ୦୯ୱ୷ஃஃஅஊஎஐஒஓககஙசஜஜஞடணதநபமஹௐௐ௦௲అఌఎఐఒనపహఽఽౘౚౠౡ౦౯౸౾ಀಀಅಌಎಐಒನಪಳವಹಽಽೞೞೠೡ೦೯ೱೲഅഌഎഐഒഺഽഽൎൎൔൖ൘ൡ൦൸ൺൿඅඖකනඳරලලවෆ෦෯กะาาเๅ๐๙ກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອະາາຽຽເໄ໐໙ໞໟༀༀ༠༳ཀགངཇཉཌཎདནབམཛཝཨཪཬྈྌကဥဧဪဿ၉ၐၕ', 26 | '07' 27 | ]) 28 | }) 29 | 30 | it('does not provide enough guaranteed unbreakable characters for the whole encoding', () => { 31 | const needed = gen.full.reduce((acc, repertoire) => acc + [...repertoire].length, 0) 32 | assert.deepStrictEqual(gen.wordBreakable.no.length < needed, true) 33 | assert.deepStrictEqual(gen.wordBreakable.no.length, 2026) 34 | assert.deepStrictEqual(gen.wordBreakable.maybe.length, 317) 35 | }) 36 | }) 37 | -------------------------------------------------------------------------------- /test/index.spec.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import assert from 'assert' 4 | import fs from 'fs' 5 | import glob from 'glob' 6 | 7 | import { encode, decode } from '../src/index.js' 8 | 9 | const forms = ['NFC', 'NFD', 'NFKC', 'NFKD'] 10 | 11 | describe('base2048', () => { 12 | describe('test data pairs', () => { 13 | const binFileNames = glob.sync('./test-data/pairs/**/*.bin') 14 | 15 | binFileNames.forEach(fileName => { 16 | const caseName = fileName.substring(0, fileName.length - '.bin'.length) 17 | it(caseName, () => { 18 | const uint8Array = new Uint8Array(fs.readFileSync(caseName + '.bin')) 19 | const text = fs.readFileSync(caseName + '.txt', 'utf8') 20 | assert.deepStrictEqual(encode(uint8Array), text) 21 | assert.deepStrictEqual(decode(text), uint8Array) 22 | forms.forEach(form => { 23 | assert.deepStrictEqual(text.normalize(form), text) 24 | }) 25 | }) 26 | }) 27 | }) 28 | 29 | describe('failure cases', () => { 30 | const badFileNames = glob.sync('./test-data/bad/**/*.txt') 31 | 32 | badFileNames.forEach(fileName => { 33 | const caseName = fileName.substring(0, fileName.length - '.txt'.length) 34 | it(caseName, () => { 35 | const text = fs.readFileSync(caseName + '.txt', 'utf8') 36 | assert.throws(() => decode(text)) 37 | }) 38 | }) 39 | }) 40 | 41 | describe('round trips at all lengths', () => { 42 | const fillUint8s = [ 43 | 0b00000000, 44 | 0b00000001, 45 | 0b01010101, 46 | 0b10101010, 47 | 0b11111111 48 | ] 49 | for (let length = 0; length < 256; length++) { 50 | fillUint8s.forEach(fillUint8 => { 51 | it(`every uint8 is ${fillUint8} to length ${length}`, () => { 52 | const uint8Array = new Uint8Array(length) 53 | for (let i = 0; i < length; i++) { 54 | uint8Array[i] = fillUint8 55 | } 56 | 57 | assert.deepStrictEqual(uint8Array, decode(encode(uint8Array))) 58 | }) 59 | }) 60 | } 61 | }) 62 | 63 | it('demo code', () => { 64 | const ascii = 'some ASCII text' 65 | const uint8Array = Uint8Array.from(ascii, chr => chr.charCodeAt(0)) 66 | const str = encode(uint8Array) 67 | const uint8Array2 = decode(str) 68 | const ascii2 = String.fromCharCode(...uint8Array2) 69 | assert.deepStrictEqual(ascii2, 'some ASCII text') 70 | }) 71 | }) 72 | -------------------------------------------------------------------------------- /typings/index.d.ts: -------------------------------------------------------------------------------- 1 | export declare const encode: (uint8Array: Uint8Array) => string; 2 | export declare const decode: (str: string) => Uint8Array; 3 | --------------------------------------------------------------------------------