| ofs | hex dump | ascii | 
|---|
| 0000 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | s-20220902.1511/................ | 
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000755.0000000.0000000.0000 | 
| 0080 | 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 31 32 34 33 00 20 35 00 00 00 | 0000000.00000000000.011243..5... | 
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0100 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... | 
| 0120 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... | 
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0200 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f    73 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 | s-20220902.1511/s.el............ | 
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 | 
| 0280 | 30 30 36 32 37 32 32 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 32 30 34 30 00 20 30 00 00 00 | 0062722.00000000000.012040..0... | 
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0300 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... | 
| 0320 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... | 
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 0400 | 3b 3b 3b 20 73 2e 65 6c 20 2d 2d 2d 20 54 68 65    20 6c 6f 6e 67 20 6c 6f 73 74 20 45 6d 61 63 73 | ;;;.s.el.---.The.long.lost.Emacs | 
| 0420 | 20 73 74 72 69 6e 67 20 6d 61 6e 69 70 75 6c 61    74 69 6f 6e 20 6c 69 62 72 61 72 79 2e 20 2d 2a | .string.manipulation.library..-* | 
| 0440 | 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e    67 3a 20 74 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 | -.lexical-binding:.t.-*-..;;.Cop | 
| 0460 | 79 72 69 67 68 74 20 28 43 29 20 32 30 31 32 2d    32 30 32 32 20 4d 61 67 6e 61 72 20 53 76 65 65 | yright.(C).2012-2022.Magnar.Svee | 
| 0480 | 6e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4d 61    67 6e 61 72 20 53 76 65 65 6e 20 3c 6d 61 67 6e | n..;;.Author:.Magnar.Sveen.<magn | 
| 04a0 | 61 72 73 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b    3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 4a 61 | ars@gmail.com>.;;.Maintainer:.Ja | 
| 04c0 | 73 6f 6e 20 4d 69 6c 6b 69 6e 73 20 3c 6a 61 73    6f 6e 6d 32 33 40 67 6d 61 69 6c 2e 63 6f 6d 3e | son.Milkins.<jasonm23@gmail.com> | 
| 04e0 | 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 31 2e 31    33 2e 31 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a | .;;.Version:.1.13.1.;;.Keywords: | 
| 0500 | 20 73 74 72 69 6e 67 73 0a 0a 3b 3b 20 54 68 69    73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 | .strings..;;.This.program.is.fre | 
| 0520 | 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20    63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 | e.software;.you.can.redistribute | 
| 0540 | 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66    79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 | .it.and/or.modify.;;.it.under.th | 
| 0560 | 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47    4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 | e.terms.of.the.GNU.General.Publi | 
| 0580 | 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62    6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 | c.License.as.published.by.;;.the | 
| 05a0 | 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46    6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 | .Free.Software.Foundation,.eithe | 
| 05c0 | 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74    68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b | r.version.3.of.the.License,.or.; | 
| 05e0 | 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f    6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 | ;.(at.your.option).any.later.ver | 
| 0600 | 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70    72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 | sion...;;.This.program.is.distri | 
| 0620 | 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70    65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 | buted.in.the.hope.that.it.will.b | 
| 0640 | 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74    20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 | e.useful,.;;.but.WITHOUT.ANY.WAR | 
| 0660 | 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65    76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 | RANTY;.without.even.the.implied. | 
| 0680 | 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d    45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f | warranty.of.;;.MERCHANTABILITY.o | 
| 06a0 | 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20    50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f | r.FITNESS.FOR.A.PARTICULAR.PURPO | 
| 06c0 | 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20    47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c | SE...See.the.;;.GNU.General.Publ | 
| 06e0 | 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d    6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b | ic.License.for.more.details...;; | 
| 0700 | 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65    20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 | .You.should.have.received.a.copy | 
| 0720 | 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65    72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e | .of.the.GNU.General.Public.Licen | 
| 0740 | 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68    20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 | se.;;.along.with.this.program... | 
| 0760 | 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74    70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f | If.not,.see.<http://www.gnu.org/ | 
| 0780 | 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b    20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b | licenses/>...;;;.Commentary:..;; | 
| 07a0 | 20 54 68 65 20 6c 6f 6e 67 20 6c 6f 73 74 20 45    6d 61 63 73 20 73 74 72 69 6e 67 20 6d 61 6e 69 | .The.long.lost.Emacs.string.mani | 
| 07c0 | 70 75 6c 61 74 69 6f 6e 20 6c 69 62 72 61 72 79    2e 0a 3b 3b 0a 3b 3b 20 53 65 65 20 64 6f 63 75 | pulation.library..;;.;;.See.docu | 
| 07e0 | 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 68 74 74    70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f | mentation.on.https://github.com/ | 
| 0800 | 6d 61 67 6e 61 72 73 2f 73 2e 65 6c 23 66 75 6e    63 74 69 6f 6e 73 0a 0a 3b 3b 3b 20 43 6f 64 65 | magnars/s.el#functions..;;;.Code | 
| 0820 | 3a 0a 0a 3b 3b 20 53 69 6c 65 6e 63 65 20 62 79    74 65 2d 63 6f 6d 70 69 6c 65 72 0a 28 64 65 66 | :..;;.Silence.byte-compiler.(def | 
| 0840 | 76 61 72 20 75 63 73 2d 6e 6f 72 6d 61 6c 69 7a    65 2d 63 6f 6d 62 69 6e 69 6e 67 2d 63 68 61 72 | var.ucs-normalize-combining-char | 
| 0860 | 73 29 20 20 3b 20 44 65 66 69 6e 65 64 20 69 6e    20 60 75 63 73 2d 6e 6f 72 6d 61 6c 69 7a 65 27 | s)..;.Defined.in.`ucs-normalize' | 
| 0880 | 0a 28 61 75 74 6f 6c 6f 61 64 20 27 73 6c 6f 74    2d 76 61 6c 75 65 20 22 65 69 65 69 6f 22 29 0a | .(autoload.'slot-value."eieio"). | 
| 08a0 | 0a 28 64 65 66 75 6e 20 73 2d 74 72 69 6d 2d 6c    65 66 74 20 28 73 29 0a 20 20 22 52 65 6d 6f 76 | .(defun.s-trim-left.(s)..."Remov | 
| 08c0 | 65 20 77 68 69 74 65 73 70 61 63 65 20 61 74 20    74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 | e.whitespace.at.the.beginning.of | 
| 08e0 | 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20    28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 | .S."...(declare.(pure.t).(side-e | 
| 0900 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20    20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 | ffect-free.t))...(save-match-dat | 
| 0920 | 61 0a 20 20 20 20 28 69 66 20 28 73 74 72 69 6e    67 2d 6d 61 74 63 68 20 22 5c 5c 60 5b 20 5c 74 | a.....(if.(string-match."\\`[.\t | 
| 0940 | 5c 6e 5c 72 5d 2b 22 20 73 29 0a 20 20 20 20 20    20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 | \n\r]+".s).........(replace-matc | 
| 0960 | 68 20 22 22 20 74 20 74 20 73 29 0a 20 20 20 20    20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | h."".t.t.s).......s)))..(defun.s | 
| 0980 | 2d 74 72 69 6d 2d 72 69 67 68 74 20 28 73 29 0a    20 20 22 52 65 6d 6f 76 65 20 77 68 69 74 65 73 | -trim-right.(s)..."Remove.whites | 
| 09a0 | 70 61 63 65 20 61 74 20 74 68 65 20 65 6e 64 20    6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72 | pace.at.the.end.of.S."...(declar | 
| 09c0 | 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65    2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | e.(pure.t).(side-effect-free.t)) | 
| 09e0 | 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64    61 74 61 0a 20 20 20 20 28 69 66 20 28 73 74 72 | ...(save-match-data.....(if.(str | 
| 0a00 | 69 6e 67 2d 6d 61 74 63 68 20 22 5b 20 5c 74 5c    6e 5c 72 5d 2b 5c 5c 27 22 20 73 29 0a 20 20 20 | ing-match."[.\t\n\r]+\\'".s).... | 
| 0a20 | 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61    74 63 68 20 22 22 20 74 20 74 20 73 29 0a 20 20 | .....(replace-match."".t.t.s)... | 
| 0a40 | 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 6e    20 73 2d 74 72 69 6d 20 28 73 29 0a 20 20 22 52 | ....s)))..(defun.s-trim.(s)..."R | 
| 0a60 | 65 6d 6f 76 65 20 77 68 69 74 65 73 70 61 63 65    20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e | emove.whitespace.at.the.beginnin | 
| 0a80 | 67 20 61 6e 64 20 65 6e 64 20 6f 66 20 53 2e 22    0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | g.and.end.of.S."...(declare.(pur | 
| 0aa0 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63    74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 2d | e.t).(side-effect-free.t))...(s- | 
| 0ac0 | 74 72 69 6d 2d 6c 65 66 74 20 28 73 2d 74 72 69    6d 2d 72 69 67 68 74 20 73 29 29 29 0a 0a 28 64 | trim-left.(s-trim-right.s)))..(d | 
| 0ae0 | 65 66 75 6e 20 73 2d 63 6f 6c 6c 61 70 73 65 2d    77 68 69 74 65 73 70 61 63 65 20 28 73 29 0a 20 | efun.s-collapse-whitespace.(s).. | 
| 0b00 | 20 22 43 6f 6e 76 65 72 74 20 61 6c 6c 20 61 64    6a 61 63 65 6e 74 20 77 68 69 74 65 73 70 61 63 | ."Convert.all.adjacent.whitespac | 
| 0b20 | 65 20 63 68 61 72 61 63 74 65 72 73 20 74 6f 20    61 20 73 69 6e 67 6c 65 20 73 70 61 63 65 2e 22 | e.characters.to.a.single.space." | 
| 0b40 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72    65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 | ...(declare.(pure.t).(side-effec | 
| 0b60 | 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 72 65    70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d | t-free.t))...(replace-regexp-in- | 
| 0b80 | 73 74 72 69 6e 67 20 22 5b 20 5c 74 5c 6e 5c 72    5d 2b 22 20 22 20 22 20 73 29 29 0a 0a 28 64 65 | string."[.\t\n\r]+".".".s))..(de | 
| 0ba0 | 66 75 6e 20 73 2d 75 6e 69 6e 64 65 6e 74 20 28    73 20 26 6f 70 74 69 6f 6e 61 6c 20 62 6f 6c 29 | fun.s-unindent.(s.&optional.bol) | 
| 0bc0 | 0a 20 20 22 55 6e 69 6e 64 65 6e 74 20 53 20 77    68 69 63 68 20 68 61 73 20 42 4f 4c 20 28 62 65 | ..."Unindent.S.which.has.BOL.(be | 
| 0be0 | 67 69 6e 6e 69 6e 67 20 6f 66 20 6c 69 6e 65 29    20 69 6e 64 69 63 61 74 6f 72 73 2e 0a 42 4f 4c | ginning.of.line).indicators..BOL | 
| 0c00 | 20 77 69 6c 6c 20 64 65 66 61 75 6c 74 20 74 6f    20 70 69 70 65 2e 20 59 6f 75 20 63 61 6e 20 6f | .will.default.to.pipe..You.can.o | 
| 0c20 | 70 74 69 6f 6e 61 6c 6c 79 20 73 75 70 70 6c 79    20 79 6f 75 72 20 6f 77 6e 2e 22 0a 20 20 28 64 | ptionally.supply.your.own."...(d | 
| 0c40 | 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20    28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 | eclare.(pure.t).(side-effect-fre | 
| 0c60 | 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63    61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 | e.t))...(let.((case-fold-search. | 
| 0c80 | 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 62 6f    6c 20 28 6f 72 20 62 6f 6c 20 22 7c 22 29 29 29 | nil).........(bol.(or.bol."|"))) | 
| 0ca0 | 0a 20 20 20 28 73 2d 72 65 70 6c 61 63 65 2d 72    65 67 65 78 70 20 28 63 6f 6e 63 61 74 20 22 5e | ....(s-replace-regexp.(concat."^ | 
| 0cc0 | 5b 5b 3a 73 70 61 63 65 3a 5d 5d 2a 22 20 28 72    65 67 65 78 70 2d 71 75 6f 74 65 20 62 6f 6c 29 | [[:space:]]*".(regexp-quote.bol) | 
| 0ce0 | 29 20 22 22 20 73 29 29 29 0a 0a 28 64 65 66 75    6e 20 73 2d 73 70 6c 69 74 20 28 73 65 70 61 72 | )."".s)))..(defun.s-split.(separ | 
| 0d00 | 61 74 6f 72 20 73 20 26 6f 70 74 69 6f 6e 61 6c    20 6f 6d 69 74 2d 6e 75 6c 6c 73 29 0a 20 20 22 | ator.s.&optional.omit-nulls)..." | 
| 0d20 | 53 70 6c 69 74 20 53 20 69 6e 74 6f 20 73 75 62    73 74 72 69 6e 67 73 20 62 6f 75 6e 64 65 64 20 | Split.S.into.substrings.bounded. | 
| 0d40 | 62 79 20 6d 61 74 63 68 65 73 20 66 6f 72 20 72    65 67 65 78 70 20 53 45 50 41 52 41 54 4f 52 2e | by.matches.for.regexp.SEPARATOR. | 
| 0d60 | 0a 49 66 20 4f 4d 49 54 2d 4e 55 4c 4c 53 20 69    73 20 6e 6f 6e 2d 6e 69 6c 2c 20 7a 65 72 6f 2d | .If.OMIT-NULLS.is.non-nil,.zero- | 
| 0d80 | 6c 65 6e 67 74 68 20 73 75 62 73 74 72 69 6e 67    73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 0a 0a | length.substrings.are.omitted... | 
| 0da0 | 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65    20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 | This.is.a.simple.wrapper.around. | 
| 0dc0 | 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 70    6c 69 74 2d 73 74 72 69 6e 67 27 2e 22 0a 20 20 | the.built-in.`split-string'."... | 
| 0de0 | 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65    66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 | (declare.(side-effect-free.t)).. | 
| 0e00 | 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74    61 0a 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 | .(save-match-data.....(split-str | 
| 0e20 | 69 6e 67 20 73 20 73 65 70 61 72 61 74 6f 72 20    6f 6d 69 74 2d 6e 75 6c 6c 73 29 29 29 0a 0a 28 | ing.s.separator.omit-nulls)))..( | 
| 0e40 | 64 65 66 75 6e 20 73 2d 73 70 6c 69 74 2d 75 70    2d 74 6f 20 28 73 65 70 61 72 61 74 6f 72 20 73 | defun.s-split-up-to.(separator.s | 
| 0e60 | 20 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 6f 6d 69    74 2d 6e 75 6c 6c 73 29 0a 20 20 22 53 70 6c 69 | .n.&optional.omit-nulls)..."Spli | 
| 0e80 | 74 20 53 20 75 70 20 74 6f 20 4e 20 74 69 6d 65    73 20 69 6e 74 6f 20 73 75 62 73 74 72 69 6e 67 | t.S.up.to.N.times.into.substring | 
| 0ea0 | 73 20 62 6f 75 6e 64 65 64 20 62 79 20 6d 61 74    63 68 65 73 20 66 6f 72 20 72 65 67 65 78 70 20 | s.bounded.by.matches.for.regexp. | 
| 0ec0 | 53 45 50 41 52 41 54 4f 52 2e 0a 0a 49 66 20 4f    4d 49 54 2d 4e 55 4c 4c 53 20 69 73 20 6e 6f 6e | SEPARATOR...If.OMIT-NULLS.is.non | 
| 0ee0 | 2d 6e 69 6c 2c 20 7a 65 72 6f 2d 6c 65 6e 67 74    68 20 73 75 62 73 74 72 69 6e 67 73 20 61 72 65 | -nil,.zero-length.substrings.are | 
| 0f00 | 20 6f 6d 69 74 74 65 64 2e 0a 0a 53 65 65 20 61    6c 73 6f 20 60 73 2d 73 70 6c 69 74 27 2e 22 0a | .omitted...See.also.`s-split'.". | 
| 0f20 | 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65    2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | ..(declare.(side-effect-free.t)) | 
| 0f40 | 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64    61 74 61 0a 20 20 20 20 28 6c 65 74 20 28 28 6f | ...(save-match-data.....(let.((o | 
| 0f60 | 70 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 28    72 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 28 77 | p.0)...........(r.nil)).......(w | 
| 0f80 | 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a    20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 | ith-temp-buffer.........(insert. | 
| 0fa0 | 73 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71    20 6f 70 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 | s).........(setq.op.(goto-char.( | 
| 0fc0 | 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20    20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 | point-min))).........(while.(and | 
| 0fe0 | 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77    61 72 64 20 73 65 70 61 72 61 74 6f 72 20 6e 69 | .(re-search-forward.separator.ni | 
| 1000 | 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 3c 20 30 20 6e 29 | l.t).....................(<.0.n) | 
| 1020 | 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 73 75 62 20 28 62 75 66 66 65 72 2d 73 | )...........(let.((sub.(buffer-s | 
| 1040 | 75 62 73 74 72 69 6e 67 20 6f 70 20 28 6d 61 74    63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 | ubstring.op.(match-beginning.0)) | 
| 1060 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28    75 6e 6c 65 73 73 20 28 61 6e 64 20 6f 6d 69 74 | )).............(unless.(and.omit | 
| 1080 | 2d 6e 75 6c 6c 73 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -nulls.......................... | 
| 10a0 | 28 65 71 75 61 6c 20 73 75 62 20 22 22 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 | (equal.sub.""))...............(p | 
| 10c0 | 75 73 68 20 73 75 62 20 72 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 28 73 65 74 71 20 6f 70 20 | ush.sub.r)))...........(setq.op. | 
| 10e0 | 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63    68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 | (goto-char.(match-end.0)))...... | 
| 1100 | 20 20 20 20 20 28 73 65 74 71 20 6e 20 28 31 2d    20 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c | .....(setq.n.(1-.n))).........(l | 
| 1120 | 65 74 20 28 28 73 75 62 20 28 62 75 66 66 65 72    2d 73 75 62 73 74 72 69 6e 67 20 6f 70 20 28 70 | et.((sub.(buffer-substring.op.(p | 
| 1140 | 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 | oint-max))))...........(unless.( | 
| 1160 | 61 6e 64 20 6f 6d 69 74 2d 6e 75 6c 6c 73 0a 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | and.omit-nulls.................. | 
| 1180 | 20 20 20 20 20 20 28 65 71 75 61 6c 20 73 75 62    20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 | ......(equal.sub.""))........... | 
| 11a0 | 20 20 28 70 75 73 68 20 73 75 62 20 72 29 29 29    29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 | ..(push.sub.r)))).......(nrevers | 
| 11c0 | 65 20 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20    73 2d 6c 69 6e 65 73 20 28 73 29 0a 20 20 22 53 | e.r))))..(defun.s-lines.(s)..."S | 
| 11e0 | 70 6c 69 74 73 20 53 20 69 6e 74 6f 20 61 20 6c    69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 6f | plits.S.into.a.list.of.strings.o | 
| 1200 | 6e 20 6e 65 77 6c 69 6e 65 20 63 68 61 72 61 63    74 65 72 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 | n.newline.characters."...(declar | 
| 1220 | 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65    2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | e.(pure.t).(side-effect-free.t)) | 
| 1240 | 0a 20 20 28 73 2d 73 70 6c 69 74 20 22 5c 5c 28    5c 72 5c 6e 5c 5c 7c 5b 5c 6e 5c 72 5d 5c 5c 29 | ...(s-split."\\(\r\n\\|[\n\r]\\) | 
| 1260 | 22 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d    6a 6f 69 6e 20 28 73 65 70 61 72 61 74 6f 72 20 | ".s))..(defun.s-join.(separator. | 
| 1280 | 73 74 72 69 6e 67 73 29 0a 20 20 22 4a 6f 69 6e    20 61 6c 6c 20 74 68 65 20 73 74 72 69 6e 67 73 | strings)..."Join.all.the.strings | 
| 12a0 | 20 69 6e 20 53 54 52 49 4e 47 53 20 77 69 74 68    20 53 45 50 41 52 41 54 4f 52 20 69 6e 20 62 65 | .in.STRINGS.with.SEPARATOR.in.be | 
| 12c0 | 74 77 65 65 6e 2e 22 0a 20 20 28 64 65 63 6c 61    72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 | tween."...(declare.(pure.t).(sid | 
| 12e0 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29    29 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 | e-effect-free.t))...(mapconcat.' | 
| 1300 | 69 64 65 6e 74 69 74 79 20 73 74 72 69 6e 67 73    20 73 65 70 61 72 61 74 6f 72 29 29 0a 0a 28 64 | identity.strings.separator))..(d | 
| 1320 | 65 66 75 6e 20 73 2d 63 6f 6e 63 61 74 20 28 26    72 65 73 74 20 73 74 72 69 6e 67 73 29 0a 20 20 | efun.s-concat.(&rest.strings)... | 
| 1340 | 22 4a 6f 69 6e 20 61 6c 6c 20 74 68 65 20 73 74    72 69 6e 67 20 61 72 67 75 6d 65 6e 74 73 20 69 | "Join.all.the.string.arguments.i | 
| 1360 | 6e 74 6f 20 6f 6e 65 20 73 74 72 69 6e 67 2e 22    0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | nto.one.string."...(declare.(pur | 
| 1380 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63    74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 61 70 | e.t).(side-effect-free.t))...(ap | 
| 13a0 | 70 6c 79 20 27 63 6f 6e 63 61 74 20 73 74 72 69    6e 67 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d | ply.'concat.strings))..(defun.s- | 
| 13c0 | 70 72 65 70 65 6e 64 20 28 70 72 65 66 69 78 20    73 29 0a 20 20 22 43 6f 6e 63 61 74 65 6e 61 74 | prepend.(prefix.s)..."Concatenat | 
| 13e0 | 65 20 50 52 45 46 49 58 20 61 6e 64 20 53 2e 22    0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | e.PREFIX.and.S."...(declare.(pur | 
| 1400 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63    74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 63 6f | e.t).(side-effect-free.t))...(co | 
| 1420 | 6e 63 61 74 20 70 72 65 66 69 78 20 73 29 29 0a    0a 28 64 65 66 75 6e 20 73 2d 61 70 70 65 6e 64 | ncat.prefix.s))..(defun.s-append | 
| 1440 | 20 28 73 75 66 66 69 78 20 73 29 0a 20 20 22 43    6f 6e 63 61 74 65 6e 61 74 65 20 53 20 61 6e 64 | .(suffix.s)..."Concatenate.S.and | 
| 1460 | 20 53 55 46 46 49 58 2e 22 0a 20 20 28 64 65 63    6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | .SUFFIX."...(declare.(pure.t).(s | 
| 1480 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20    74 29 29 0a 20 20 28 63 6f 6e 63 61 74 20 73 20 | ide-effect-free.t))...(concat.s. | 
| 14a0 | 73 75 66 66 69 78 29 29 0a 0a 28 64 65 66 75 6e    20 73 2d 73 70 6c 69 63 65 20 28 6e 65 65 64 6c | suffix))..(defun.s-splice.(needl | 
| 14c0 | 65 20 6e 20 73 29 0a 20 20 22 53 70 6c 69 63 65    20 4e 45 45 44 4c 45 20 69 6e 74 6f 20 53 20 61 | e.n.s)..."Splice.NEEDLE.into.S.a | 
| 14e0 | 74 20 70 6f 73 69 74 69 6f 6e 20 4e 2e 0a 30 20    69 73 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 | t.position.N..0.is.the.beginning | 
| 1500 | 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 2c 20    2d 31 20 69 73 20 74 68 65 20 65 6e 64 2e 22 0a | .of.the.string,.-1.is.the.end.". | 
| 1520 | 20 20 28 69 66 20 28 3c 20 6e 20 30 29 0a 20 20    20 20 20 20 28 6c 65 74 20 28 28 6c 65 66 74 20 | ..(if.(<.n.0).......(let.((left. | 
| 1540 | 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 28    2b 20 31 20 6e 20 28 6c 65 6e 67 74 68 20 73 29 | (substring.s.0.(+.1.n.(length.s) | 
| 1560 | 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 72 69 67 68 74 20 28 73 2d 72 69 67 68 74 20 | ))).............(right.(s-right. | 
| 1580 | 28 2d 20 2d 31 20 6e 29 20 73 29 29 29 0a 20 20    20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6c 65 | (-.-1.n).s))).........(concat.le | 
| 15a0 | 66 74 20 6e 65 65 64 6c 65 20 72 69 67 68 74 29    29 0a 20 20 20 20 28 6c 65 74 20 28 28 6c 65 66 | ft.needle.right)).....(let.((lef | 
| 15c0 | 74 20 28 73 2d 6c 65 66 74 20 6e 20 73 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 72 69 67 68 74 | t.(s-left.n.s))...........(right | 
| 15e0 | 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 6e 20    28 6c 65 6e 67 74 68 20 73 29 29 29 29 0a 20 20 | .(substring.s.n.(length.s))))... | 
| 1600 | 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6c 65    66 74 20 6e 65 65 64 6c 65 20 72 69 67 68 74 29 | ......(concat.left.needle.right) | 
| 1620 | 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 73 2d 72    65 70 65 61 74 20 28 6e 75 6d 20 73 29 0a 20 20 | )))...(defun.s-repeat.(num.s)... | 
| 1640 | 22 4d 61 6b 65 20 61 20 73 74 72 69 6e 67 20 6f    66 20 53 20 72 65 70 65 61 74 65 64 20 4e 55 4d | "Make.a.string.of.S.repeated.NUM | 
| 1660 | 20 74 69 6d 65 73 2e 22 0a 20 20 28 64 65 63 6c    61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 | .times."...(declare.(pure.t).(si | 
| 1680 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74    29 29 0a 20 20 28 6c 65 74 20 28 73 73 29 0a 20 | de-effect-free.t))...(let.(ss).. | 
| 16a0 | 20 20 20 28 77 68 69 6c 65 20 28 3e 20 6e 75 6d    20 30 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 | ...(while.(>.num.0).......(setq. | 
| 16c0 | 73 73 20 28 63 6f 6e 73 20 73 20 73 73 29 29 0a    20 20 20 20 20 20 28 73 65 74 71 20 6e 75 6d 20 | ss.(cons.s.ss)).......(setq.num. | 
| 16e0 | 28 31 2d 20 6e 75 6d 29 29 29 0a 20 20 20 20 28    61 70 70 6c 79 20 27 63 6f 6e 63 61 74 20 73 73 | (1-.num))).....(apply.'concat.ss | 
| 1700 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 68    6f 70 2d 73 75 66 66 69 78 20 28 73 75 66 66 69 | )))..(defun.s-chop-suffix.(suffi | 
| 1720 | 78 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 53    55 46 46 49 58 20 69 66 20 69 74 20 69 73 20 61 | x.s)..."Remove.SUFFIX.if.it.is.a | 
| 1740 | 74 20 65 6e 64 20 6f 66 20 53 2e 22 0a 20 20 28    64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 | t.end.of.S."...(declare.(pure.t) | 
| 1760 | 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72    65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 | .(side-effect-free.t))...(let.(( | 
| 1780 | 70 6f 73 20 28 2d 20 28 6c 65 6e 67 74 68 20 73    75 66 66 69 78 29 29 29 29 0a 20 20 20 20 28 69 | pos.(-.(length.suffix)))).....(i | 
| 17a0 | 66 20 28 61 6e 64 20 28 3e 3d 20 28 6c 65 6e 67    74 68 20 73 29 20 28 6c 65 6e 67 74 68 20 73 75 | f.(and.(>=.(length.s).(length.su | 
| 17c0 | 66 66 69 78 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 74 72 69 6e 67 3d 20 73 75 66 | ffix))..............(string=.suf | 
| 17e0 | 66 69 78 20 28 73 75 62 73 74 72 69 6e 67 20 73    20 70 6f 73 29 29 29 0a 20 20 20 20 20 20 20 20 | fix.(substring.s.pos)))......... | 
| 1800 | 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 70    6f 73 29 0a 20 20 20 20 20 20 73 29 29 29 0a 0a | (substring.s.0.pos).......s))).. | 
| 1820 | 28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 73 75    66 66 69 78 65 73 20 28 73 75 66 66 69 78 65 73 | (defun.s-chop-suffixes.(suffixes | 
| 1840 | 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 53 55    46 46 49 58 45 53 20 6f 6e 65 20 62 79 20 6f 6e | .s)..."Remove.SUFFIXES.one.by.on | 
| 1860 | 65 20 69 6e 20 6f 72 64 65 72 2c 20 69 66 20 74    68 65 79 20 61 72 65 20 61 74 20 74 68 65 20 65 | e.in.order,.if.they.are.at.the.e | 
| 1880 | 6e 64 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63    6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | nd.of.S."...(declare.(pure.t).(s | 
| 18a0 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20    74 29 29 0a 20 20 28 77 68 69 6c 65 20 73 75 66 | ide-effect-free.t))...(while.suf | 
| 18c0 | 66 69 78 65 73 0a 20 20 20 20 28 73 65 74 71 20    73 20 28 73 2d 63 68 6f 70 2d 73 75 66 66 69 78 | fixes.....(setq.s.(s-chop-suffix | 
| 18e0 | 20 28 63 61 72 20 73 75 66 66 69 78 65 73 29 20    73 29 29 0a 20 20 20 20 28 73 65 74 71 20 73 75 | .(car.suffixes).s)).....(setq.su | 
| 1900 | 66 66 69 78 65 73 20 28 63 64 72 20 73 75 66 66    69 78 65 73 29 29 29 0a 20 20 73 29 0a 0a 28 64 | ffixes.(cdr.suffixes)))...s)..(d | 
| 1920 | 65 66 75 6e 20 73 2d 63 68 6f 70 2d 70 72 65 66    69 78 20 28 70 72 65 66 69 78 20 73 29 0a 20 20 | efun.s-chop-prefix.(prefix.s)... | 
| 1940 | 22 52 65 6d 6f 76 65 20 50 52 45 46 49 58 20 69    66 20 69 74 20 69 73 20 61 74 20 74 68 65 20 73 | "Remove.PREFIX.if.it.is.at.the.s | 
| 1960 | 74 61 72 74 20 6f 66 20 53 2e 22 0a 20 20 28 64    65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 | tart.of.S."...(declare.(pure.t). | 
| 1980 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65    65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 70 | (side-effect-free.t))...(let.((p | 
| 19a0 | 6f 73 20 28 6c 65 6e 67 74 68 20 70 72 65 66 69    78 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e | os.(length.prefix))).....(if.(an | 
| 19c0 | 64 20 28 3e 3d 20 28 6c 65 6e 67 74 68 20 73 29    20 28 6c 65 6e 67 74 68 20 70 72 65 66 69 78 29 | d.(>=.(length.s).(length.prefix) | 
| 19e0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 74 72 69 6e 67 3d 20 70 72 65 66 69 78 20 28 | )..............(string=.prefix.( | 
| 1a00 | 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 70 6f    73 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 75 | substring.s.0.pos))).........(su | 
| 1a20 | 62 73 74 72 69 6e 67 20 73 20 70 6f 73 29 0a 20    20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 | bstring.s.pos).......s)))..(defu | 
| 1a40 | 6e 20 73 2d 63 68 6f 70 2d 70 72 65 66 69 78 65    73 20 28 70 72 65 66 69 78 65 73 20 73 29 0a 20 | n.s-chop-prefixes.(prefixes.s).. | 
| 1a60 | 20 22 52 65 6d 6f 76 65 20 50 52 45 46 49 58 45    53 20 6f 6e 65 20 62 79 20 6f 6e 65 20 69 6e 20 | ."Remove.PREFIXES.one.by.one.in. | 
| 1a80 | 6f 72 64 65 72 2c 20 69 66 20 74 68 65 79 20 61    72 65 20 61 74 20 74 68 65 20 73 74 61 72 74 20 | order,.if.they.are.at.the.start. | 
| 1aa0 | 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c 61 72    65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 | of.S."...(declare.(pure.t).(side | 
| 1ac0 | 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29    0a 20 20 28 77 68 69 6c 65 20 70 72 65 66 69 78 | -effect-free.t))...(while.prefix | 
| 1ae0 | 65 73 0a 20 20 20 20 28 73 65 74 71 20 73 20 28    73 2d 63 68 6f 70 2d 70 72 65 66 69 78 20 28 63 | es.....(setq.s.(s-chop-prefix.(c | 
| 1b00 | 61 72 20 70 72 65 66 69 78 65 73 29 20 73 29 29    0a 20 20 20 20 28 73 65 74 71 20 70 72 65 66 69 | ar.prefixes).s)).....(setq.prefi | 
| 1b20 | 78 65 73 20 28 63 64 72 20 70 72 65 66 69 78 65    73 29 29 29 0a 20 20 73 29 0a 0a 28 64 65 66 75 | xes.(cdr.prefixes)))...s)..(defu | 
| 1b40 | 6e 20 73 2d 73 68 61 72 65 64 2d 73 74 61 72 74    20 28 73 31 20 73 32 29 0a 20 20 22 52 65 74 75 | n.s-shared-start.(s1.s2)..."Retu | 
| 1b60 | 72 6e 73 20 74 68 65 20 6c 6f 6e 67 65 73 74 20    70 72 65 66 69 78 20 53 31 20 61 6e 64 20 53 32 | rns.the.longest.prefix.S1.and.S2 | 
| 1b80 | 20 68 61 76 65 20 69 6e 20 63 6f 6d 6d 6f 6e 2e    22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 | .have.in.common."...(declare.(pu | 
| 1ba0 | 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65    63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c | re.t).(side-effect-free.t))...(l | 
| 1bc0 | 65 74 20 28 28 63 6d 70 20 28 63 6f 6d 70 61 72    65 2d 73 74 72 69 6e 67 73 20 73 31 20 30 20 28 | et.((cmp.(compare-strings.s1.0.( | 
| 1be0 | 6c 65 6e 67 74 68 20 73 31 29 20 73 32 20 30 20    28 6c 65 6e 67 74 68 20 73 32 29 29 29 29 0a 20 | length.s1).s2.0.(length.s2)))).. | 
| 1c00 | 20 20 20 28 69 66 20 28 65 71 20 63 6d 70 20 74    29 20 73 31 20 28 73 75 62 73 74 72 69 6e 67 20 | ...(if.(eq.cmp.t).s1.(substring. | 
| 1c20 | 73 31 20 30 20 28 31 2d 20 28 61 62 73 20 63 6d    70 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | s1.0.(1-.(abs.cmp))))))..(defun. | 
| 1c40 | 73 2d 73 68 61 72 65 64 2d 65 6e 64 20 28 73 31    20 73 32 29 0a 20 20 22 52 65 74 75 72 6e 73 20 | s-shared-end.(s1.s2)..."Returns. | 
| 1c60 | 74 68 65 20 6c 6f 6e 67 65 73 74 20 73 75 66 66    69 78 20 53 31 20 61 6e 64 20 53 32 20 68 61 76 | the.longest.suffix.S1.and.S2.hav | 
| 1c80 | 65 20 69 6e 20 63 6f 6d 6d 6f 6e 2e 22 0a 20 20    28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 | e.in.common."...(declare.(pure.t | 
| 1ca0 | 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66    72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 2a 20 | ).(side-effect-free.t))...(let*. | 
| 1cc0 | 28 28 6c 31 20 28 6c 65 6e 67 74 68 20 73 31 29    29 0a 20 20 20 20 20 20 20 20 20 28 6c 32 20 28 | ((l1.(length.s1))..........(l2.( | 
| 1ce0 | 6c 65 6e 67 74 68 20 73 32 29 29 0a 20 20 20 20    20 20 20 20 20 28 73 65 61 72 63 68 2d 6c 65 6e | length.s2))..........(search-len | 
| 1d00 | 67 74 68 20 28 6d 69 6e 20 6c 31 20 6c 32 29 29    0a 20 20 20 20 20 20 20 20 20 28 69 20 30 29 29 | gth.(min.l1.l2))..........(i.0)) | 
| 1d20 | 0a 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64    20 28 3c 20 69 20 73 65 61 72 63 68 2d 6c 65 6e | .....(while.(and.(<.i.search-len | 
| 1d40 | 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 3d 20 28 61 72 65 66 20 73 31 | gth).................(=.(aref.s1 | 
| 1d60 | 20 28 2d 20 6c 31 20 69 20 31 29 29 20 28 61 72    65 66 20 73 32 20 28 2d 20 6c 32 20 69 20 31 29 | .(-.l1.i.1)).(aref.s2.(-.l2.i.1) | 
| 1d80 | 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20    69 20 28 31 2b 20 69 29 29 29 0a 20 20 20 20 3b | ))).......(setq.i.(1+.i))).....; | 
| 1da0 | 3b 20 49 66 20 49 20 69 73 20 30 2c 20 74 68 65    6e 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20 | ;.If.I.is.0,.then.it.means.that. | 
| 1dc0 | 74 68 65 72 65 27 73 20 6e 6f 20 63 6f 6d 6d 6f    6e 20 73 75 66 66 69 78 20 62 65 74 77 65 65 6e | there's.no.common.suffix.between | 
| 1de0 | 0a 20 20 20 20 3b 3b 20 53 31 20 61 6e 64 20 53    32 2e 0a 20 20 20 20 3b 3b 0a 20 20 20 20 3b 3b | .....;;.S1.and.S2......;;.....;; | 
| 1e00 | 20 48 6f 77 65 76 65 72 2c 20 73 69 6e 63 65 20    28 73 75 62 73 74 72 69 6e 67 20 73 20 28 2d 20 | .However,.since.(substring.s.(-. | 
| 1e20 | 30 29 29 20 77 69 6c 6c 20 72 65 74 75 72 6e 20    74 68 65 20 77 68 6f 6c 65 0a 20 20 20 20 3b 3b | 0)).will.return.the.whole.....;; | 
| 1e40 | 20 73 74 72 69 6e 67 2c 20 60 73 2d 73 68 61 72    65 64 2d 65 6e 64 27 20 73 68 6f 75 6c 64 20 73 | .string,.`s-shared-end'.should.s | 
| 1e60 | 69 6d 70 6c 79 20 72 65 74 75 72 6e 20 74 68 65    20 65 6d 70 74 79 20 73 74 72 69 6e 67 0a 20 20 | imply.return.the.empty.string... | 
| 1e80 | 20 20 3b 3b 20 77 68 65 6e 20 49 20 69 73 20 30    2e 0a 20 20 20 20 28 69 66 20 28 7a 65 72 6f 70 | ..;;.when.I.is.0......(if.(zerop | 
| 1ea0 | 20 69 29 0a 20 20 20 20 20 20 20 20 22 22 0a 20    20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 | .i)........."".......(substring. | 
| 1ec0 | 73 31 20 28 2d 20 69 29 29 29 29 29 0a 0a 28 64    65 66 75 6e 20 73 2d 63 68 6f 6d 70 20 28 73 29 | s1.(-.i)))))..(defun.s-chomp.(s) | 
| 1ee0 | 0a 20 20 22 52 65 6d 6f 76 65 20 6f 6e 65 20 74    72 61 69 6c 69 6e 67 20 60 5c 5c 6e 60 2c 20 60 | ..."Remove.one.trailing.`\\n`,.` | 
| 1f00 | 5c 5c 72 60 20 6f 72 20 60 5c 5c 72 5c 5c 6e 60    20 66 72 6f 6d 20 53 2e 22 0a 20 20 28 64 65 63 | \\r`.or.`\\r\\n`.from.S."...(dec | 
| 1f20 | 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73    69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 | lare.(pure.t).(side-effect-free. | 
| 1f40 | 74 29 29 0a 20 20 28 73 2d 63 68 6f 70 2d 73 75    66 66 69 78 65 73 20 27 28 22 5c 6e 22 20 22 5c | t))...(s-chop-suffixes.'("\n"."\ | 
| 1f60 | 72 22 29 20 73 29 29 0a 0a 28 64 65 66 75 6e 20    73 2d 74 72 75 6e 63 61 74 65 20 28 6c 65 6e 20 | r").s))..(defun.s-truncate.(len. | 
| 1f80 | 73 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6c 6c 69    70 73 69 73 29 0a 20 20 22 49 66 20 53 20 69 73 | s.&optional.ellipsis)..."If.S.is | 
| 1fa0 | 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 4c 45 4e    2c 20 63 75 74 20 69 74 20 64 6f 77 6e 20 61 6e | .longer.than.LEN,.cut.it.down.an | 
| 1fc0 | 64 20 61 64 64 20 45 4c 4c 49 50 53 49 53 20 74    6f 20 74 68 65 20 65 6e 64 2e 0a 0a 54 68 65 20 | d.add.ELLIPSIS.to.the.end...The. | 
| 1fe0 | 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67    2c 20 69 6e 63 6c 75 64 69 6e 67 20 65 6c 6c 69 | resulting.string,.including.elli | 
| 2000 | 70 73 69 73 2c 20 77 69 6c 6c 20 62 65 20 4c 45    4e 20 63 68 61 72 61 63 74 65 72 73 0a 6c 6f 6e | psis,.will.be.LEN.characters.lon | 
| 2020 | 67 2e 0a 0a 57 68 65 6e 20 6e 6f 74 20 73 70 65    63 69 66 69 65 64 2c 20 45 4c 4c 49 50 53 49 53 | g...When.not.specified,.ELLIPSIS | 
| 2040 | 20 64 65 66 61 75 6c 74 73 20 74 6f 20 e2 80 98    2e 2e 2e e2 80 99 2e 22 0a 20 20 28 64 65 63 6c | .defaults.to..........."...(decl | 
| 2060 | 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69    64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 | are.(pure.t).(side-effect-free.t | 
| 2080 | 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 65 6c 6c    69 70 73 69 73 0a 20 20 20 20 28 73 65 74 71 20 | ))...(unless.ellipsis.....(setq. | 
| 20a0 | 65 6c 6c 69 70 73 69 73 20 22 2e 2e 2e 22 29 29    0a 20 20 28 69 66 20 28 3e 20 28 6c 65 6e 67 74 | ellipsis."..."))...(if.(>.(lengt | 
| 20c0 | 68 20 73 29 20 6c 65 6e 29 0a 20 20 20 20 20 20    28 66 6f 72 6d 61 74 20 22 25 73 25 73 22 20 28 | h.s).len).......(format."%s%s".( | 
| 20e0 | 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 28 2d    20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 65 6c 6c | substring.s.0.(-.len.(length.ell | 
| 2100 | 69 70 73 69 73 29 29 29 20 65 6c 6c 69 70 73 69    73 29 0a 20 20 20 20 73 29 29 0a 0a 28 64 65 66 | ipsis))).ellipsis).....s))..(def | 
| 2120 | 75 6e 20 73 2d 77 6f 72 64 2d 77 72 61 70 20 28    6c 65 6e 20 73 29 0a 20 20 22 49 66 20 53 20 69 | un.s-word-wrap.(len.s)..."If.S.i | 
| 2140 | 73 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 4c 45    4e 2c 20 77 72 61 70 20 74 68 65 20 77 6f 72 64 | s.longer.than.LEN,.wrap.the.word | 
| 2160 | 73 20 77 69 74 68 20 6e 65 77 6c 69 6e 65 73 2e    22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 | s.with.newlines."...(declare.(si | 
| 2180 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74    29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 | de-effect-free.t))...(save-match | 
| 21a0 | 2d 64 61 74 61 0a 20 20 20 20 28 77 69 74 68 2d    74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 | -data.....(with-temp-buffer..... | 
| 21c0 | 20 20 28 69 6e 73 65 72 74 20 73 29 0a 20 20 20    20 20 20 28 6c 65 74 20 28 28 66 69 6c 6c 2d 63 | ..(insert.s).......(let.((fill-c | 
| 21e0 | 6f 6c 75 6d 6e 20 6c 65 6e 29 29 0a 20 20 20 20    20 20 20 20 28 66 69 6c 6c 2d 72 65 67 69 6f 6e | olumn.len)).........(fill-region | 
| 2200 | 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f    69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 | .(point-min).(point-max)))...... | 
| 2220 | 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69    6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 | .(buffer-substring.(point-min).( | 
| 2240 | 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 73 2d 63 65 6e 74 65 72 20 | point-max)))))..(defun.s-center. | 
| 2260 | 28 6c 65 6e 20 73 29 0a 20 20 22 49 66 20 53 20    69 73 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 | (len.s)..."If.S.is.shorter.than. | 
| 2280 | 4c 45 4e 2c 20 70 61 64 20 69 74 20 77 69 74 68    20 73 70 61 63 65 73 20 73 6f 20 69 74 20 69 73 | LEN,.pad.it.with.spaces.so.it.is | 
| 22a0 | 20 63 65 6e 74 65 72 65 64 2e 22 0a 20 20 28 64    65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 | .centered."...(declare.(pure.t). | 
| 22c0 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65    65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 65 | (side-effect-free.t))...(let.((e | 
| 22e0 | 78 74 72 61 20 28 6d 61 78 20 30 20 28 2d 20 6c    65 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 | xtra.(max.0.(-.len.(length.s)))) | 
| 2300 | 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20    20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20 | ).....(concat......(make-string. | 
| 2320 | 28 63 65 69 6c 69 6e 67 20 65 78 74 72 61 20 32    29 20 3f 5c 73 29 0a 20 20 20 20 20 73 0a 20 20 | (ceiling.extra.2).?\s)......s... | 
| 2340 | 20 20 20 28 6d 61 6b 65 2d 73 74 72 69 6e 67 20    28 66 6c 6f 6f 72 20 65 78 74 72 61 20 32 29 20 | ...(make-string.(floor.extra.2). | 
| 2360 | 3f 5c 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20    73 2d 70 61 64 2d 6c 65 66 74 20 28 6c 65 6e 20 | ?\s))))..(defun.s-pad-left.(len. | 
| 2380 | 70 61 64 64 69 6e 67 20 73 29 0a 20 20 22 49 66    20 53 20 69 73 20 73 68 6f 72 74 65 72 20 74 68 | padding.s)..."If.S.is.shorter.th | 
| 23a0 | 61 6e 20 4c 45 4e 2c 20 70 61 64 20 69 74 20 77    69 74 68 20 50 41 44 44 49 4e 47 20 6f 6e 20 74 | an.LEN,.pad.it.with.PADDING.on.t | 
| 23c0 | 68 65 20 6c 65 66 74 2e 22 0a 20 20 28 64 65 63    6c 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 | he.left."...(declare.(pure.t).(s | 
| 23e0 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20    74 29 29 0a 20 20 28 6c 65 74 20 28 28 65 78 74 | ide-effect-free.t))...(let.((ext | 
| 2400 | 72 61 20 28 6d 61 78 20 30 20 28 2d 20 6c 65 6e    20 28 6c 65 6e 67 74 68 20 73 29 29 29 29 29 0a | ra.(max.0.(-.len.(length.s))))). | 
| 2420 | 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6d 61 6b    65 2d 73 74 72 69 6e 67 20 65 78 74 72 61 20 28 | ....(concat.(make-string.extra.( | 
| 2440 | 73 74 72 69 6e 67 2d 74 6f 2d 63 68 61 72 20 70    61 64 64 69 6e 67 29 29 0a 20 20 20 20 20 20 20 | string-to-char.padding))........ | 
| 2460 | 20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75    6e 20 73 2d 70 61 64 2d 72 69 67 68 74 20 28 6c | .....s)))..(defun.s-pad-right.(l | 
| 2480 | 65 6e 20 70 61 64 64 69 6e 67 20 73 29 0a 20 20    22 49 66 20 53 20 69 73 20 73 68 6f 72 74 65 72 | en.padding.s)..."If.S.is.shorter | 
| 24a0 | 20 74 68 61 6e 20 4c 45 4e 2c 20 70 61 64 20 69    74 20 77 69 74 68 20 50 41 44 44 49 4e 47 20 6f | .than.LEN,.pad.it.with.PADDING.o | 
| 24c0 | 6e 20 74 68 65 20 72 69 67 68 74 2e 22 0a 20 20    28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 | n.the.right."...(declare.(pure.t | 
| 24e0 | 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66    72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 | ).(side-effect-free.t))...(let.( | 
| 2500 | 28 65 78 74 72 61 20 28 6d 61 78 20 30 20 28 2d    20 6c 65 6e 20 28 6c 65 6e 67 74 68 20 73 29 29 | (extra.(max.0.(-.len.(length.s)) | 
| 2520 | 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20    73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d | ))).....(concat.s.............(m | 
| 2540 | 61 6b 65 2d 73 74 72 69 6e 67 20 65 78 74 72 61    20 28 73 74 72 69 6e 67 2d 74 6f 2d 63 68 61 72 | ake-string.extra.(string-to-char | 
| 2560 | 20 70 61 64 64 69 6e 67 29 29 29 29 29 0a 0a 28    64 65 66 75 6e 20 73 2d 6c 65 66 74 20 28 6c 65 | .padding)))))..(defun.s-left.(le | 
| 2580 | 6e 20 73 29 0a 20 20 22 52 65 74 75 72 6e 73 20    75 70 20 74 6f 20 74 68 65 20 4c 45 4e 20 66 69 | n.s)..."Returns.up.to.the.LEN.fi | 
| 25a0 | 72 73 74 20 63 68 61 72 73 20 6f 66 20 53 2e 22    0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | rst.chars.of.S."...(declare.(pur | 
| 25c0 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63    74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 | e.t).(side-effect-free.t))...(if | 
| 25e0 | 20 28 3e 20 28 6c 65 6e 67 74 68 20 73 29 20 6c    65 6e 29 0a 20 20 20 20 20 20 28 73 75 62 73 74 | .(>.(length.s).len).......(subst | 
| 2600 | 72 69 6e 67 20 73 20 30 20 6c 65 6e 29 0a 20 20    20 20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d | ring.s.0.len).....s))..(defun.s- | 
| 2620 | 72 69 67 68 74 20 28 6c 65 6e 20 73 29 0a 20 20    22 52 65 74 75 72 6e 73 20 75 70 20 74 6f 20 74 | right.(len.s)..."Returns.up.to.t | 
| 2640 | 68 65 20 4c 45 4e 20 6c 61 73 74 20 63 68 61 72    73 20 6f 66 20 53 2e 22 0a 20 20 28 64 65 63 6c | he.LEN.last.chars.of.S."...(decl | 
| 2660 | 61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69    64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 | are.(pure.t).(side-effect-free.t | 
| 2680 | 29 29 0a 20 20 28 6c 65 74 20 28 28 6c 20 28 6c    65 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 28 | ))...(let.((l.(length.s))).....( | 
| 26a0 | 69 66 20 28 3e 20 6c 20 6c 65 6e 29 0a 20 20 20    20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 | if.(>.l.len).........(substring. | 
| 26c0 | 73 20 28 2d 20 6c 20 6c 65 6e 29 20 6c 29 0a 20    20 20 20 20 20 73 29 29 29 0a 0a 28 64 65 66 75 | s.(-.l.len).l).......s)))..(defu | 
| 26e0 | 6e 20 73 2d 63 68 6f 70 2d 6c 65 66 74 20 28 6c    65 6e 20 73 29 0a 20 20 22 52 65 6d 6f 76 65 20 | n.s-chop-left.(len.s)..."Remove. | 
| 2700 | 74 68 65 20 66 69 72 73 74 20 4c 45 4e 20 63 68    61 72 73 20 66 72 6f 6d 20 53 2e 22 0a 20 20 28 | the.first.LEN.chars.from.S."...( | 
| 2720 | 6c 65 74 20 28 28 6c 20 28 6c 65 6e 67 74 68 20    73 29 29 29 0a 20 20 20 20 28 69 66 20 28 3e 20 | let.((l.(length.s))).....(if.(>. | 
| 2740 | 6c 20 6c 65 6e 29 0a 20 20 20 20 20 20 20 20 28    73 75 62 73 74 72 69 6e 67 20 73 20 6c 65 6e 20 | l.len).........(substring.s.len. | 
| 2760 | 6c 29 0a 20 20 20 20 20 20 22 22 29 29 29 0a 0a    28 64 65 66 75 6e 20 73 2d 63 68 6f 70 2d 72 69 | l)......."")))..(defun.s-chop-ri | 
| 2780 | 67 68 74 20 28 6c 65 6e 20 73 29 0a 20 20 22 52    65 6d 6f 76 65 20 74 68 65 20 6c 61 73 74 20 4c | ght.(len.s)..."Remove.the.last.L | 
| 27a0 | 45 4e 20 63 68 61 72 73 20 66 72 6f 6d 20 53 2e    22 0a 20 20 28 6c 65 74 20 28 28 6c 20 28 6c 65 | EN.chars.from.S."...(let.((l.(le | 
| 27c0 | 6e 67 74 68 20 73 29 29 29 0a 20 20 20 20 28 69    66 20 28 3e 20 6c 20 6c 65 6e 29 0a 20 20 20 20 | ngth.s))).....(if.(>.l.len)..... | 
| 27e0 | 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73    20 30 20 28 2d 20 6c 20 6c 65 6e 29 29 0a 20 20 | ....(substring.s.0.(-.l.len))... | 
| 2800 | 20 20 20 20 22 22 29 29 29 0a 0a 28 64 65 66 75    6e 20 73 2d 65 6e 64 73 2d 77 69 74 68 3f 20 28 | ...."")))..(defun.s-ends-with?.( | 
| 2820 | 73 75 66 66 69 78 20 73 20 26 6f 70 74 69 6f 6e    61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29 0a | suffix.s.&optional.ignore-case). | 
| 2840 | 20 20 22 44 6f 65 73 20 53 20 65 6e 64 20 77 69    74 68 20 53 55 46 46 49 58 3f 0a 0a 49 66 20 49 | .."Does.S.end.with.SUFFIX?..If.I | 
| 2860 | 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 20 6e 6f    6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f 6d 70 61 | GNORE-CASE.is.non-nil,.the.compa | 
| 2880 | 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 20 77 69    74 68 6f 75 74 20 70 61 79 69 6e 67 0a 61 74 74 | rison.is.done.without.paying.att | 
| 28a0 | 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 65 20 64    69 66 66 65 72 65 6e 63 65 73 2e 0a 0a 41 6c 69 | ention.to.case.differences...Ali | 
| 28c0 | 61 73 3a 20 60 73 2d 73 75 66 66 69 78 3f 27 22    0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72 | as:.`s-suffix?'"...(declare.(pur | 
| 28e0 | 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63    74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 | e.t).(side-effect-free.t))...(le | 
| 2900 | 74 20 28 28 73 74 61 72 74 2d 70 6f 73 20 28 2d    20 28 6c 65 6e 67 74 68 20 73 29 20 28 6c 65 6e | t.((start-pos.(-.(length.s).(len | 
| 2920 | 67 74 68 20 73 75 66 66 69 78 29 29 29 29 0a 20    20 20 20 28 61 6e 64 20 28 3e 3d 20 73 74 61 72 | gth.suffix)))).....(and.(>=.star | 
| 2940 | 74 2d 70 6f 73 20 30 29 0a 20 20 20 20 20 20 20    20 20 28 65 71 20 74 20 28 63 6f 6d 70 61 72 65 | t-pos.0)..........(eq.t.(compare | 
| 2960 | 2d 73 74 72 69 6e 67 73 20 73 75 66 66 69 78 20    6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 | -strings.suffix.nil.nil......... | 
| 2980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 73 20 73 74 61 72 74 2d | ........................s.start- | 
| 29a0 | 70 6f 73 20 6e 69 6c 20 69 67 6e 6f 72 65 2d 63    61 73 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e | pos.nil.ignore-case)))))..(defun | 
| 29c0 | 20 73 2d 73 74 61 72 74 73 2d 77 69 74 68 3f 20    28 70 72 65 66 69 78 20 73 20 26 6f 70 74 69 6f | .s-starts-with?.(prefix.s.&optio | 
| 29e0 | 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 61 73 65 29    0a 20 20 22 44 6f 65 73 20 53 20 73 74 61 72 74 | nal.ignore-case)..."Does.S.start | 
| 2a00 | 20 77 69 74 68 20 50 52 45 46 49 58 3f 0a 0a 49    66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 69 73 | .with.PREFIX?..If.IGNORE-CASE.is | 
| 2a20 | 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 6f    6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e 65 | .non-nil,.the.comparison.is.done | 
| 2a40 | 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 0a    61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 61 73 | .without.paying.attention.to.cas | 
| 2a60 | 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 0a 0a    41 6c 69 61 73 3a 20 60 73 2d 70 72 65 66 69 78 | e.differences...Alias:.`s-prefix | 
| 2a80 | 3f 27 2e 20 54 68 69 73 20 69 73 20 61 20 73 69    6d 70 6c 65 20 77 72 61 70 70 65 72 20 61 72 6f | ?'..This.is.a.simple.wrapper.aro | 
| 2aa0 | 75 6e 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e    0a 60 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d | und.the.built-in.`string-prefix- | 
| 2ac0 | 70 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20    28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 | p'."...(declare.(pure.t).(side-e | 
| 2ae0 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20    20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d | ffect-free.t))...(string-prefix- | 
| 2b00 | 70 20 70 72 65 66 69 78 20 73 20 69 67 6e 6f 72    65 2d 63 61 73 65 29 29 0a 0a 28 64 65 66 75 6e | p.prefix.s.ignore-case))..(defun | 
| 2b20 | 20 73 2d 2d 74 72 75 74 68 79 3f 20 28 76 61 6c    29 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 | .s--truthy?.(val)...(declare.(pu | 
| 2b40 | 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65    63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6e | re.t).(side-effect-free.t))...(n | 
| 2b60 | 6f 74 20 28 6e 75 6c 6c 20 76 61 6c 29 29 29 0a    0a 28 64 65 66 75 6e 20 73 2d 63 6f 6e 74 61 69 | ot.(null.val)))..(defun.s-contai | 
| 2b80 | 6e 73 3f 20 28 6e 65 65 64 6c 65 20 73 20 26 6f    70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 2d 63 | ns?.(needle.s.&optional.ignore-c | 
| 2ba0 | 61 73 65 29 0a 20 20 22 44 6f 65 73 20 53 20 63    6f 6e 74 61 69 6e 20 4e 45 45 44 4c 45 3f 0a 0a | ase)..."Does.S.contain.NEEDLE?.. | 
| 2bc0 | 49 66 20 49 47 4e 4f 52 45 2d 43 41 53 45 20 69    73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 20 63 | If.IGNORE-CASE.is.non-nil,.the.c | 
| 2be0 | 6f 6d 70 61 72 69 73 6f 6e 20 69 73 20 64 6f 6e    65 20 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 | omparison.is.done.without.paying | 
| 2c00 | 0a 61 74 74 65 6e 74 69 6f 6e 20 74 6f 20 63 61    73 65 20 64 69 66 66 65 72 65 6e 63 65 73 2e 22 | .attention.to.case.differences." | 
| 2c20 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75 72    65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 63 | ...(declare.(pure.t).(side-effec | 
| 2c40 | 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65    74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d 73 65 | t-free.t))...(let.((case-fold-se | 
| 2c60 | 61 72 63 68 20 69 67 6e 6f 72 65 2d 63 61 73 65    29 29 0a 20 20 20 20 28 73 2d 2d 74 72 75 74 68 | arch.ignore-case)).....(s--truth | 
| 2c80 | 79 3f 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68    2d 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 | y?.(string-match-p.(regexp-quote | 
| 2ca0 | 20 6e 65 65 64 6c 65 29 20 73 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 73 2d 65 71 75 61 6c 73 3f | .needle).s))))..(defun.s-equals? | 
| 2cc0 | 20 28 73 31 20 73 32 29 0a 20 20 22 49 73 20 53    31 20 65 71 75 61 6c 20 74 6f 20 53 32 3f 0a 0a | .(s1.s2)..."Is.S1.equal.to.S2?.. | 
| 2ce0 | 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65    20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 | This.is.a.simple.wrapper.around. | 
| 2d00 | 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 74    72 69 6e 67 2d 65 71 75 61 6c 27 2e 22 0a 20 20 | the.built-in.`string-equal'."... | 
| 2d20 | 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74    29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 | (declare.(pure.t).(side-effect-f | 
| 2d40 | 72 65 65 20 74 29 29 0a 20 20 28 73 74 72 69 6e    67 2d 65 71 75 61 6c 20 73 31 20 73 32 29 29 0a | ree.t))...(string-equal.s1.s2)). | 
| 2d60 | 0a 28 64 65 66 75 6e 20 73 2d 6c 65 73 73 3f 20    28 73 31 20 73 32 29 0a 20 20 22 49 73 20 53 31 | .(defun.s-less?.(s1.s2)..."Is.S1 | 
| 2d80 | 20 6c 65 73 73 20 74 68 61 6e 20 53 32 3f 0a 0a    54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 | .less.than.S2?..This.is.a.simple | 
| 2da0 | 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20    74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 73 74 | .wrapper.around.the.built-in.`st | 
| 2dc0 | 72 69 6e 67 2d 6c 65 73 73 70 27 2e 22 0a 20 20    28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 | ring-lessp'."...(declare.(pure.t | 
| 2de0 | 29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66    72 65 65 20 74 29 29 0a 20 20 28 73 74 72 69 6e | ).(side-effect-free.t))...(strin | 
| 2e00 | 67 2d 6c 65 73 73 70 20 73 31 20 73 32 29 29 0a    0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 65 | g-lessp.s1.s2))..(defun.s-matche | 
| 2e20 | 73 3f 20 28 72 65 67 65 78 70 20 73 20 26 6f 70    74 69 6f 6e 61 6c 20 73 74 61 72 74 29 0a 20 20 | s?.(regexp.s.&optional.start)... | 
| 2e40 | 22 44 6f 65 73 20 52 45 47 45 58 50 20 6d 61 74    63 68 20 53 3f 0a 49 66 20 53 54 41 52 54 20 69 | "Does.REGEXP.match.S?.If.START.i | 
| 2e60 | 73 20 6e 6f 6e 2d 6e 69 6c 20 74 68 65 20 73 65    61 72 63 68 20 73 74 61 72 74 73 20 61 74 20 74 | s.non-nil.the.search.starts.at.t | 
| 2e80 | 68 61 74 20 69 6e 64 65 78 2e 0a 0a 54 68 69 73    20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 | hat.index...This.is.a.simple.wra | 
| 2ea0 | 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20    62 75 69 6c 74 2d 69 6e 20 60 73 74 72 69 6e 67 | pper.around.the.built-in.`string | 
| 2ec0 | 2d 6d 61 74 63 68 2d 70 27 2e 22 0a 20 20 28 64    65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 | -match-p'."...(declare.(side-eff | 
| 2ee0 | 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28    73 2d 2d 74 72 75 74 68 79 3f 20 28 73 74 72 69 | ect-free.t))...(s--truthy?.(stri | 
| 2f00 | 6e 67 2d 6d 61 74 63 68 2d 70 20 72 65 67 65 78    70 20 73 20 73 74 61 72 74 29 29 29 0a 0a 28 64 | ng-match-p.regexp.s.start)))..(d | 
| 2f20 | 65 66 75 6e 20 73 2d 62 6c 61 6e 6b 3f 20 28 73    29 0a 20 20 22 49 73 20 53 20 6e 69 6c 20 6f 72 | efun.s-blank?.(s)..."Is.S.nil.or | 
| 2f40 | 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e    67 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 | .the.empty.string?"...(declare.( | 
| 2f60 | 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66    66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 | pure.t).(side-effect-free.t))... | 
| 2f80 | 28 6f 72 20 28 6e 75 6c 6c 20 73 29 20 28 73 74    72 69 6e 67 3d 20 22 22 20 73 29 29 29 0a 0a 28 | (or.(null.s).(string=."".s)))..( | 
| 2fa0 | 64 65 66 75 6e 20 73 2d 62 6c 61 6e 6b 2d 73 74    72 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 6e | defun.s-blank-str?.(s)..."Is.S.n | 
| 2fc0 | 69 6c 20 6f 72 20 74 68 65 20 65 6d 70 74 79 20    73 74 72 69 6e 67 20 6f 72 20 73 74 72 69 6e 67 | il.or.the.empty.string.or.string | 
| 2fe0 | 20 6f 6e 6c 79 20 63 6f 6e 74 61 69 6e 73 20 77    68 69 74 65 73 70 61 63 65 3f 22 0a 20 20 28 64 | .only.contains.whitespace?"...(d | 
| 3000 | 65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20    28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 | eclare.(pure.t).(side-effect-fre | 
| 3020 | 65 20 74 29 29 0a 20 20 28 6f 72 20 28 73 2d 62    6c 61 6e 6b 3f 20 73 29 20 28 73 2d 62 6c 61 6e | e.t))...(or.(s-blank?.s).(s-blan | 
| 3040 | 6b 3f 20 28 73 2d 74 72 69 6d 20 73 29 29 29 29    0a 0a 28 64 65 66 75 6e 20 73 2d 70 72 65 73 65 | k?.(s-trim.s))))..(defun.s-prese | 
| 3060 | 6e 74 3f 20 28 73 29 0a 20 20 22 49 73 20 53 20    61 6e 79 74 68 69 6e 67 20 62 75 74 20 6e 69 6c | nt?.(s)..."Is.S.anything.but.nil | 
| 3080 | 20 6f 72 20 74 68 65 20 65 6d 70 74 79 20 73 74    72 69 6e 67 3f 22 0a 20 20 28 64 65 63 6c 61 72 | .or.the.empty.string?"...(declar | 
| 30a0 | 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65    2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 | e.(pure.t).(side-effect-free.t)) | 
| 30c0 | 0a 20 20 28 6e 6f 74 20 28 73 2d 62 6c 61 6e 6b    3f 20 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | ...(not.(s-blank?.s)))..(defun.s | 
| 30e0 | 2d 70 72 65 73 65 6e 63 65 20 28 73 29 0a 20 20    22 52 65 74 75 72 6e 20 53 20 69 66 20 69 74 27 | -presence.(s)..."Return.S.if.it' | 
| 3100 | 73 20 60 73 2d 70 72 65 73 65 6e 74 3f 27 2c 20    6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e | s.`s-present?',.otherwise.return | 
| 3120 | 20 6e 69 6c 2e 22 0a 20 20 28 64 65 63 6c 61 72    65 20 28 70 75 72 65 20 74 29 20 28 73 69 64 65 | .nil."...(declare.(pure.t).(side | 
| 3140 | 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29    0a 20 20 28 61 6e 64 20 28 73 2d 70 72 65 73 65 | -effect-free.t))...(and.(s-prese | 
| 3160 | 6e 74 3f 20 73 29 20 73 29 29 0a 0a 28 64 65 66    75 6e 20 73 2d 6c 6f 77 65 72 63 61 73 65 3f 20 | nt?.s).s))..(defun.s-lowercase?. | 
| 3180 | 28 73 29 0a 20 20 22 41 72 65 20 61 6c 6c 20 74    68 65 20 6c 65 74 74 65 72 73 20 69 6e 20 53 20 | (s)..."Are.all.the.letters.in.S. | 
| 31a0 | 69 6e 20 6c 6f 77 65 72 20 63 61 73 65 3f 22 0a    20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 | in.lower.case?"...(declare.(side | 
| 31c0 | 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 29    0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d 66 | -effect-free.t))...(let.((case-f | 
| 31e0 | 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 6c 29 29    0a 20 20 20 20 28 6e 6f 74 20 28 73 74 72 69 6e | old-search.nil)).....(not.(strin | 
| 3200 | 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 75 70    70 65 72 3a 5d 5d 22 20 73 29 29 29 29 0a 0a 28 | g-match-p."[[:upper:]]".s))))..( | 
| 3220 | 64 65 66 75 6e 20 73 2d 75 70 70 65 72 63 61 73    65 3f 20 28 73 29 0a 20 20 22 41 72 65 20 61 6c | defun.s-uppercase?.(s)..."Are.al | 
| 3240 | 6c 20 74 68 65 20 6c 65 74 74 65 72 73 20 69 6e    20 53 20 69 6e 20 75 70 70 65 72 20 63 61 73 65 | l.the.letters.in.S.in.upper.case | 
| 3260 | 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73    69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 | ?"...(declare.(side-effect-free. | 
| 3280 | 74 29 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73    65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e 69 | t))...(let.((case-fold-search.ni | 
| 32a0 | 6c 29 29 0a 20 20 20 20 28 6e 6f 74 20 28 73 74    72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b | l)).....(not.(string-match-p."[[ | 
| 32c0 | 3a 6c 6f 77 65 72 3a 5d 5d 22 20 73 29 29 29 29    0a 0a 28 64 65 66 75 6e 20 73 2d 6d 69 78 65 64 | :lower:]]".s))))..(defun.s-mixed | 
| 32e0 | 63 61 73 65 3f 20 28 73 29 0a 20 20 22 41 72 65    20 74 68 65 72 65 20 62 6f 74 68 20 6c 6f 77 65 | case?.(s)..."Are.there.both.lowe | 
| 3300 | 72 20 63 61 73 65 20 61 6e 64 20 75 70 70 65 72    20 63 61 73 65 20 6c 65 74 74 65 72 73 20 69 6e | r.case.and.upper.case.letters.in | 
| 3320 | 20 53 3f 22 0a 20 20 28 6c 65 74 20 28 28 63 61    73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e | .S?"...(let.((case-fold-search.n | 
| 3340 | 69 6c 29 29 0a 20 20 20 20 28 73 2d 2d 74 72 75    74 68 79 3f 0a 20 20 20 20 20 28 61 6e 64 20 28 | il)).....(s--truthy?......(and.( | 
| 3360 | 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22    5b 5b 3a 6c 6f 77 65 72 3a 5d 5d 22 20 73 29 0a | string-match-p."[[:lower:]]".s). | 
| 3380 | 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e    67 2d 6d 61 74 63 68 2d 70 20 22 5b 5b 3a 75 70 | ..........(string-match-p."[[:up | 
| 33a0 | 70 65 72 3a 5d 5d 22 20 73 29 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 73 2d 63 61 70 69 74 61 6c | per:]]".s)))))..(defun.s-capital | 
| 33c0 | 69 7a 65 64 3f 20 28 73 29 0a 20 20 22 49 6e 20    53 2c 20 69 73 20 74 68 65 20 66 69 72 73 74 20 | ized?.(s)..."In.S,.is.the.first. | 
| 33e0 | 6c 65 74 74 65 72 20 75 70 70 65 72 20 63 61 73    65 2c 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 | letter.upper.case,.and.all.other | 
| 3400 | 20 6c 65 74 74 65 72 73 20 6c 6f 77 65 72 20 63    61 73 65 3f 22 0a 20 20 28 64 65 63 6c 61 72 65 | .letters.lower.case?"...(declare | 
| 3420 | 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72    65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 28 28 | .(side-effect-free.t))...(let.(( | 
| 3440 | 63 61 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68    20 6e 69 6c 29 29 0a 20 20 20 20 28 73 2d 2d 74 | case-fold-search.nil)).....(s--t | 
| 3460 | 72 75 74 68 79 3f 0a 20 20 20 20 20 28 73 74 72    69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5e 5b 5b | ruthy?......(string-match-p."^[[ | 
| 3480 | 3a 75 70 70 65 72 3a 5d 5d 5b 5e 5b 3a 75 70 70    65 72 3a 5d 5d 2a 24 22 20 73 29 29 29 29 0a 0a | :upper:]][^[:upper:]]*$".s)))).. | 
| 34a0 | 28 64 65 66 75 6e 20 73 2d 6e 75 6d 65 72 69 63    3f 20 28 73 29 0a 20 20 22 49 73 20 53 20 61 20 | (defun.s-numeric?.(s)..."Is.S.a. | 
| 34c0 | 6e 75 6d 62 65 72 3f 22 0a 20 20 28 64 65 63 6c    61 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 | number?"...(declare.(pure.t).(si | 
| 34e0 | 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74    29 29 0a 20 20 28 73 2d 2d 74 72 75 74 68 79 3f | de-effect-free.t))...(s--truthy? | 
| 3500 | 0a 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63    68 2d 70 20 22 5e 5b 30 2d 39 5d 2b 24 22 20 73 | ....(string-match-p."^[0-9]+$".s | 
| 3520 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 72 65    70 6c 61 63 65 20 28 6f 6c 64 20 6e 65 77 20 73 | )))..(defun.s-replace.(old.new.s | 
| 3540 | 29 0a 20 20 22 52 65 70 6c 61 63 65 73 20 4f 4c    44 20 77 69 74 68 20 4e 45 57 20 69 6e 20 53 2e | )..."Replaces.OLD.with.NEW.in.S. | 
| 3560 | 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70 75    72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 65 | "...(declare.(pure.t).(side-effe | 
| 3580 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 72    65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e | ct-free.t))...(replace-regexp-in | 
| 35a0 | 2d 73 74 72 69 6e 67 20 28 72 65 67 65 78 70 2d    71 75 6f 74 65 20 6f 6c 64 29 20 6e 65 77 20 73 | -string.(regexp-quote.old).new.s | 
| 35c0 | 20 74 20 74 29 29 0a 0a 28 64 65 66 61 6c 69 61    73 20 27 73 2d 72 65 70 6c 61 63 65 2d 72 65 67 | .t.t))..(defalias.'s-replace-reg | 
| 35e0 | 65 78 70 20 27 72 65 70 6c 61 63 65 2d 72 65 67    65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 29 0a 0a | exp.'replace-regexp-in-string).. | 
| 3600 | 28 64 65 66 75 6e 20 73 2d 2d 61 67 65 74 20 28    61 6c 69 73 74 20 6b 65 79 29 0a 20 20 22 47 65 | (defun.s--aget.(alist.key)..."Ge | 
| 3620 | 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 4b    45 59 20 69 6e 20 41 4c 49 53 54 2e 22 0a 20 20 | t.the.value.of.KEY.in.ALIST."... | 
| 3640 | 28 64 65 63 6c 61 72 65 20 28 70 75 72 65 20 74    29 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 | (declare.(pure.t).(side-effect-f | 
| 3660 | 72 65 65 20 74 29 29 0a 20 20 28 63 64 72 20 28    61 73 73 6f 63 2d 73 74 72 69 6e 67 20 6b 65 79 | ree.t))...(cdr.(assoc-string.key | 
| 3680 | 20 61 6c 69 73 74 29 29 29 0a 0a 28 64 65 66 75    6e 20 73 2d 72 65 70 6c 61 63 65 2d 61 6c 6c 20 | .alist)))..(defun.s-replace-all. | 
| 36a0 | 28 72 65 70 6c 61 63 65 6d 65 6e 74 73 20 73 29    0a 20 20 22 52 45 50 4c 41 43 45 4d 45 4e 54 53 | (replacements.s)..."REPLACEMENTS | 
| 36c0 | 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 63 6f    6e 73 2d 63 65 6c 6c 73 2e 20 45 61 63 68 20 60 | .is.a.list.of.cons-cells..Each.` | 
| 36e0 | 63 61 72 60 20 69 73 20 72 65 70 6c 61 63 65 64    20 77 69 74 68 20 60 63 64 72 60 20 69 6e 20 53 | car`.is.replaced.with.`cdr`.in.S | 
| 3700 | 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 70    75 72 65 20 74 29 20 28 73 69 64 65 2d 65 66 66 | ."...(declare.(pure.t).(side-eff | 
| 3720 | 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28    6c 65 74 20 28 28 63 61 73 65 2d 66 6f 6c 64 2d | ect-free.t))...(let.((case-fold- | 
| 3740 | 73 65 61 72 63 68 20 6e 69 6c 29 29 0a 20 20 20    28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d | search.nil))....(replace-regexp- | 
| 3760 | 69 6e 2d 73 74 72 69 6e 67 20 28 72 65 67 65 78    70 2d 6f 70 74 20 28 6d 61 70 63 61 72 20 27 63 | in-string.(regexp-opt.(mapcar.'c | 
| 3780 | 61 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ar.replacements))............... | 
| 37a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6c 61 6d 62 64 61 20 28 69 74 29 20 28 73 2d 2d | ...............(lambda.(it).(s-- | 
| 37c0 | 61 67 65 74 20 72 65 70 6c 61 63 65 6d 65 6e 74    73 20 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 | aget.replacements.it)).......... | 
| 37e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 73 20 74 20 74 29 29 29 0a 0a 28 64 | ....................s.t.t)))..(d | 
| 3800 | 65 66 75 6e 20 73 2d 64 6f 77 6e 63 61 73 65 20    28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 | efun.s-downcase.(s)..."Convert.S | 
| 3820 | 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 0a    0a 54 68 69 73 20 69 73 20 61 20 73 69 6d 70 6c | .to.lower.case...This.is.a.simpl | 
| 3840 | 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64    20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 60 64 | e.wrapper.around.the.built-in.`d | 
| 3860 | 6f 77 6e 63 61 73 65 27 2e 22 0a 20 20 28 64 65    63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 | owncase'."...(declare.(side-effe | 
| 3880 | 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 64    6f 77 6e 63 61 73 65 20 73 29 29 0a 0a 28 64 65 | ct-free.t))...(downcase.s))..(de | 
| 38a0 | 66 75 6e 20 73 2d 75 70 63 61 73 65 20 28 73 29    0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 6f | fun.s-upcase.(s)..."Convert.S.to | 
| 38c0 | 20 75 70 70 65 72 20 63 61 73 65 2e 0a 0a 54 68    69 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 | .upper.case...This.is.a.simple.w | 
| 38e0 | 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68    65 20 62 75 69 6c 74 2d 69 6e 20 60 75 70 63 61 | rapper.around.the.built-in.`upca | 
| 3900 | 73 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65    20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | se'."...(declare.(side-effect-fr | 
| 3920 | 65 65 20 74 29 29 0a 20 20 28 75 70 63 61 73 65    20 73 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 | ee.t))...(upcase.s))..(defun.s-c | 
| 3940 | 61 70 69 74 61 6c 69 7a 65 20 28 73 29 0a 20 20    22 43 6f 6e 76 65 72 74 20 53 20 66 69 72 73 74 | apitalize.(s)..."Convert.S.first | 
| 3960 | 20 77 6f 72 64 27 73 20 66 69 72 73 74 20 63 68    61 72 61 63 74 65 72 20 74 6f 20 75 70 70 65 72 | .word's.first.character.to.upper | 
| 3980 | 20 61 6e 64 20 74 68 65 20 72 65 73 74 20 74 6f    20 6c 6f 77 65 72 20 63 61 73 65 2e 22 0a 20 20 | .and.the.rest.to.lower.case."... | 
| 39a0 | 28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65    66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 | (declare.(side-effect-free.t)).. | 
| 39c0 | 20 28 63 6f 6e 63 61 74 20 28 75 70 63 61 73 65    20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30 20 | .(concat.(upcase.(substring.s.0. | 
| 39e0 | 31 29 29 20 28 64 6f 77 6e 63 61 73 65 20 28 73    75 62 73 74 72 69 6e 67 20 73 20 31 29 29 29 29 | 1)).(downcase.(substring.s.1)))) | 
| 3a00 | 0a 0a 28 64 65 66 75 6e 20 73 2d 74 69 74 6c 65    69 7a 65 20 28 73 29 0a 20 20 22 43 6f 6e 76 65 | ..(defun.s-titleize.(s)..."Conve | 
| 3a20 | 72 74 20 69 6e 20 53 20 65 61 63 68 20 77 6f 72    64 27 73 20 66 69 72 73 74 20 63 68 61 72 61 63 | rt.in.S.each.word's.first.charac | 
| 3a40 | 74 65 72 20 74 6f 20 75 70 70 65 72 20 61 6e 64    20 74 68 65 20 72 65 73 74 20 74 6f 20 6c 6f 77 | ter.to.upper.and.the.rest.to.low | 
| 3a60 | 65 72 20 63 61 73 65 2e 0a 0a 54 68 69 73 20 69    73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 | er.case...This.is.a.simple.wrapp | 
| 3a80 | 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 62 75    69 6c 74 2d 69 6e 20 60 63 61 70 69 74 61 6c 69 | er.around.the.built-in.`capitali | 
| 3aa0 | 7a 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65    20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | ze'."...(declare.(side-effect-fr | 
| 3ac0 | 65 65 20 74 29 29 0a 20 20 28 63 61 70 69 74 61    6c 69 7a 65 20 73 29 29 0a 0a 28 64 65 66 6d 61 | ee.t))...(capitalize.s))..(defma | 
| 3ae0 | 63 72 6f 20 73 2d 77 69 74 68 20 28 73 20 66 6f    72 6d 20 26 72 65 73 74 20 6d 6f 72 65 29 0a 20 | cro.s-with.(s.form.&rest.more).. | 
| 3b00 | 20 22 54 68 72 65 61 64 73 20 53 20 74 68 72 6f    75 67 68 20 74 68 65 20 66 6f 72 6d 73 2e 20 49 | ."Threads.S.through.the.forms..I | 
| 3b20 | 6e 73 65 72 74 73 20 53 20 61 73 20 74 68 65 20    6c 61 73 74 20 69 74 65 6d 0a 69 6e 20 74 68 65 | nserts.S.as.the.last.item.in.the | 
| 3b40 | 20 66 69 72 73 74 20 66 6f 72 6d 2c 20 6d 61 6b    69 6e 67 20 61 20 6c 69 73 74 20 6f 66 20 69 74 | .first.form,.making.a.list.of.it | 
| 3b60 | 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20 61 20    6c 69 73 74 0a 61 6c 72 65 61 64 79 2e 20 49 66 | .if.it.is.not.a.list.already..If | 
| 3b80 | 20 74 68 65 72 65 20 61 72 65 20 6d 6f 72 65 20    66 6f 72 6d 73 2c 20 69 6e 73 65 72 74 73 20 74 | .there.are.more.forms,.inserts.t | 
| 3ba0 | 68 65 20 66 69 72 73 74 20 66 6f 72 6d 20 61 73    20 74 68 65 0a 6c 61 73 74 20 69 74 65 6d 20 69 | he.first.form.as.the.last.item.i | 
| 3bc0 | 6e 20 73 65 63 6f 6e 64 20 66 6f 72 6d 2c 20 65    74 63 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 | n.second.form,.etc."...(declare. | 
| 3be0 | 28 64 65 62 75 67 20 28 66 6f 72 6d 20 26 72 65    73 74 20 5b 26 6f 72 20 28 66 75 6e 63 74 69 6f | (debug.(form.&rest.[&or.(functio | 
| 3c00 | 6e 20 26 72 65 73 74 20 66 6f 72 6d 29 20 66 62    6f 75 6e 64 70 5d 29 29 29 0a 20 20 28 69 66 20 | n.&rest.form).fboundp])))...(if. | 
| 3c20 | 28 6e 75 6c 6c 20 6d 6f 72 65 29 0a 20 20 20 20    20 20 28 69 66 20 28 6c 69 73 74 70 20 66 6f 72 | (null.more).......(if.(listp.for | 
| 3c40 | 6d 29 0a 20 20 20 20 20 20 20 20 20 20 60 28 2c    28 63 61 72 20 66 6f 72 6d 29 20 2c 40 28 63 64 | m)...........`(,(car.form).,@(cd | 
| 3c60 | 72 20 66 6f 72 6d 29 20 2c 73 29 0a 20 20 20 20    20 20 20 20 28 6c 69 73 74 20 66 6f 72 6d 20 73 | r.form).,s).........(list.form.s | 
| 3c80 | 29 29 0a 20 20 20 20 60 28 73 2d 77 69 74 68 20    28 73 2d 77 69 74 68 20 2c 73 20 2c 66 6f 72 6d | )).....`(s-with.(s-with.,s.,form | 
| 3ca0 | 29 20 2c 40 6d 6f 72 65 29 29 29 0a 0a 28 70 75    74 20 27 73 2d 77 69 74 68 20 27 6c 69 73 70 2d | ).,@more)))..(put.'s-with.'lisp- | 
| 3cc0 | 69 6e 64 65 6e 74 2d 66 75 6e 63 74 69 6f 6e 20    31 29 0a 0a 28 64 65 66 75 6e 20 73 2d 69 6e 64 | indent-function.1)..(defun.s-ind | 
| 3ce0 | 65 78 2d 6f 66 20 28 6e 65 65 64 6c 65 20 73 20    26 6f 70 74 69 6f 6e 61 6c 20 69 67 6e 6f 72 65 | ex-of.(needle.s.&optional.ignore | 
| 3d00 | 2d 63 61 73 65 29 0a 20 20 22 52 65 74 75 72 6e    73 20 66 69 72 73 74 20 69 6e 64 65 78 20 6f 66 | -case)..."Returns.first.index.of | 
| 3d20 | 20 4e 45 45 44 4c 45 20 69 6e 20 53 2c 20 6f 72    20 6e 69 6c 2e 0a 0a 49 66 20 49 47 4e 4f 52 45 | .NEEDLE.in.S,.or.nil...If.IGNORE | 
| 3d40 | 2d 43 41 53 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c    2c 20 74 68 65 20 63 6f 6d 70 61 72 69 73 6f 6e | -CASE.is.non-nil,.the.comparison | 
| 3d60 | 20 69 73 20 64 6f 6e 65 20 77 69 74 68 6f 75 74    20 70 61 79 69 6e 67 0a 61 74 74 65 6e 74 69 6f | .is.done.without.paying.attentio | 
| 3d80 | 6e 20 74 6f 20 63 61 73 65 20 64 69 66 66 65 72    65 6e 63 65 73 2e 22 0a 20 20 28 64 65 63 6c 61 | n.to.case.differences."...(decla | 
| 3da0 | 72 65 20 28 70 75 72 65 20 74 29 20 28 73 69 64    65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | re.(pure.t).(side-effect-free.t) | 
| 3dc0 | 29 0a 20 20 28 6c 65 74 20 28 28 63 61 73 65 2d    66 6f 6c 64 2d 73 65 61 72 63 68 20 69 67 6e 6f | )...(let.((case-fold-search.igno | 
| 3de0 | 72 65 2d 63 61 73 65 29 29 0a 20 20 20 20 28 73    74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 72 | re-case)).....(string-match-p.(r | 
| 3e00 | 65 67 65 78 70 2d 71 75 6f 74 65 20 6e 65 65 64    6c 65 29 20 73 29 29 29 0a 0a 28 64 65 66 75 6e | egexp-quote.needle).s)))..(defun | 
| 3e20 | 20 73 2d 72 65 76 65 72 73 65 20 28 73 29 0a 20    20 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 76 | .s-reverse.(s)..."Return.the.rev | 
| 3e40 | 65 72 73 65 20 6f 66 20 53 2e 22 0a 20 20 28 64    65 63 6c 61 72 65 20 28 70 75 72 65 20 74 29 20 | erse.of.S."...(declare.(pure.t). | 
| 3e60 | 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65    65 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 | (side-effect-free.t))...(save-ma | 
| 3e80 | 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 66    20 28 6d 75 6c 74 69 62 79 74 65 2d 73 74 72 69 | tch-data.....(if.(multibyte-stri | 
| 3ea0 | 6e 67 2d 70 20 73 29 0a 20 20 20 20 20 20 20 20    28 6c 65 74 20 28 28 69 6e 70 75 74 20 28 73 74 | ng-p.s).........(let.((input.(st | 
| 3ec0 | 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 73 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f | ring-to-list.s))...............o | 
| 3ee0 | 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 20 20    20 28 72 65 71 75 69 72 65 20 27 75 63 73 2d 6e | utput)...........(require.'ucs-n | 
| 3f00 | 6f 72 6d 61 6c 69 7a 65 29 0a 20 20 20 20 20 20    20 20 20 20 28 77 68 69 6c 65 20 69 6e 70 75 74 | ormalize)...........(while.input | 
| 3f20 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20    48 61 6e 64 6c 65 20 65 6e 74 69 72 65 20 67 72 | .............;;.Handle.entire.gr | 
| 3f40 | 61 70 68 65 6d 65 20 63 6c 75 73 74 65 72 20 61    73 20 61 20 73 69 6e 67 6c 65 20 75 6e 69 74 0a | apheme.cluster.as.a.single.unit. | 
| 3f60 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 67 72 61 70 68 65 6d 65 20 28 6c 69 73 | ............(let.((grapheme.(lis | 
| 3f80 | 74 20 28 70 6f 70 20 69 6e 70 75 74 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | t.(pop.input))))...............( | 
| 3fa0 | 77 68 69 6c 65 20 28 6d 65 6d 71 6c 20 28 63 61    72 20 69 6e 70 75 74 29 20 75 63 73 2d 6e 6f 72 | while.(memql.(car.input).ucs-nor | 
| 3fc0 | 6d 61 6c 69 7a 65 2d 63 6f 6d 62 69 6e 69 6e 67    2d 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 | malize-combining-chars)......... | 
| 3fe0 | 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 70    6f 70 20 69 6e 70 75 74 29 20 67 72 61 70 68 65 | ........(push.(pop.input).graphe | 
| 4000 | 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 74 71 20 6f 75 74 70 75 74 20 | me))...............(setq.output. | 
| 4020 | 28 6e 63 6f 6e 63 20 28 6e 72 65 76 65 72 73 65    20 67 72 61 70 68 65 6d 65 29 20 6f 75 74 70 75 | (nconc.(nreverse.grapheme).outpu | 
| 4040 | 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20    28 63 6f 6e 63 61 74 20 6f 75 74 70 75 74 29 29 | t))))...........(concat.output)) | 
| 4060 | 0a 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28    6e 72 65 76 65 72 73 65 20 28 73 74 72 69 6e 67 | .......(concat.(nreverse.(string | 
| 4080 | 2d 74 6f 2d 6c 69 73 74 20 73 29 29 29 29 29 29    0a 0a 28 64 65 66 75 6e 20 73 2d 6d 61 74 63 68 | -to-list.s))))))..(defun.s-match | 
| 40a0 | 2d 73 74 72 69 6e 67 73 2d 61 6c 6c 20 28 72 65    67 65 78 20 73 74 72 69 6e 67 29 0a 20 20 22 52 | -strings-all.(regex.string)..."R | 
| 40c0 | 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20    6d 61 74 63 68 65 73 20 66 6f 72 20 52 45 47 45 | eturn.a.list.of.matches.for.REGE | 
| 40e0 | 58 20 69 6e 20 53 54 52 49 4e 47 2e 0a 0a 45 61    63 68 20 65 6c 65 6d 65 6e 74 20 69 74 73 65 6c | X.in.STRING...Each.element.itsel | 
| 4100 | 66 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 6d    61 74 63 68 65 73 2c 20 61 73 20 70 65 72 0a 60 | f.is.a.list.of.matches,.as.per.` | 
| 4120 | 6d 61 74 63 68 2d 73 74 72 69 6e 67 27 2e 20 4d    75 6c 74 69 70 6c 65 20 6d 61 74 63 68 65 73 20 | match-string'..Multiple.matches. | 
| 4140 | 61 74 20 74 68 65 20 73 61 6d 65 20 70 6f 73 69    74 69 6f 6e 20 77 69 6c 6c 20 62 65 0a 69 67 6e | at.the.same.position.will.be.ign | 
| 4160 | 6f 72 65 64 20 61 66 74 65 72 20 74 68 65 20 66    69 72 73 74 2e 22 0a 20 20 28 64 65 63 6c 61 72 | ored.after.the.first."...(declar | 
| 4180 | 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66    72 65 65 20 74 29 29 0a 20 20 28 73 61 76 65 2d | e.(side-effect-free.t))...(save- | 
| 41a0 | 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 28    6c 65 74 20 28 28 61 6c 6c 2d 73 74 72 69 6e 67 | match-data.....(let.((all-string | 
| 41c0 | 73 20 28 29 29 0a 20 20 20 20 20 20 20 20 20 20    28 69 20 30 29 29 0a 20 20 20 20 20 20 28 77 68 | s.())...........(i.0)).......(wh | 
| 41e0 | 69 6c 65 20 28 61 6e 64 20 28 3c 20 69 20 28 6c    65 6e 67 74 68 20 73 74 72 69 6e 67 29 29 0a 20 | ile.(and.(<.i.(length.string)).. | 
| 4200 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 | .................(string-match.r | 
| 4220 | 65 67 65 78 20 73 74 72 69 6e 67 20 69 29 29 0a    20 20 20 20 20 20 20 20 28 73 65 74 71 20 69 20 | egex.string.i)).........(setq.i. | 
| 4240 | 28 31 2b 20 28 6d 61 74 63 68 2d 62 65 67 69 6e    6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 | (1+.(match-beginning.0)))....... | 
| 4260 | 20 20 28 6c 65 74 20 28 73 74 72 69 6e 67 73 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e | ..(let.(strings...............(n | 
| 4280 | 75 6d 2d 6d 61 74 63 68 65 73 20 28 2f 20 28 6c    65 6e 67 74 68 20 28 6d 61 74 63 68 2d 64 61 74 | um-matches.(/.(length.(match-dat | 
| 42a0 | 61 29 29 20 32 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6d 61 74 63 68 20 30 29 29 | a)).2))...............(match.0)) | 
| 42c0 | 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c    65 20 28 2f 3d 20 6d 61 74 63 68 20 6e 75 6d 2d | ...........(while.(/=.match.num- | 
| 42e0 | 6d 61 74 63 68 65 73 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 28 70 75 73 68 20 28 6d 61 74 63 | matches).............(push.(matc | 
| 4300 | 68 2d 73 74 72 69 6e 67 20 6d 61 74 63 68 20 73    74 72 69 6e 67 29 20 73 74 72 69 6e 67 73 29 0a | h-string.match.string).strings). | 
| 4320 | 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74    71 20 6d 61 74 63 68 20 28 31 2b 20 6d 61 74 63 | ............(setq.match.(1+.matc | 
| 4340 | 68 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    70 75 73 68 20 28 6e 72 65 76 65 72 73 65 20 73 | h)))...........(push.(nreverse.s | 
| 4360 | 74 72 69 6e 67 73 29 20 61 6c 6c 2d 73 74 72 69    6e 67 73 29 29 29 0a 20 20 20 20 20 20 28 6e 72 | trings).all-strings))).......(nr | 
| 4380 | 65 76 65 72 73 65 20 61 6c 6c 2d 73 74 72 69 6e    67 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | everse.all-strings))))..(defun.s | 
| 43a0 | 2d 6d 61 74 63 68 65 64 2d 70 6f 73 69 74 69 6f    6e 73 2d 61 6c 6c 20 28 72 65 67 65 78 70 20 73 | -matched-positions-all.(regexp.s | 
| 43c0 | 74 72 69 6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20    73 75 62 65 78 70 2d 64 65 70 74 68 29 0a 20 20 | tring.&optional.subexp-depth)... | 
| 43e0 | 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f    66 20 6d 61 74 63 68 65 64 20 70 6f 73 69 74 69 | "Return.a.list.of.matched.positi | 
| 4400 | 6f 6e 73 20 66 6f 72 20 52 45 47 45 58 50 20 69    6e 20 53 54 52 49 4e 47 2e 0a 53 55 42 45 58 50 | ons.for.REGEXP.in.STRING..SUBEXP | 
| 4420 | 2d 44 45 50 54 48 20 69 73 20 30 20 62 79 20 64    65 66 61 75 6c 74 2e 22 0a 20 20 28 64 65 63 6c | -DEPTH.is.0.by.default."...(decl | 
| 4440 | 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74    2d 66 72 65 65 20 74 29 29 0a 20 20 28 69 66 20 | are.(side-effect-free.t))...(if. | 
| 4460 | 28 6e 75 6c 6c 20 73 75 62 65 78 70 2d 64 65 70    74 68 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 | (null.subexp-depth).......(setq. | 
| 4480 | 73 75 62 65 78 70 2d 64 65 70 74 68 20 30 29 29    0a 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 | subexp-depth.0))...(save-match-d | 
| 44a0 | 61 74 61 0a 20 20 20 20 28 6c 65 74 20 28 28 70    6f 73 20 30 29 20 72 65 73 75 6c 74 29 0a 20 20 | ata.....(let.((pos.0).result)... | 
| 44c0 | 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20    28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 65 | ....(while.(and.(string-match.re | 
| 44e0 | 67 65 78 70 20 73 74 72 69 6e 67 20 70 6f 73 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | gexp.string.pos)................ | 
| 4500 | 20 20 20 28 3c 20 70 6f 73 20 28 6c 65 6e 67 74    68 20 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 | ...(<.pos.(length.string)))..... | 
| 4520 | 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20    28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 | ....(push.(cons.(match-beginning | 
| 4540 | 20 73 75 62 65 78 70 2d 64 65 70 74 68 29 20 28    6d 61 74 63 68 2d 65 6e 64 20 73 75 62 65 78 70 | .subexp-depth).(match-end.subexp | 
| 4560 | 2d 64 65 70 74 68 29 29 20 72 65 73 75 6c 74 29    0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 | -depth)).result).........(setq.p | 
| 4580 | 6f 73 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29    29 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 | os.(match-end.0))).......(nrever | 
| 45a0 | 73 65 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28    64 65 66 75 6e 20 73 2d 6d 61 74 63 68 20 28 72 | se.result))))..(defun.s-match.(r | 
| 45c0 | 65 67 65 78 70 20 73 20 26 6f 70 74 69 6f 6e 61    6c 20 73 74 61 72 74 29 0a 20 20 22 57 68 65 6e | egexp.s.&optional.start)..."When | 
| 45e0 | 20 74 68 65 20 67 69 76 65 6e 20 65 78 70 72 65    73 73 69 6f 6e 20 6d 61 74 63 68 65 73 20 74 68 | .the.given.expression.matches.th | 
| 4600 | 65 20 73 74 72 69 6e 67 2c 20 74 68 69 73 20 66    75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 | e.string,.this.function.returns. | 
| 4620 | 61 20 6c 69 73 74 0a 6f 66 20 74 68 65 20 77 68    6f 6c 65 20 6d 61 74 63 68 69 6e 67 20 73 74 72 | a.list.of.the.whole.matching.str | 
| 4640 | 69 6e 67 20 61 6e 64 20 61 20 73 74 72 69 6e 67    20 66 6f 72 20 65 61 63 68 20 6d 61 74 63 68 65 | ing.and.a.string.for.each.matche | 
| 4660 | 64 20 73 75 62 65 78 70 72 65 73 73 69 6f 6e 73    2e 0a 53 75 62 65 78 70 72 65 73 73 69 6f 6e 73 | d.subexpressions..Subexpressions | 
| 4680 | 20 74 68 61 74 20 64 69 64 6e 27 74 20 6d 61 74    63 68 20 61 72 65 20 72 65 70 72 65 73 65 6e 74 | .that.didn't.match.are.represent | 
| 46a0 | 65 64 20 62 79 20 6e 69 6c 20 65 6c 65 6d 65 6e    74 73 0a 69 6e 20 74 68 65 20 6c 69 73 74 2c 20 | ed.by.nil.elements.in.the.list,. | 
| 46c0 | 65 78 63 65 70 74 20 74 68 61 74 20 6e 6f 6e 2d    6d 61 74 63 68 69 6e 67 20 73 75 62 65 78 70 72 | except.that.non-matching.subexpr | 
| 46e0 | 65 73 73 69 6f 6e 73 20 61 74 20 74 68 65 20 65    6e 64 0a 6f 66 20 52 45 47 45 58 50 20 6d 69 67 | essions.at.the.end.of.REGEXP.mig | 
| 4700 | 68 74 20 6e 6f 74 20 61 70 70 65 61 72 20 61 74    20 61 6c 6c 20 69 6e 20 74 68 65 20 6c 69 73 74 | ht.not.appear.at.all.in.the.list | 
| 4720 | 2e 20 20 54 68 61 74 20 69 73 2c 20 74 68 65 0a    72 65 74 75 72 6e 65 64 20 6c 69 73 74 20 63 61 | ...That.is,.the.returned.list.ca | 
| 4740 | 6e 20 62 65 20 73 68 6f 72 74 65 72 20 74 68 61    6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 | n.be.shorter.than.the.number.of. | 
| 4760 | 73 75 62 65 78 70 72 65 73 73 69 6f 6e 73 20 69    6e 0a 52 45 47 45 58 50 20 70 6c 75 73 20 6f 6e | subexpressions.in.REGEXP.plus.on | 
| 4780 | 65 2e 20 20 49 66 20 52 45 47 45 58 50 20 64 69    64 20 6e 6f 74 20 6d 61 74 63 68 20 74 68 65 20 | e...If.REGEXP.did.not.match.the. | 
| 47a0 | 72 65 74 75 72 6e 65 64 20 76 61 6c 75 65 20 69    73 0a 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 20 | returned.value.is.an.empty.list. | 
| 47c0 | 28 6e 69 6c 29 2e 0a 0a 57 68 65 6e 20 53 54 41    52 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 20 74 68 | (nil)...When.START.is.non-nil.th | 
| 47e0 | 65 20 73 65 61 72 63 68 20 77 69 6c 6c 20 73 74    61 72 74 20 61 74 20 74 68 61 74 20 69 6e 64 65 | e.search.will.start.at.that.inde | 
| 4800 | 78 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28    73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | x."...(declare.(side-effect-free | 
| 4820 | 20 74 29 29 0a 20 20 28 73 61 76 65 2d 6d 61 74    63 68 2d 64 61 74 61 0a 20 20 20 20 28 69 66 20 | .t))...(save-match-data.....(if. | 
| 4840 | 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 72 65    67 65 78 70 20 73 20 73 74 61 72 74 29 0a 20 20 | (string-match.regexp.s.start)... | 
| 4860 | 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 74    63 68 2d 64 61 74 61 2d 6c 69 73 74 20 28 6d 61 | ......(let.((match-data-list.(ma | 
| 4880 | 74 63 68 2d 64 61 74 61 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 | tch-data))...............result) | 
| 48a0 | 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c    65 20 6d 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 | ...........(while.match-data-lis | 
| 48c0 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c    65 74 2a 20 28 28 62 65 67 20 28 63 61 72 20 6d | t.............(let*.((beg.(car.m | 
| 48e0 | 61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | atch-data-list))................ | 
| 4900 | 20 20 20 20 28 65 6e 64 20 28 63 61 64 72 20 6d    61 74 63 68 2d 64 61 74 61 2d 6c 69 73 74 29 29 | ....(end.(cadr.match-data-list)) | 
| 4920 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 73 75 62 73 20 28 69 66 20 28 61 | ....................(subs.(if.(a | 
| 4940 | 6e 64 20 62 65 67 20 65 6e 64 29 20 28 73 75 62    73 74 72 69 6e 67 20 73 20 62 65 67 20 65 6e 64 | nd.beg.end).(substring.s.beg.end | 
| 4960 | 29 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 | ).nil)))...............(setq.res | 
| 4980 | 75 6c 74 20 28 63 6f 6e 73 20 73 75 62 73 20 72    65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 20 | ult.(cons.subs.result))......... | 
| 49a0 | 20 20 20 20 20 20 28 73 65 74 71 20 6d 61 74 63    68 2d 64 61 74 61 2d 6c 69 73 74 0a 20 20 20 20 | ......(setq.match-data-list..... | 
| 49c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 63 64 64 72 20 6d 61 74 63 68 2d 64 61 74 61 | ................(cddr.match-data | 
| 49e0 | 2d 6c 69 73 74 29 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 | -list))))...........(nreverse.re | 
| 4a00 | 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 75    6e 20 73 2d 73 6c 69 63 65 2d 61 74 20 28 72 65 | sult)))))..(defun.s-slice-at.(re | 
| 4a20 | 67 65 78 70 20 73 29 0a 20 20 22 53 6c 69 63 65    73 20 53 20 75 70 20 61 74 20 65 76 65 72 79 20 | gexp.s)..."Slices.S.up.at.every. | 
| 4a40 | 69 6e 64 65 78 20 6d 61 74 63 68 69 6e 67 20 52    45 47 45 58 50 2e 22 0a 20 20 28 64 65 63 6c 61 | index.matching.REGEXP."...(decla | 
| 4a60 | 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d    66 72 65 65 20 74 29 29 0a 20 20 28 69 66 20 28 | re.(side-effect-free.t))...(if.( | 
| 4a80 | 73 2d 62 6c 61 6e 6b 3f 20 73 29 0a 20 20 20 20    20 20 28 6c 69 73 74 20 73 29 0a 20 20 20 20 28 | s-blank?.s).......(list.s).....( | 
| 4aa0 | 6c 65 74 20 28 73 73 29 0a 20 20 20 20 20 20 28    77 68 69 6c 65 20 28 6e 6f 74 20 28 73 2d 62 6c | let.(ss).......(while.(not.(s-bl | 
| 4ac0 | 61 6e 6b 3f 20 73 29 29 0a 20 20 20 20 20 20 20    20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 | ank?.s)).........(save-match-dat | 
| 4ae0 | 61 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 69 20 28 73 74 72 69 6e 67 2d 6d 61 74 | a...........(let.((i.(string-mat | 
| 4b00 | 63 68 20 72 65 67 65 78 70 20 73 20 31 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 | ch.regexp.s.1))).............(if | 
| 4b20 | 20 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 73 65 74 71 20 73 73 20 28 63 6f 6e | .i.................(setq.ss.(con | 
| 4b40 | 73 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 30    20 69 29 20 73 73 29 0a 20 20 20 20 20 20 20 20 | s.(substring.s.0.i).ss)......... | 
| 4b60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 20    28 73 75 62 73 74 72 69 6e 67 20 73 20 69 29 29 | ..............s.(substring.s.i)) | 
| 4b80 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    73 65 74 71 20 73 73 20 28 63 6f 6e 73 20 73 20 | ...............(setq.ss.(cons.s. | 
| 4ba0 | 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 73 20 22 22 29 29 29 29 | ss).....................s."")))) | 
| 4bc0 | 29 0a 20 20 20 20 20 20 28 6e 72 65 76 65 72 73    65 20 73 73 29 29 29 29 0a 0a 28 64 65 66 75 6e | ).......(nreverse.ss))))..(defun | 
| 4be0 | 20 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 28    73 29 0a 20 20 22 53 70 6c 69 74 20 53 20 69 6e | .s-split-words.(s)..."Split.S.in | 
| 4c00 | 74 6f 20 6c 69 73 74 20 6f 66 20 77 6f 72 64 73    2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 | to.list.of.words."...(declare.(s | 
| 4c20 | 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20    74 29 29 0a 20 20 28 73 2d 73 70 6c 69 74 0a 20 | ide-effect-free.t))...(s-split.. | 
| 4c40 | 20 20 22 5b 5e 5b 3a 77 6f 72 64 3a 5d 30 2d 39    5d 2b 22 0a 20 20 20 28 6c 65 74 20 28 28 63 61 | .."[^[:word:]0-9]+"....(let.((ca | 
| 4c60 | 73 65 2d 66 6f 6c 64 2d 73 65 61 72 63 68 20 6e    69 6c 29 29 0a 20 20 20 20 20 28 72 65 70 6c 61 | se-fold-search.nil))......(repla | 
| 4c80 | 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72    69 6e 67 0a 20 20 20 20 20 20 22 5c 5c 28 5b 5b | ce-regexp-in-string......."\\([[ | 
| 4ca0 | 3a 6c 6f 77 65 72 3a 5d 5d 5c 5c 29 5c 5c 28 5b    5b 3a 75 70 70 65 72 3a 5d 5d 5c 5c 29 22 20 22 | :lower:]]\\)\\([[:upper:]]\\)"." | 
| 4cc0 | 5c 5c 31 20 5c 5c 32 22 0a 20 20 20 20 20 20 28    72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 | \\1.\\2".......(replace-regexp-i | 
| 4ce0 | 6e 2d 73 74 72 69 6e 67 20 22 5c 5c 28 5b 5b 3a    75 70 70 65 72 3a 5d 5d 5c 5c 29 5c 5c 28 5b 5b | n-string."\\([[:upper:]]\\)\\([[ | 
| 4d00 | 3a 75 70 70 65 72 3a 5d 5d 5b 30 2d 39 5b 3a 6c    6f 77 65 72 3a 5d 5d 5c 5c 29 22 20 22 5c 5c 31 | :upper:]][0-9[:lower:]]\\)"."\\1 | 
| 4d20 | 20 5c 5c 32 22 20 73 29 29 29 0a 20 20 20 74 29    29 0a 0a 28 64 65 66 75 6e 20 73 2d 2d 6d 61 70 | .\\2".s)))....t))..(defun.s--map | 
| 4d40 | 63 61 72 2d 68 65 61 64 20 28 66 6e 2d 68 65 61    64 20 66 6e 2d 72 65 73 74 20 6c 69 73 74 29 0a | car-head.(fn-head.fn-rest.list). | 
| 4d60 | 20 20 22 4c 69 6b 65 20 4d 41 50 43 41 52 2c 20    62 75 74 20 61 70 70 6c 69 65 73 20 61 20 64 69 | .."Like.MAPCAR,.but.applies.a.di | 
| 4d80 | 66 66 65 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e    20 74 6f 20 74 68 65 20 66 69 72 73 74 20 65 6c | fferent.function.to.the.first.el | 
| 4da0 | 65 6d 65 6e 74 2e 22 0a 20 20 28 69 66 20 6c 69    73 74 0a 20 20 20 20 20 20 28 63 6f 6e 73 20 28 | ement."...(if.list.......(cons.( | 
| 4dc0 | 66 75 6e 63 61 6c 6c 20 66 6e 2d 68 65 61 64 20    28 63 61 72 20 6c 69 73 74 29 29 20 28 6d 61 70 | funcall.fn-head.(car.list)).(map | 
| 4de0 | 63 61 72 20 66 6e 2d 72 65 73 74 20 28 63 64 72    20 6c 69 73 74 29 29 29 29 29 0a 0a 28 64 65 66 | car.fn-rest.(cdr.list)))))..(def | 
| 4e00 | 75 6e 20 73 2d 6c 6f 77 65 72 2d 63 61 6d 65 6c    2d 63 61 73 65 20 28 73 29 0a 20 20 22 43 6f 6e | un.s-lower-camel-case.(s)..."Con | 
| 4e20 | 76 65 72 74 20 53 20 74 6f 20 6c 6f 77 65 72 43    61 6d 65 6c 43 61 73 65 2e 22 0a 20 20 28 64 65 | vert.S.to.lowerCamelCase."...(de | 
| 4e40 | 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65    63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 73 | clare.(side-effect-free.t))...(s | 
| 4e60 | 2d 6a 6f 69 6e 20 22 22 20 28 73 2d 2d 6d 61 70    63 61 72 2d 68 65 61 64 20 27 64 6f 77 6e 63 61 | -join."".(s--mapcar-head.'downca | 
| 4e80 | 73 65 20 27 63 61 70 69 74 61 6c 69 7a 65 20 28    73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 | se.'capitalize.(s-split-words.s) | 
| 4ea0 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 75 70    70 65 72 2d 63 61 6d 65 6c 2d 63 61 73 65 20 28 | )))..(defun.s-upper-camel-case.( | 
| 4ec0 | 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20    74 6f 20 55 70 70 65 72 43 61 6d 65 6c 43 61 73 | s)..."Convert.S.to.UpperCamelCas | 
| 4ee0 | 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28    73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 65 65 | e."...(declare.(side-effect-free | 
| 4f00 | 20 74 29 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22    22 20 28 6d 61 70 63 61 72 20 27 63 61 70 69 74 | .t))...(s-join."".(mapcar.'capit | 
| 4f20 | 61 6c 69 7a 65 20 28 73 2d 73 70 6c 69 74 2d 77    6f 72 64 73 20 73 29 29 29 29 0a 0a 28 64 65 66 | alize.(s-split-words.s))))..(def | 
| 4f40 | 75 6e 20 73 2d 73 6e 61 6b 65 2d 63 61 73 65 20    28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 | un.s-snake-case.(s)..."Convert.S | 
| 4f60 | 20 74 6f 20 73 6e 61 6b 65 5f 63 61 73 65 2e 22    0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 | .to.snake_case."...(declare.(sid | 
| 4f80 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29    29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 5f 22 20 | e-effect-free.t))...(s-join."_". | 
| 4fa0 | 28 6d 61 70 63 61 72 20 27 64 6f 77 6e 63 61 73    65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 | (mapcar.'downcase.(s-split-words | 
| 4fc0 | 20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73    2d 64 61 73 68 65 64 2d 77 6f 72 64 73 20 28 73 | .s))))..(defun.s-dashed-words.(s | 
| 4fe0 | 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74    6f 20 64 61 73 68 65 64 2d 77 6f 72 64 73 2e 22 | )..."Convert.S.to.dashed-words." | 
| 5000 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64    65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | ...(declare.(side-effect-free.t) | 
| 5020 | 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 2d 22 20    28 6d 61 70 63 61 72 20 27 64 6f 77 6e 63 61 73 | )...(s-join."-".(mapcar.'downcas | 
| 5040 | 65 20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73    20 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 | e.(s-split-words.s))))..(defun.s | 
| 5060 | 2d 73 70 61 63 65 64 2d 77 6f 72 64 73 20 28 73    29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74 | -spaced-words.(s)..."Convert.S.t | 
| 5080 | 6f 20 73 70 61 63 65 64 20 77 6f 72 64 73 2e 22    0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64 | o.spaced.words."...(declare.(sid | 
| 50a0 | 65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29    29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 20 22 20 | e-effect-free.t))...(s-join.".". | 
| 50c0 | 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 73    29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 61 | (s-split-words.s)))..(defun.s-ca | 
| 50e0 | 70 69 74 61 6c 69 7a 65 64 2d 77 6f 72 64 73 20    28 73 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 | pitalized-words.(s)..."Convert.S | 
| 5100 | 20 74 6f 20 43 61 70 69 74 61 6c 69 7a 65 64 20    77 6f 72 64 73 2e 22 0a 20 20 28 64 65 63 6c 61 | .to.Capitalized.words."...(decla | 
| 5120 | 72 65 20 28 73 69 64 65 2d 65 66 66 65 63 74 2d    66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 74 20 | re.(side-effect-free.t))...(let. | 
| 5140 | 28 28 77 6f 72 64 73 20 28 73 2d 73 70 6c 69 74    2d 77 6f 72 64 73 20 73 29 29 29 0a 20 20 20 20 | ((words.(s-split-words.s)))..... | 
| 5160 | 28 73 2d 6a 6f 69 6e 20 22 20 22 20 28 63 6f 6e    73 20 28 63 61 70 69 74 61 6c 69 7a 65 20 28 63 | (s-join.".".(cons.(capitalize.(c | 
| 5180 | 61 72 20 77 6f 72 64 73 29 29 20 28 6d 61 70 63    61 72 20 27 64 6f 77 6e 63 61 73 65 20 28 63 64 | ar.words)).(mapcar.'downcase.(cd | 
| 51a0 | 72 20 77 6f 72 64 73 29 29 29 29 29 29 0a 0a 28    64 65 66 75 6e 20 73 2d 74 69 74 6c 65 69 7a 65 | r.words))))))..(defun.s-titleize | 
| 51c0 | 64 2d 77 6f 72 64 73 20 28 73 29 0a 20 20 22 43    6f 6e 76 65 72 74 20 53 20 74 6f 20 54 69 74 6c | d-words.(s)..."Convert.S.to.Titl | 
| 51e0 | 65 69 7a 65 64 20 57 6f 72 64 73 2e 22 0a 20 20    28 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 | eized.Words."...(declare.(side-e | 
| 5200 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20    20 28 73 2d 6a 6f 69 6e 20 22 20 22 20 28 6d 61 | ffect-free.t))...(s-join.".".(ma | 
| 5220 | 70 63 61 72 20 27 73 2d 74 69 74 6c 65 69 7a 65    20 28 73 2d 73 70 6c 69 74 2d 77 6f 72 64 73 20 | pcar.'s-titleize.(s-split-words. | 
| 5240 | 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 2d    77 6f 72 64 2d 69 6e 69 74 69 61 6c 73 20 28 73 | s))))..(defun.s-word-initials.(s | 
| 5260 | 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 53 20 74    6f 20 69 74 73 20 69 6e 69 74 69 61 6c 73 2e 22 | )..."Convert.S.to.its.initials." | 
| 5280 | 0a 20 20 28 64 65 63 6c 61 72 65 20 28 73 69 64    65 2d 65 66 66 65 63 74 2d 66 72 65 65 20 74 29 | ...(declare.(side-effect-free.t) | 
| 52a0 | 29 0a 20 20 28 73 2d 6a 6f 69 6e 20 22 22 20 28    6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 | )...(s-join."".(mapcar.(lambda.( | 
| 52c0 | 73 73 29 20 28 73 75 62 73 74 72 69 6e 67 20 73    73 20 30 20 31 29 29 0a 20 20 20 20 20 20 20 20 | ss).(substring.ss.0.1))......... | 
| 52e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 2d    73 70 6c 69 74 2d 77 6f 72 64 73 20 73 29 29 29 | .............(s-split-words.s))) | 
| 5300 | 29 0a 0a 3b 3b 20 45 72 72 6f 72 73 20 66 6f 72    20 73 2d 66 6f 72 6d 61 74 0a 28 70 72 6f 67 6e | )..;;.Errors.for.s-format.(progn | 
| 5320 | 0a 20 20 28 70 75 74 20 27 73 2d 66 6f 72 6d 61    74 2d 72 65 73 6f 6c 76 65 0a 20 20 20 20 20 20 | ...(put.'s-format-resolve....... | 
| 5340 | 20 27 65 72 72 6f 72 2d 63 6f 6e 64 69 74 69 6f    6e 73 0a 20 20 20 20 20 20 20 27 28 65 72 72 6f | .'error-conditions........'(erro | 
| 5360 | 72 20 73 2d 66 6f 72 6d 61 74 20 73 2d 66 6f 72    6d 61 74 2d 72 65 73 6f 6c 76 65 29 29 0a 20 20 | r.s-format.s-format-resolve))... | 
| 5380 | 28 70 75 74 20 27 73 2d 66 6f 72 6d 61 74 2d 72    65 73 6f 6c 76 65 0a 20 20 20 20 20 20 20 27 65 | (put.'s-format-resolve........'e | 
| 53a0 | 72 72 6f 72 2d 6d 65 73 73 61 67 65 0a 20 20 20    20 20 20 20 22 43 61 6e 6e 6f 74 20 72 65 73 6f | rror-message........"Cannot.reso | 
| 53c0 | 6c 76 65 20 61 20 74 65 6d 70 6c 61 74 65 20 74    6f 20 76 61 6c 75 65 73 22 29 29 0a 0a 28 64 65 | lve.a.template.to.values"))..(de | 
| 53e0 | 66 75 6e 20 73 2d 66 6f 72 6d 61 74 20 28 74 65    6d 70 6c 61 74 65 20 72 65 70 6c 61 63 65 72 20 | fun.s-format.(template.replacer. | 
| 5400 | 26 6f 70 74 69 6f 6e 61 6c 20 65 78 74 72 61 29    0a 20 20 22 46 6f 72 6d 61 74 20 54 45 4d 50 4c | &optional.extra)..."Format.TEMPL | 
| 5420 | 41 54 45 20 77 69 74 68 20 74 68 65 20 66 75 6e    63 74 69 6f 6e 20 52 45 50 4c 41 43 45 52 2e 0a | ATE.with.the.function.REPLACER.. | 
| 5440 | 0a 52 45 50 4c 41 43 45 52 20 74 61 6b 65 73 20    61 6e 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 | .REPLACER.takes.an.argument.of.t | 
| 5460 | 68 65 20 66 6f 72 6d 61 74 20 76 61 72 69 61 62    6c 65 20 61 6e 64 20 6f 70 74 69 6f 6e 61 6c 6c | he.format.variable.and.optionall | 
| 5480 | 79 0a 61 6e 20 65 78 74 72 61 20 61 72 67 75 6d    65 6e 74 20 77 68 69 63 68 20 69 73 20 74 68 65 | y.an.extra.argument.which.is.the | 
| 54a0 | 20 45 58 54 52 41 20 76 61 6c 75 65 20 66 72 6f    6d 20 74 68 65 20 63 61 6c 6c 20 74 6f 0a 60 73 | .EXTRA.value.from.the.call.to.`s | 
| 54c0 | 2d 66 6f 72 6d 61 74 27 2e 0a 0a 53 65 76 65 72    61 6c 20 73 74 61 6e 64 61 72 64 20 60 73 2d 66 | -format'...Several.standard.`s-f | 
| 54e0 | 6f 72 6d 61 74 27 20 68 65 6c 70 65 72 20 66 75    6e 63 74 69 6f 6e 73 20 61 72 65 20 72 65 63 6f | ormat'.helper.functions.are.reco | 
| 5500 | 67 6e 69 7a 65 64 20 61 6e 64 0a 61 64 61 70 74    65 64 20 66 6f 72 20 74 68 69 73 3a 0a 0a 20 20 | gnized.and.adapted.for.this:.... | 
| 5520 | 20 20 28 73 2d 66 6f 72 6d 61 74 20 5c 22 24 7b    6e 61 6d 65 7d 5c 22 20 5c 5c 3d 27 67 65 74 68 | ..(s-format.\"${name}\".\\='geth | 
| 5540 | 61 73 68 20 68 61 73 68 2d 74 61 62 6c 65 29 0a    20 20 20 20 28 73 2d 66 6f 72 6d 61 74 20 5c 22 | ash.hash-table).....(s-format.\" | 
| 5560 | 24 7b 6e 61 6d 65 7d 5c 22 20 5c 5c 3d 27 61 67    65 74 20 61 6c 69 73 74 29 0a 20 20 20 20 28 73 | ${name}\".\\='aget.alist).....(s | 
| 5580 | 2d 66 6f 72 6d 61 74 20 5c 22 24 30 5c 22 20 5c    5c 3d 27 65 6c 74 20 73 65 71 75 65 6e 63 65 29 | -format.\"$0\".\\='elt.sequence) | 
| 55a0 | 0a 0a 54 68 65 20 52 45 50 4c 41 43 45 52 20 66    75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65 20 75 | ..The.REPLACER.function.may.be.u | 
| 55c0 | 73 65 64 20 74 6f 20 64 6f 20 61 6e 79 20 6f 74    68 65 72 20 6b 69 6e 64 20 6f 66 0a 74 72 61 6e | sed.to.do.any.other.kind.of.tran | 
| 55e0 | 73 66 6f 72 6d 61 74 69 6f 6e 2e 22 0a 20 20 28    6c 65 74 20 28 28 73 61 76 65 64 2d 6d 61 74 63 | sformation."...(let.((saved-matc | 
| 5600 | 68 2d 64 61 74 61 20 28 6d 61 74 63 68 2d 64 61    74 61 29 29 29 0a 20 20 20 20 28 75 6e 77 69 6e | h-data.(match-data))).....(unwin | 
| 5620 | 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20    20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 | d-protect.........(replace-regex | 
| 5640 | 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20    20 20 20 20 20 22 5c 5c 24 5c 5c 28 7b 5c 5c 28 | p-in-string.........."\\$\\({\\( | 
| 5660 | 5b 5e 7d 5d 2b 5c 5c 29 7d 5c 5c 7c 5b 30 2d 39    5d 2b 5c 5c 29 22 0a 20 20 20 20 20 20 20 20 20 | [^}]+\\)}\\|[0-9]+\\)".......... | 
| 5680 | 28 6c 61 6d 62 64 61 20 28 6d 64 29 0a 20 20 20    20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 | (lambda.(md)............(let.((v | 
| 56a0 | 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 6c 65 74 20 28 28 6d 20 28 6d | ar...................(let.((m.(m | 
| 56c0 | 61 74 63 68 2d 73 74 72 69 6e 67 20 32 20 6d 64    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | atch-string.2.md)))............. | 
| 56e0 | 20 20 20 20 20 20 20 20 28 69 66 20 6d 20 6d 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........(if.m.m................. | 
| 5700 | 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 6f    2d 6e 75 6d 62 65 72 20 28 6d 61 74 63 68 2d 73 | ......(string-to-number.(match-s | 
| 5720 | 74 72 69 6e 67 20 31 20 6d 64 29 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tring.1.md)))))................. | 
| 5740 | 20 28 72 65 70 6c 61 63 65 72 2d 6d 61 74 63 68    2d 64 61 74 61 20 28 6d 61 74 63 68 2d 64 61 74 | .(replacer-match-data.(match-dat | 
| 5760 | 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 | a)))..............(unwind-protec | 
| 5780 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6c 65 74 20 28 28 76 0a 20 20 20 20 | t..................(let.((v..... | 
| 57a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 | ....................(cond....... | 
| 57c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 | ...................((eq.replacer | 
| 57e0 | 20 27 67 65 74 68 61 73 68 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .'gethash)...................... | 
| 5800 | 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65    70 6c 61 63 65 72 20 76 61 72 20 65 78 74 72 61 | .....(funcall.replacer.var.extra | 
| 5820 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 | ))..........................((eq | 
| 5840 | 20 72 65 70 6c 61 63 65 72 20 27 61 67 65 74 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .replacer.'aget)................ | 
| 5860 | 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63    61 6c 6c 20 27 73 2d 2d 61 67 65 74 20 65 78 74 | ...........(funcall.'s--aget.ext | 
| 5880 | 72 61 20 76 61 72 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ra.var))........................ | 
| 58a0 | 20 20 28 28 65 71 20 72 65 70 6c 61 63 65 72 20    27 65 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 | ..((eq.replacer.'elt)........... | 
| 58c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 66 75 6e 63 61 6c 6c 20 72 65 70 6c 61 63 65 | ................(funcall.replace | 
| 58e0 | 72 20 65 78 74 72 61 20 76 61 72 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r.extra.var))................... | 
| 5900 | 20 20 20 20 20 20 20 28 28 65 71 20 72 65 70 6c    61 63 65 72 20 27 6f 72 65 66 29 0a 20 20 20 20 | .......((eq.replacer.'oref)..... | 
| 5920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 23 | ......................(funcall.# | 
| 5940 | 27 73 6c 6f 74 2d 76 61 6c 75 65 20 65 78 74 72    61 20 28 69 6e 74 65 72 6e 20 76 61 72 29 29 29 | 'slot-value.extra.(intern.var))) | 
| 5960 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 | ..........................(t.... | 
| 5980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 74 63 | .......................(set-matc | 
| 59a0 | 68 2d 64 61 74 61 20 73 61 76 65 64 2d 6d 61 74    63 68 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 | h-data.saved-match-data)........ | 
| 59c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 69 66 20 65 78 74 72 61 0a 20 20 20 | ...................(if.extra.... | 
| 59e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 | ...........................(func | 
| 5a00 | 61 6c 6c 20 72 65 70 6c 61 63 65 72 20 76 61 72    20 65 78 74 72 61 29 0a 20 20 20 20 20 20 20 20 | all.replacer.var.extra)......... | 
| 5a20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 | ....................(funcall.rep | 
| 5a40 | 6c 61 63 65 72 20 76 61 72 29 29 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lacer.var))))))................. | 
| 5a60 | 20 20 20 28 69 66 20 76 20 28 66 6f 72 6d 61 74    20 22 25 73 22 20 76 29 20 28 73 69 67 6e 61 6c | ...(if.v.(format."%s".v).(signal | 
| 5a80 | 20 27 73 2d 66 6f 72 6d 61 74 2d 72 65 73 6f 6c    76 65 20 6d 64 29 29 29 0a 20 20 20 20 20 20 20 | .'s-format-resolve.md)))........ | 
| 5aa0 | 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 74    63 68 2d 64 61 74 61 20 72 65 70 6c 61 63 65 72 | ........(set-match-data.replacer | 
| 5ac0 | 2d 6d 61 74 63 68 2d 64 61 74 61 29 29 29 29 0a    20 20 20 20 20 20 20 20 20 74 65 6d 70 6c 61 74 | -match-data))))..........templat | 
| 5ae0 | 65 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 65    65 64 20 6c 69 74 65 72 61 6c 20 74 6f 20 6d 61 | e..........;;.Need.literal.to.ma | 
| 5b00 | 6b 65 20 73 75 72 65 20 69 74 20 77 6f 72 6b 73    0a 20 20 20 20 20 20 20 20 20 74 20 74 29 0a 20 | ke.sure.it.works..........t.t).. | 
| 5b20 | 20 20 20 20 20 28 73 65 74 2d 6d 61 74 63 68 2d    64 61 74 61 20 73 61 76 65 64 2d 6d 61 74 63 68 | .....(set-match-data.saved-match | 
| 5b40 | 2d 64 61 74 61 29 29 29 29 0a 0a 28 64 65 66 76    61 72 20 73 2d 6c 65 78 2d 76 61 6c 75 65 2d 61 | -data))))..(defvar.s-lex-value-a | 
| 5b60 | 73 2d 6c 69 73 70 20 6e 69 6c 0a 20 20 22 49 66    20 60 74 27 20 69 6e 74 65 72 70 6f 6c 61 74 65 | s-lisp.nil..."If.`t'.interpolate | 
| 5b80 | 20 6c 69 73 70 20 76 61 6c 75 65 73 20 61 73 20    6c 69 73 70 2e 0a 0a 60 73 2d 6c 65 78 2d 66 6f | .lisp.values.as.lisp...`s-lex-fo | 
| 5ba0 | 72 6d 61 74 27 20 69 6e 73 65 72 74 73 20 76 61    6c 75 65 73 20 77 69 74 68 20 28 66 6f 72 6d 61 | rmat'.inserts.values.with.(forma | 
| 5bc0 | 74 20 5c 22 25 53 5c 22 29 2e 22 29 0a 0a 28 64    65 66 75 6e 20 73 2d 6c 65 78 2d 66 6d 74 7c 65 | t.\"%S\").")..(defun.s-lex-fmt|e | 
| 5be0 | 78 70 61 6e 64 20 28 66 6d 74 29 0a 20 20 22 45    78 70 61 6e 64 20 46 4d 54 20 69 6e 74 6f 20 6c | xpand.(fmt)..."Expand.FMT.into.l | 
| 5c00 | 69 73 70 2e 22 0a 20 20 28 64 65 63 6c 61 72 65    20 28 73 69 64 65 2d 65 66 66 65 63 74 2d 66 72 | isp."...(declare.(side-effect-fr | 
| 5c20 | 65 65 20 74 29 29 0a 20 20 28 6c 69 73 74 20 27    73 2d 66 6f 72 6d 61 74 20 66 6d 74 20 28 71 75 | ee.t))...(list.'s-format.fmt.(qu | 
| 5c40 | 6f 74 65 20 27 61 67 65 74 29 0a 20 20 20 20 20    20 20 20 28 61 70 70 65 6e 64 20 27 28 6c 69 73 | ote.'aget).........(append.'(lis | 
| 5c60 | 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 | t).................(mapcar...... | 
| 5c80 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d    62 64 61 20 28 6d 61 74 63 68 65 73 29 0a 20 20 | ............(lambda.(matches)... | 
| 5ca0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 | .................(list.......... | 
| 5cc0 | 20 20 20 20 20 20 20 20 20 20 20 27 63 6f 6e 73    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........'cons................ | 
| 5ce0 | 20 20 20 20 20 28 63 61 64 72 20 6d 61 74 63 68    65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .....(cadr.matches)............. | 
| 5d00 | 20 20 20 20 20 20 20 20 60 28 66 6f 72 6d 61 74    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........`(format................ | 
| 5d20 | 20 20 20 20 20 20 20 28 69 66 20 73 2d 6c 65 78    2d 76 61 6c 75 65 2d 61 73 2d 6c 69 73 70 20 22 | .......(if.s-lex-value-as-lisp." | 
| 5d40 | 25 53 22 20 22 25 73 22 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | %S"."%s")....................... | 
| 5d60 | 2c 28 69 6e 74 65 72 6e 20 28 63 61 64 72 20 6d    61 74 63 68 65 73 29 29 29 29 29 0a 20 20 20 20 | ,(intern.(cadr.matches)))))..... | 
| 5d80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 2d    6d 61 74 63 68 2d 73 74 72 69 6e 67 73 2d 61 6c | .............(s-match-strings-al | 
| 5da0 | 6c 20 22 24 7b 5c 5c 28 5b 5e 7d 5d 2b 5c 5c 29    7d 22 20 66 6d 74 29 29 29 29 29 0a 0a 28 64 65 | l."${\\([^}]+\\)}".fmt)))))..(de | 
| 5dc0 | 66 6d 61 63 72 6f 20 73 2d 6c 65 78 2d 66 6f 72    6d 61 74 20 28 66 6f 72 6d 61 74 2d 73 74 72 29 | fmacro.s-lex-format.(format-str) | 
| 5de0 | 0a 20 20 22 60 73 2d 66 6f 72 6d 61 74 60 20 77    69 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 20 | ..."`s-format`.with.the.current. | 
| 5e00 | 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 0a 46 4f    52 4d 41 54 2d 53 54 52 20 6d 61 79 20 75 73 65 | environment...FORMAT-STR.may.use | 
| 5e20 | 20 74 68 65 20 60 73 2d 66 6f 72 6d 61 74 27 20    76 61 72 69 61 62 6c 65 20 72 65 66 65 72 65 6e | .the.`s-format'.variable.referen | 
| 5e40 | 63 65 20 74 6f 20 72 65 66 65 72 20 74 6f 0a 61    6e 79 20 76 61 72 69 61 62 6c 65 3a 0a 0a 20 28 | ce.to.refer.to.any.variable:...( | 
| 5e60 | 6c 65 74 20 28 28 78 20 31 29 29 0a 20 20 20 28    73 2d 6c 65 78 2d 66 6f 72 6d 61 74 20 5c 22 78 | let.((x.1))....(s-lex-format.\"x | 
| 5e80 | 20 69 73 3a 20 24 7b 78 7d 5c 22 29 29 0a 0a 54    68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 | .is:.${x}\"))..The.values.of.the | 
| 5ea0 | 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 69    6e 74 65 72 70 6f 6c 61 74 65 64 20 77 69 74 68 | .variables.are.interpolated.with | 
| 5ec0 | 20 5c 22 25 73 5c 22 20 75 6e 6c 65 73 73 0a 74    68 65 20 76 61 72 69 61 62 6c 65 20 60 73 2d 6c | .\"%s\".unless.the.variable.`s-l | 
| 5ee0 | 65 78 2d 76 61 6c 75 65 2d 61 73 2d 6c 69 73 70    27 20 69 73 20 60 74 27 20 61 6e 64 20 74 68 65 | ex-value-as-lisp'.is.`t'.and.the | 
| 5f00 | 6e 20 74 68 65 79 20 61 72 65 0a 69 6e 74 65 72    70 6f 6c 61 74 65 64 20 77 69 74 68 20 5c 22 25 | n.they.are.interpolated.with.\"% | 
| 5f20 | 53 5c 22 2e 22 0a 20 20 28 64 65 63 6c 61 72 65    20 28 64 65 62 75 67 20 28 66 6f 72 6d 29 29 29 | S\"."...(declare.(debug.(form))) | 
| 5f40 | 0a 20 20 28 73 2d 6c 65 78 2d 66 6d 74 7c 65 78    70 61 6e 64 20 66 6f 72 6d 61 74 2d 73 74 72 29 | ...(s-lex-fmt|expand.format-str) | 
| 5f60 | 29 0a 0a 28 64 65 66 75 6e 20 73 2d 63 6f 75 6e    74 2d 6d 61 74 63 68 65 73 20 28 72 65 67 65 78 | )..(defun.s-count-matches.(regex | 
| 5f80 | 70 20 73 20 26 6f 70 74 69 6f 6e 61 6c 20 73 74    61 72 74 20 65 6e 64 29 0a 20 20 22 43 6f 75 6e | p.s.&optional.start.end)..."Coun | 
| 5fa0 | 74 20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66    20 60 72 65 67 65 78 70 27 20 69 6e 20 60 73 27 | t.occurrences.of.`regexp'.in.`s' | 
| 5fc0 | 2e 0a 0a 60 73 74 61 72 74 27 2c 20 69 6e 63 6c    75 73 69 76 65 2c 20 61 6e 64 20 60 65 6e 64 27 | ...`start',.inclusive,.and.`end' | 
| 5fe0 | 2c 20 65 78 63 6c 75 73 69 76 65 2c 20 64 65 6c    69 6d 69 74 20 74 68 65 20 70 61 72 74 20 6f 66 | ,.exclusive,.delimit.the.part.of | 
| 6000 | 20 60 73 27 20 74 6f 0a 6d 61 74 63 68 2e 20 20    60 73 74 61 72 74 27 20 61 6e 64 20 60 65 6e 64 | .`s'.to.match...`start'.and.`end | 
| 6020 | 27 20 61 72 65 20 62 6f 74 68 20 69 6e 64 65 78    65 64 20 73 74 61 72 74 69 6e 67 20 61 74 20 31 | '.are.both.indexed.starting.at.1 | 
| 6040 | 3b 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 63 68    61 72 61 63 74 65 72 20 69 6e 20 60 73 27 20 69 | ;.the.initial.character.in.`s'.i | 
| 6060 | 73 20 69 6e 64 65 78 20 31 2e 0a 0a 54 68 69 73    20 66 75 6e 63 74 69 6f 6e 20 73 74 61 72 74 73 | s.index.1...This.function.starts | 
| 6080 | 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 74 68 65    20 6e 65 78 74 20 6d 61 74 63 68 20 66 72 6f 6d | .looking.for.the.next.match.from | 
| 60a0 | 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 0a    70 72 65 76 69 6f 75 73 20 6d 61 74 63 68 2e 20 | .the.end.of.the.previous.match.. | 
| 60c0 | 20 48 65 6e 63 65 2c 20 69 74 20 69 67 6e 6f 72    65 73 20 6d 61 74 63 68 65 73 20 74 68 61 74 20 | .Hence,.it.ignores.matches.that. | 
| 60e0 | 6f 76 65 72 6c 61 70 20 61 20 70 72 65 76 69 6f    75 73 6c 79 0a 66 6f 75 6e 64 20 6d 61 74 63 68 | overlap.a.previously.found.match | 
| 6100 | 2e 20 20 54 6f 20 63 6f 75 6e 74 20 6f 76 65 72    6c 61 70 70 69 6e 67 20 6d 61 74 63 68 65 73 2c | ...To.count.overlapping.matches, | 
| 6120 | 20 75 73 65 0a 60 73 2d 63 6f 75 6e 74 2d 6d 61    74 63 68 65 73 2d 61 6c 6c 27 2e 22 0a 20 20 28 | .use.`s-count-matches-all'."...( | 
| 6140 | 64 65 63 6c 61 72 65 20 28 73 69 64 65 2d 65 66    66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20 20 | declare.(side-effect-free.t))... | 
| 6160 | 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61    0a 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d | (save-match-data.....(with-temp- | 
| 6180 | 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 69 6e    73 65 72 74 20 73 29 0a 20 20 20 20 20 20 28 67 | buffer.......(insert.s).......(g | 
| 61a0 | 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d    6d 69 6e 29 29 0a 20 20 20 20 20 20 28 63 6f 75 | oto-char.(point-min)).......(cou | 
| 61c0 | 6e 74 2d 6d 61 74 63 68 65 73 20 72 65 67 65 78    70 20 28 6f 72 20 73 74 61 72 74 20 31 29 20 28 | nt-matches.regexp.(or.start.1).( | 
| 61e0 | 6f 72 20 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61    78 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | or.end.(point-max))))))..(defun. | 
| 6200 | 73 2d 63 6f 75 6e 74 2d 6d 61 74 63 68 65 73 2d    61 6c 6c 20 28 72 65 67 65 78 70 20 73 20 26 6f | s-count-matches-all.(regexp.s.&o | 
| 6220 | 70 74 69 6f 6e 61 6c 20 73 74 61 72 74 20 65 6e    64 29 0a 20 20 22 43 6f 75 6e 74 20 6f 63 63 75 | ptional.start.end)..."Count.occu | 
| 6240 | 72 72 65 6e 63 65 73 20 6f 66 20 60 72 65 67 65    78 70 27 20 69 6e 20 60 73 27 2e 0a 0a 60 73 74 | rrences.of.`regexp'.in.`s'...`st | 
| 6260 | 61 72 74 27 2c 20 69 6e 63 6c 75 73 69 76 65 2c    20 61 6e 64 20 60 65 6e 64 27 2c 20 65 78 63 6c | art',.inclusive,.and.`end',.excl | 
| 6280 | 75 73 69 76 65 2c 20 64 65 6c 69 6d 69 74 20 74    68 65 20 70 61 72 74 20 6f 66 20 60 73 27 20 74 | usive,.delimit.the.part.of.`s'.t | 
| 62a0 | 6f 0a 6d 61 74 63 68 2e 20 20 60 73 74 61 72 74    27 20 61 6e 64 20 60 65 6e 64 27 20 61 72 65 20 | o.match...`start'.and.`end'.are. | 
| 62c0 | 62 6f 74 68 20 69 6e 64 65 78 65 64 20 73 74 61    72 74 69 6e 67 20 61 74 20 31 3b 20 74 68 65 20 | both.indexed.starting.at.1;.the. | 
| 62e0 | 69 6e 69 74 69 61 6c 0a 63 68 61 72 61 63 74 65    72 20 69 6e 20 60 73 27 20 69 73 20 69 6e 64 65 | initial.character.in.`s'.is.inde | 
| 6300 | 78 20 31 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74    69 6f 6e 20 73 74 61 72 74 73 20 6c 6f 6f 6b 69 | x.1...This.function.starts.looki | 
| 6320 | 6e 67 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20    6d 61 74 63 68 20 66 72 6f 6d 20 74 68 65 20 73 | ng.for.the.next.match.from.the.s | 
| 6340 | 65 63 6f 6e 64 0a 63 68 61 72 61 63 74 65 72 20    6f 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 | econd.character.of.the.previous. | 
| 6360 | 6d 61 74 63 68 2e 20 20 48 65 6e 63 65 2c 20 69    74 20 63 6f 75 6e 74 73 20 6d 61 74 63 68 65 73 | match...Hence,.it.counts.matches | 
| 6380 | 20 74 68 61 74 0a 6f 76 65 72 6c 61 70 20 61 20    70 72 65 76 69 6f 75 73 6c 79 20 66 6f 75 6e 64 | .that.overlap.a.previously.found | 
| 63a0 | 20 6d 61 74 63 68 2e 20 20 54 6f 20 69 67 6e 6f    72 65 20 6d 61 74 63 68 65 73 20 74 68 61 74 20 | .match...To.ignore.matches.that. | 
| 63c0 | 6f 76 65 72 6c 61 70 20 61 0a 70 72 65 76 69 6f    75 73 6c 79 20 66 6f 75 6e 64 20 6d 61 74 63 68 | overlap.a.previously.found.match | 
| 63e0 | 2c 20 75 73 65 20 60 73 2d 63 6f 75 6e 74 2d 6d    61 74 63 68 65 73 27 2e 22 0a 20 20 28 64 65 63 | ,.use.`s-count-matches'."...(dec | 
| 6400 | 6c 61 72 65 20 28 73 69 64 65 2d 65 66 66 65 63    74 2d 66 72 65 65 20 74 29 29 0a 20 20 28 6c 65 | lare.(side-effect-free.t))...(le | 
| 6420 | 74 2a 20 28 28 61 6e 63 68 6f 72 65 64 2d 72 65    67 65 78 70 20 28 66 6f 72 6d 61 74 20 22 5e 25 | t*.((anchored-regexp.(format."^% | 
| 6440 | 73 22 20 72 65 67 65 78 70 29 29 0a 20 20 20 20    20 20 20 20 20 28 6d 61 74 63 68 2d 63 6f 75 6e | s".regexp))..........(match-coun | 
| 6460 | 74 20 30 29 0a 20 20 20 20 20 20 20 20 20 28 69    20 30 29 0a 20 20 20 20 20 20 20 20 20 28 6e 61 | t.0)..........(i.0)..........(na | 
| 6480 | 72 72 6f 77 65 64 2d 73 20 28 73 75 62 73 74 72    69 6e 67 20 73 20 28 69 66 20 73 74 61 72 74 20 | rrowed-s.(substring.s.(if.start. | 
| 64a0 | 28 31 2d 20 73 74 61 72 74 29 20 30 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (1-.start).0)................... | 
| 64c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 68 65 6e 20 65 6e 64 20 28 31 2d 20 65 6e | ................(when.end.(1-.en | 
| 64e0 | 64 29 29 29 29 29 0a 20 20 20 20 28 73 61 76 65    2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 | d))))).....(save-match-data..... | 
| 6500 | 20 20 28 77 68 69 6c 65 20 28 3c 20 69 20 28 6c    65 6e 67 74 68 20 6e 61 72 72 6f 77 65 64 2d 73 | ..(while.(<.i.(length.narrowed-s | 
| 6520 | 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e    20 28 73 2d 6d 61 74 63 68 65 73 3f 20 61 6e 63 | )).........(when.(s-matches?.anc | 
| 6540 | 68 6f 72 65 64 2d 72 65 67 65 78 70 20 28 73 75    62 73 74 72 69 6e 67 20 6e 61 72 72 6f 77 65 64 | hored-regexp.(substring.narrowed | 
| 6560 | 2d 73 20 69 29 29 0a 20 20 20 20 20 20 20 20 20    20 28 73 65 74 71 20 6d 61 74 63 68 2d 63 6f 75 | -s.i))...........(setq.match-cou | 
| 6580 | 6e 74 20 28 31 2b 20 6d 61 74 63 68 2d 63 6f 75    6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 73 | nt.(1+.match-count))).........(s | 
| 65a0 | 65 74 71 20 69 20 28 31 2b 20 69 29 29 29 29 0a    20 20 20 20 6d 61 74 63 68 2d 63 6f 75 6e 74 29 | etq.i.(1+.i)))).....match-count) | 
| 65c0 | 29 0a 0a 28 64 65 66 75 6e 20 73 2d 77 72 61 70    20 28 73 20 70 72 65 66 69 78 20 26 6f 70 74 69 | )..(defun.s-wrap.(s.prefix.&opti | 
| 65e0 | 6f 6e 61 6c 20 73 75 66 66 69 78 29 0a 20 20 22    57 72 61 70 20 73 74 72 69 6e 67 20 53 20 77 69 | onal.suffix)..."Wrap.string.S.wi | 
| 6600 | 74 68 20 50 52 45 46 49 58 20 61 6e 64 20 6f 70    74 69 6f 6e 61 6c 6c 79 20 53 55 46 46 49 58 2e | th.PREFIX.and.optionally.SUFFIX. | 
| 6620 | 0a 0a 52 65 74 75 72 6e 20 73 74 72 69 6e 67 20    53 20 77 69 74 68 20 50 52 45 46 49 58 20 70 72 | ..Return.string.S.with.PREFIX.pr | 
| 6640 | 65 70 65 6e 64 65 64 2e 20 20 49 66 20 53 55 46    46 49 58 20 69 73 20 70 72 65 73 65 6e 74 2c 20 | epended...If.SUFFIX.is.present,. | 
| 6660 | 69 74 0a 69 73 20 61 70 70 65 6e 64 65 64 2c 20    6f 74 68 65 72 77 69 73 65 20 50 52 45 46 49 58 | it.is.appended,.otherwise.PREFIX | 
| 6680 | 20 69 73 20 75 73 65 64 20 61 73 20 62 6f 74 68    20 70 72 65 66 69 78 20 61 6e 64 0a 73 75 66 66 | .is.used.as.both.prefix.and.suff | 
| 66a0 | 69 78 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20    28 70 75 72 65 20 74 29 20 28 73 69 64 65 2d 65 | ix."...(declare.(pure.t).(side-e | 
| 66c0 | 66 66 65 63 74 2d 66 72 65 65 20 74 29 29 0a 20    20 28 63 6f 6e 63 61 74 20 70 72 65 66 69 78 20 | ffect-free.t))...(concat.prefix. | 
| 66e0 | 73 20 28 6f 72 20 73 75 66 66 69 78 20 70 72 65    66 69 78 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 41 6c | s.(or.suffix.prefix)))....;;;.Al | 
| 6700 | 69 61 73 65 73 0a 0a 28 64 65 66 61 6c 69 61 73    20 27 73 2d 62 6c 61 6e 6b 2d 70 20 27 73 2d 62 | iases..(defalias.'s-blank-p.'s-b | 
| 6720 | 6c 61 6e 6b 3f 29 0a 28 64 65 66 61 6c 69 61 73    20 27 73 2d 62 6c 61 6e 6b 2d 73 74 72 2d 70 20 | lank?).(defalias.'s-blank-str-p. | 
| 6740 | 27 73 2d 62 6c 61 6e 6b 2d 73 74 72 3f 29 0a 28    64 65 66 61 6c 69 61 73 20 27 73 2d 63 61 70 69 | 's-blank-str?).(defalias.'s-capi | 
| 6760 | 74 61 6c 69 7a 65 64 2d 70 20 27 73 2d 63 61 70    69 74 61 6c 69 7a 65 64 3f 29 0a 28 64 65 66 61 | talized-p.'s-capitalized?).(defa | 
| 6780 | 6c 69 61 73 20 27 73 2d 63 6f 6e 74 61 69 6e 73    2d 70 20 27 73 2d 63 6f 6e 74 61 69 6e 73 3f 29 | lias.'s-contains-p.'s-contains?) | 
| 67a0 | 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 65 6e    64 73 2d 77 69 74 68 2d 70 20 27 73 2d 65 6e 64 | .(defalias.'s-ends-with-p.'s-end | 
| 67c0 | 73 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69    61 73 20 27 73 2d 65 71 75 61 6c 73 2d 70 20 27 | s-with?).(defalias.'s-equals-p.' | 
| 67e0 | 73 2d 65 71 75 61 6c 73 3f 29 0a 28 64 65 66 61    6c 69 61 73 20 27 73 2d 6c 65 73 73 2d 70 20 27 | s-equals?).(defalias.'s-less-p.' | 
| 6800 | 73 2d 6c 65 73 73 3f 29 0a 28 64 65 66 61 6c 69    61 73 20 27 73 2d 6c 6f 77 65 72 63 61 73 65 2d | s-less?).(defalias.'s-lowercase- | 
| 6820 | 70 20 27 73 2d 6c 6f 77 65 72 63 61 73 65 3f 29    0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 6d 61 | p.'s-lowercase?).(defalias.'s-ma | 
| 6840 | 74 63 68 65 73 2d 70 20 27 73 2d 6d 61 74 63 68    65 73 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 | tches-p.'s-matches?).(defalias.' | 
| 6860 | 73 2d 6d 69 78 65 64 63 61 73 65 2d 70 20 27 73    2d 6d 69 78 65 64 63 61 73 65 3f 29 0a 28 64 65 | s-mixedcase-p.'s-mixedcase?).(de | 
| 6880 | 66 61 6c 69 61 73 20 27 73 2d 6e 75 6d 65 72 69    63 2d 70 20 27 73 2d 6e 75 6d 65 72 69 63 3f 29 | falias.'s-numeric-p.'s-numeric?) | 
| 68a0 | 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 70 72    65 66 69 78 2d 70 20 27 73 2d 73 74 61 72 74 73 | .(defalias.'s-prefix-p.'s-starts | 
| 68c0 | 2d 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61    73 20 27 73 2d 70 72 65 66 69 78 3f 20 27 73 2d | -with?).(defalias.'s-prefix?.'s- | 
| 68e0 | 73 74 61 72 74 73 2d 77 69 74 68 3f 29 0a 28 64    65 66 61 6c 69 61 73 20 27 73 2d 70 72 65 73 65 | starts-with?).(defalias.'s-prese | 
| 6900 | 6e 74 2d 70 20 27 73 2d 70 72 65 73 65 6e 74 3f    29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d 73 | nt-p.'s-present?).(defalias.'s-s | 
| 6920 | 74 61 72 74 73 2d 77 69 74 68 2d 70 20 27 73 2d    73 74 61 72 74 73 2d 77 69 74 68 3f 29 0a 28 64 | tarts-with-p.'s-starts-with?).(d | 
| 6940 | 65 66 61 6c 69 61 73 20 27 73 2d 73 75 66 66 69    78 2d 70 20 27 73 2d 65 6e 64 73 2d 77 69 74 68 | efalias.'s-suffix-p.'s-ends-with | 
| 6960 | 3f 29 0a 28 64 65 66 61 6c 69 61 73 20 27 73 2d    73 75 66 66 69 78 3f 20 27 73 2d 65 6e 64 73 2d | ?).(defalias.'s-suffix?.'s-ends- | 
| 6980 | 77 69 74 68 3f 29 0a 28 64 65 66 61 6c 69 61 73    20 27 73 2d 75 70 70 65 72 63 61 73 65 2d 70 20 | with?).(defalias.'s-uppercase-p. | 
| 69a0 | 27 73 2d 75 70 70 65 72 63 61 73 65 3f 29 0a 0a    0c 0a 28 70 72 6f 76 69 64 65 20 27 73 29 0a 3b | 's-uppercase?)....(provide.'s).; | 
| 69c0 | 3b 3b 20 73 2e 65 6c 20 65 6e 64 73 20 68 65 72    65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ;;.s.el.ends.here............... | 
| 69e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6a00 | 73 2d 32 30 32 32 30 39 30 32 2e 31 35 31 31 2f    73 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 | s-20220902.1511/s-pkg.el........ | 
| 6a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6a60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 | 
| 6a80 | 30 30 30 30 36 31 31 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 32 36 30 34 00 20 30 00 00 00 | 0000611.00000000000.012604..0... | 
| 6aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6b00 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... | 
| 6b20 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... | 
| 6b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6c00 | 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20    22 73 22 20 22 32 30 32 32 30 39 30 32 2e 31 35 | (define-package."s"."20220902.15 | 
| 6c20 | 31 31 22 20 22 54 68 65 20 6c 6f 6e 67 20 6c 6f    73 74 20 45 6d 61 63 73 20 73 74 72 69 6e 67 20 | 11"."The.long.lost.Emacs.string. | 
| 6c40 | 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 6c 69 62    72 61 72 79 2e 22 20 27 6e 69 6c 20 3a 63 6f 6d | manipulation.library.".'nil.:com | 
| 6c60 | 6d 69 74 20 22 62 34 62 38 63 30 33 66 63 65 66    33 31 36 61 32 37 66 37 35 36 33 33 66 65 34 62 | mit."b4b8c03fcef316a27f75633fe4b | 
| 6c80 | 62 39 39 30 61 65 66 66 36 65 37 30 35 22 20 3a    61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 4d 61 | b990aeff6e705".:authors...'(("Ma | 
| 6ca0 | 67 6e 61 72 20 53 76 65 65 6e 22 20 2e 20 22 6d    61 67 6e 61 72 73 40 67 6d 61 69 6c 2e 63 6f 6d | gnar.Sveen"..."magnars@gmail.com | 
| 6cc0 | 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65    72 73 0a 20 20 27 28 28 22 4a 61 73 6f 6e 20 4d | "))...:maintainers...'(("Jason.M | 
| 6ce0 | 69 6c 6b 69 6e 73 22 20 2e 20 22 6a 61 73 6f 6e    6d 32 33 40 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 | ilkins"..."jasonm23@gmail.com")) | 
| 6d00 | 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 0a 20    20 27 28 22 4a 61 73 6f 6e 20 4d 69 6c 6b 69 6e | ...:maintainer...'("Jason.Milkin | 
| 6d20 | 73 22 20 2e 20 22 6a 61 73 6f 6e 6d 32 33 40 67    6d 61 69 6c 2e 63 6f 6d 22 29 0a 20 20 3a 6b 65 | s"..."jasonm23@gmail.com")...:ke | 
| 6d40 | 79 77 6f 72 64 73 0a 20 20 27 28 22 73 74 72 69    6e 67 73 22 29 29 0a 3b 3b 20 4c 6f 63 61 6c 20 | ywords...'("strings")).;;.Local. | 
| 6d60 | 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 6e 6f    2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 | Variables:.;;.no-byte-compile:.t | 
| 6d80 | 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .;;.End:........................ | 
| 6da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 6fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 70a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 70c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 70e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 71a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 71c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 71e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 72a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 72c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 72e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 73a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 73c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 73e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 74a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 74c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 74e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 75a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 75c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 75e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 76a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 76c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 76e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 7780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 77a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 77c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ | 
| 77e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |