summaryrefslogtreecommitdiff
path: root/localrepo/aio-20200610.1904.tar
blob: 808b935c7f7fb4c6f3d8de79cb52f6fa6c216f3e (plain)
ofshex dumpascii
0000 61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30 34 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 aio-20200610.1904/..............
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 35 35 31 00 20 35 00 00 00 0000000.00000000000.011551..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 61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30 34 2f 52 45 41 44 4d 45 2e 6d 64 00 00 00 00 00 aio-20200610.1904/README.md.....
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 31 32 36 36 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 30 34 34 00 20 30 00 00 00 0012667.00000000000.013044..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 23 20 61 69 6f 3a 20 61 73 79 6e 63 2f 61 77 61 69 74 20 66 6f 72 20 45 6d 61 63 73 20 4c 69 73 #.aio:.async/await.for.Emacs.Lis
0420 70 0a 0a 60 61 69 6f 60 20 69 73 20 74 6f 20 45 6d 61 63 73 20 4c 69 73 70 20 61 73 20 5b 60 61 p..`aio`.is.to.Emacs.Lisp.as.[`a
0440 73 79 6e 63 69 6f 60 5d 5b 61 73 79 6e 63 69 6f 5d 20 69 73 20 74 6f 20 50 79 74 68 6f 6e 2e 20 syncio`][asyncio].is.to.Python..
0460 54 68 69 73 0a 70 61 63 6b 61 67 65 20 62 75 69 6c 64 73 20 75 70 6f 6e 20 45 6d 61 63 73 20 32 This.package.builds.upon.Emacs.2
0480 35 20 67 65 6e 65 72 61 74 6f 72 73 20 74 6f 20 70 72 6f 76 69 64 65 20 66 75 6e 63 74 69 6f 6e 5.generators.to.provide.function
04a0 73 20 74 68 61 74 0a 70 61 75 73 65 20 77 68 69 6c 65 20 74 68 65 79 20 77 61 69 74 20 6f 6e 20 s.that.pause.while.they.wait.on.
04c0 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 65 76 65 6e 74 73 2e 20 54 68 65 79 20 64 6f 20 6e 6f 74 asynchronous.events..They.do.not
04e0 20 62 6c 6f 63 6b 20 61 6e 79 0a 74 68 72 65 61 64 20 77 68 69 6c 65 20 70 61 75 73 65 64 2e 0a .block.any.thread.while.paused..
0500 0a 49 6e 74 72 6f 64 75 63 74 69 6f 6e 3a 20 5b 41 6e 20 41 73 79 6e 63 20 2f 20 41 77 61 69 74 .Introduction:.[An.Async./.Await
0520 20 4c 69 62 72 61 72 79 20 66 6f 72 20 45 6d 61 63 73 20 4c 69 73 70 5d 5b 70 6f 73 74 5d 0a 0a .Library.for.Emacs.Lisp][post]..
0540 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 69 73 20 5b 61 76 61 69 6c 61 62 6c 65 20 74 68 72 6f 75 Installation.is.[available.throu
0560 67 68 20 4d 45 4c 50 41 5d 5b 6d 65 6c 70 61 5d 2e 20 53 69 6e 63 65 20 69 74 20 75 73 65 73 20 gh.MELPA][melpa]..Since.it.uses.
0580 74 68 65 0a 60 72 65 63 6f 72 64 60 20 62 75 69 6c 74 2d 69 6e 2c 20 69 74 20 72 65 71 75 69 72 the.`record`.built-in,.it.requir
05a0 65 73 20 45 6d 61 63 73 20 32 36 20 6f 72 20 6c 61 74 65 72 2e 0a 0a 23 23 20 55 73 61 67 65 0a es.Emacs.26.or.later...##.Usage.
05c0 0a 41 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 66 69 6e 65 64 20 75 73 .An.async.function.is.defined.us
05e0 69 6e 67 20 60 61 69 6f 2d 64 65 66 75 6e 60 20 6f 72 20 60 61 69 6f 2d 6c 61 6d 62 64 61 60 2e ing.`aio-defun`.or.`aio-lambda`.
0600 20 54 68 65 0a 62 6f 64 79 20 6f 66 20 73 75 63 68 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 .The.body.of.such.functions.can.
0620 75 73 65 20 60 61 69 6f 2d 61 77 61 69 74 60 20 74 6f 20 70 61 75 73 65 20 74 68 65 20 66 75 6e use.`aio-await`.to.pause.the.fun
0640 63 74 69 6f 6e 20 61 6e 64 0a 77 61 69 74 20 6f 6e 20 61 20 67 69 76 65 6e 20 70 72 6f 6d 69 73 ction.and.wait.on.a.given.promis
0660 65 2e 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6e 74 69 6e 75 65 73 20 77 69 74 68 20 74 e..The.function.continues.with.t
0680 68 65 20 70 72 6f 6d 69 73 65 27 73 0a 72 65 73 6f 6c 76 65 64 20 76 61 6c 75 65 20 77 68 65 6e he.promise's.resolved.value.when
06a0 20 69 74 27 73 20 72 65 61 64 79 2e 20 54 68 65 20 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 .it's.ready..The.package.provide
06c0 73 20 61 20 6e 75 6d 62 65 72 20 6f 66 0a 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 74 s.a.number.of.functions.that.ret
06e0 75 72 6e 20 70 72 6f 6d 69 73 65 73 2c 20 61 6e 64 20 65 76 65 72 79 20 61 73 79 6e 63 20 66 75 urn.promises,.and.every.async.fu
0700 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 0a 70 72 6f 6d 69 73 65 20 72 65 70 72 65 73 65 nction.returns.a.promise.represe
0720 6e 74 69 6e 67 20 69 74 73 20 66 75 74 75 72 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a 0a nting.its.future.return.value...
0740 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d 64 65 66 75 6e 20 66 For.example:..```el.(aio-defun.f
0760 6f 6f 20 28 75 72 6c 29 0a 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 73 6c 65 65 70 oo.(url)...(aio-await.(aio-sleep
0780 20 33 29 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 44 6f 6e 65 20 73 6c 65 65 70 69 6e 67 2e 20 .3))...(message."Done.sleeping..
07a0 4e 6f 77 20 66 65 74 63 68 69 6e 67 20 25 73 22 20 75 72 6c 29 0a 20 20 28 6c 65 74 2a 20 28 28 Now.fetching.%s".url)...(let*.((
07c0 72 65 73 75 6c 74 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 75 72 6c 2d 72 65 74 72 69 result.(aio-await.(aio-url-retri
07e0 65 76 65 20 75 72 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 73 20 28 77 eve.url)))..........(contents.(w
0800 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 63 64 72 20 72 65 73 75 6c 74 29 0a ith-current-buffer.(cdr.result).
0820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 28 62 75 66 .....................(prog1.(buf
0840 66 65 72 2d 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fer-string).....................
0860 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 29 29 29 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 ...(kill-buffer))))).....(messag
0880 65 20 22 52 65 73 75 6c 74 3a 20 25 73 22 20 63 6f 6e 74 65 6e 74 73 29 29 29 0a 60 60 60 0a 0a e."Result:.%s".contents))).```..
08a0 49 66 20 61 6e 20 75 6e 63 61 75 67 68 74 20 73 69 67 6e 61 6c 20 74 65 72 6d 69 6e 61 74 65 73 If.an.uncaught.signal.terminates
08c0 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 69 6f 6e 2c 20 74 68 61 74 20 .an.asynchronous.function,.that.
08e0 73 69 67 6e 61 6c 0a 69 73 20 63 61 70 74 75 72 65 64 20 62 79 20 69 74 73 20 72 65 74 75 72 6e signal.is.captured.by.its.return
0900 20 76 61 6c 75 65 20 70 72 6f 6d 69 73 65 20 61 6e 64 20 70 72 6f 70 61 67 61 74 65 64 20 69 6e .value.promise.and.propagated.in
0920 74 6f 20 61 6e 79 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 61 77 61 69 74 73 20 6f 6e 20 74 to.any.function.that.awaits.on.t
0940 68 61 74 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d 64 65 66 75 6e 20 hat.function...```el.(aio-defun.
0960 64 69 76 69 64 65 20 28 61 20 62 29 0a 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 73 divide.(a.b)...(aio-await.(aio-s
0980 6c 65 65 70 20 31 29 29 0a 20 20 28 2f 20 61 20 62 29 29 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20 leep.1))...(/.a.b))..(aio-defun.
09a0 64 69 76 69 64 65 2d 73 61 66 65 20 28 61 20 62 29 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 divide-safe.(a.b)...(condition-c
09c0 61 73 65 20 65 72 72 6f 72 0a 20 20 20 20 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 64 69 76 69 ase.error.......(aio-await.(divi
09e0 64 65 20 61 20 62 29 29 0a 20 20 20 20 28 61 72 69 74 68 2d 65 72 72 6f 72 20 3a 61 72 69 74 68 de.a.b)).....(arith-error.:arith
0a00 2d 65 72 72 6f 72 29 29 29 0a 0a 28 61 69 6f 2d 77 61 69 74 2d 66 6f 72 20 28 64 69 76 69 64 65 -error)))..(aio-wait-for.(divide
0a20 2d 73 61 66 65 20 31 2e 30 20 32 2e 30 29 29 0a 3b 3b 20 3d 3e 20 30 2e 35 0a 0a 28 61 69 6f 2d -safe.1.0.2.0)).;;.=>.0.5..(aio-
0a40 77 61 69 74 2d 66 6f 72 20 28 64 69 76 69 64 65 2d 73 61 66 65 20 30 20 30 29 29 0a 3b 3b 20 3d wait-for.(divide-safe.0.0)).;;.=
0a60 3e 20 3a 61 72 69 74 68 2d 65 72 72 6f 72 0a 60 60 60 0a 0a 54 6f 20 63 6f 6e 76 65 72 74 20 61 >.:arith-error.```..To.convert.a
0a80 20 63 61 6c 6c 62 61 63 6b 2d 62 61 73 65 64 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 6f 20 61 6e .callback-based.function.into.an
0aa0 20 61 77 61 69 74 61 62 6c 65 2c 20 61 73 79 6e 63 2d 66 72 69 65 6e 64 6c 79 0a 66 75 6e 63 74 .awaitable,.async-friendly.funct
0ac0 69 6f 6e 2c 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 70 72 6f 6d 69 73 65 20 6f 62 6a 65 63 74 ion,.create.a.new.promise.object
0ae0 20 77 69 74 68 20 60 61 69 6f 2d 70 72 6f 6d 69 73 65 60 2c 20 74 68 65 6e 0a 60 61 69 6f 2d 72 .with.`aio-promise`,.then.`aio-r
0b00 65 73 6f 6c 76 65 60 20 74 68 61 74 20 70 72 6f 6d 69 73 65 20 69 6e 20 74 68 65 20 63 61 6c 6c esolve`.that.promise.in.the.call
0b20 62 61 63 6b 2e 20 54 68 65 20 68 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 2c 0a 60 61 69 6f 2d back..The.helper.function,.`aio-
0b40 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 60 2c 20 6d 61 6b 65 73 20 74 68 69 73 20 65 61 73 79 2e make-callback`,.makes.this.easy.
0b60 0a 0a 23 23 20 55 74 69 6c 69 74 79 20 6d 61 63 72 6f 73 20 61 6e 64 20 66 75 6e 63 74 69 6f 6e ..##.Utility.macros.and.function
0b80 73 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d 77 61 69 74 2d 66 6f 72 20 70 72 6f 6d 69 73 65 29 0a s..```el.(aio-wait-for.promise).
0ba0 3b 3b 20 53 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 77 61 69 74 20 66 6f 72 20 50 52 4f 4d 49 53 ;;.Synchronously.wait.for.PROMIS
0bc0 45 2c 20 62 6c 6f 63 6b 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65 61 64 2e 0a E,.blocking.the.current.thread..
0be0 0a 28 61 69 6f 2d 63 61 6e 63 65 6c 20 70 72 6f 6d 69 73 65 29 0a 3b 3b 20 41 74 74 65 6d 70 74 .(aio-cancel.promise).;;.Attempt
0c00 20 74 6f 20 63 61 6e 63 65 6c 20 50 52 4f 4d 49 53 45 2c 20 72 65 74 75 72 6e 69 6e 67 20 6e 6f .to.cancel.PROMISE,.returning.no
0c20 6e 2d 6e 69 6c 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2e 0a 0a 28 61 69 6f 2d 77 69 74 68 2d n-nil.if.successful...(aio-with-
0c40 70 72 6f 6d 69 73 65 20 70 72 6f 6d 69 73 65 20 26 72 65 73 74 20 62 6f 64 79 29 20 5b 6d 61 63 promise.promise.&rest.body).[mac
0c60 72 6f 5d 0a 3b 3b 20 45 76 61 6c 75 61 74 65 20 42 4f 44 59 20 61 6e 64 20 72 65 73 6f 6c 76 65 ro].;;.Evaluate.BODY.and.resolve
0c80 20 50 52 4f 4d 49 53 45 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 2e 0a 0a 28 61 69 6f 2d .PROMISE.with.the.result...(aio-
0ca0 77 69 74 68 2d 61 73 79 6e 63 20 26 72 65 73 74 20 62 6f 64 79 29 20 5b 6d 61 63 72 6f 5d 0a 3b with-async.&rest.body).[macro].;
0cc0 3b 20 45 76 61 6c 75 61 74 65 20 42 4f 44 59 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 61 ;.Evaluate.BODY.asynchronously.a
0ce0 73 20 69 66 20 69 74 20 77 61 73 20 69 6e 73 69 64 65 20 60 61 69 6f 2d 6c 61 6d 62 64 61 27 2e s.if.it.was.inside.`aio-lambda'.
0d00 0a 0a 28 61 69 6f 2d 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 20 26 6b 65 79 20 74 61 67 20 6f 6e ..(aio-make-callback.&key.tag.on
0d20 63 65 29 0a 3b 3b 20 52 65 74 75 72 6e 20 61 20 6e 65 77 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e ce).;;.Return.a.new.callback.fun
0d40 63 74 69 6f 6e 20 61 6e 64 20 69 74 73 20 66 69 72 73 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 28 61 ction.and.its.first.promise...(a
0d60 69 6f 2d 63 68 61 69 6e 20 65 78 70 72 29 20 5b 6d 61 63 72 6f 5d 0a 3b 3b 20 60 61 69 6f 2d 61 io-chain.expr).[macro].;;.`aio-a
0d80 77 61 69 74 27 20 6f 6e 20 45 58 50 52 20 61 6e 64 20 72 65 70 6c 61 63 65 20 70 6c 61 63 65 20 wait'.on.EXPR.and.replace.place.
0da0 45 58 50 52 20 77 69 74 68 20 74 68 65 20 6e 65 78 74 20 70 72 6f 6d 69 73 65 2e 0a 60 60 60 0a EXPR.with.the.next.promise..```.
0dc0 0a 54 68 65 20 60 61 69 6f 2d 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 60 20 66 75 6e 63 74 69 6f .The.`aio-make-callback`.functio
0de0 6e 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75 6c 20 66 6f 72 20 63 61 6c 6c 62 n.is.especially.useful.for.callb
0e00 61 63 6b 73 0a 74 68 61 74 20 61 72 65 20 69 6e 76 6f 6b 65 64 20 72 65 70 65 61 74 65 64 6c 79 acks.that.are.invoked.repeatedly
0e20 2c 20 73 75 63 68 20 61 73 20 70 72 6f 63 65 73 73 20 66 69 6c 74 65 72 73 20 61 6e 64 20 73 65 ,.such.as.process.filters.and.se
0e40 6e 74 69 6e 65 6c 73 2e 0a 54 68 65 20 60 61 69 6f 2d 63 68 61 69 6e 60 20 6d 61 63 72 6f 20 77 ntinels..The.`aio-chain`.macro.w
0e60 6f 72 6b 73 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 2e 0a 0a 23 23 20 41 77 61 69 74 61 62 orks.in.conjunction...##.Awaitab
0e80 6c 65 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 48 65 72 65 20 61 72 65 20 73 6f 6d 65 20 75 73 65 66 le.functions..Here.are.some.usef
0ea0 75 6c 20 70 72 6f 6d 69 73 65 2d 72 65 74 75 72 6e 69 6e 67 20 e2 80 94 20 69 2e 65 2e 20 61 77 ul.promise-returning.....i.e..aw
0ec0 61 69 74 61 62 6c 65 20 e2 80 94 20 66 75 6e 63 74 69 6f 6e 73 0a 64 65 66 69 6e 65 64 20 62 79 aitable.....functions.defined.by
0ee0 20 74 68 69 73 20 70 61 63 6b 61 67 65 2e 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d 73 6c 65 65 70 .this.package...```el.(aio-sleep
0f00 20 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 73 75 6c 74 29 0a 3b 3b 20 52 65 .seconds.&optional.result).;;.Re
0f20 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 20 69 73 20 72 65 73 6f 6c 76 65 64 20 turn.a.promise.that.is.resolved.
0f40 61 66 74 65 72 20 53 45 43 4f 4e 44 53 20 77 69 74 68 20 52 45 53 55 4c 54 2e 0a 0a 28 61 69 6f after.SECONDS.with.RESULT...(aio
0f60 2d 69 64 6c 65 20 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 73 75 6c 74 29 0a -idle.seconds.&optional.result).
0f80 3b 3b 20 52 65 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 20 69 73 20 72 65 73 6f ;;.Return.a.promise.that.is.reso
0fa0 6c 76 65 64 20 61 66 74 65 72 20 69 64 6c 65 20 53 45 43 4f 4e 44 53 20 77 69 74 68 20 52 45 53 lved.after.idle.SECONDS.with.RES
0fc0 55 4c 54 2e 0a 0a 28 61 69 6f 2d 75 72 6c 2d 72 65 74 72 69 65 76 65 20 75 72 6c 20 26 6f 70 74 ULT...(aio-url-retrieve.url.&opt
0fe0 69 6f 6e 61 6c 20 73 69 6c 65 6e 74 20 69 6e 68 69 62 69 74 2d 63 6f 6f 6b 69 65 73 29 0a 3b 3b ional.silent.inhibit-cookies).;;
1000 20 57 72 61 70 73 20 60 75 72 6c 2d 72 65 74 72 69 65 76 65 27 20 69 6e 20 61 20 70 72 6f 6d 69 .Wraps.`url-retrieve'.in.a.promi
1020 73 65 2e 0a 0a 28 61 69 6f 2d 61 6c 6c 20 70 72 6f 6d 69 73 65 73 29 0a 3b 3b 20 52 65 74 75 72 se...(aio-all.promises).;;.Retur
1040 6e 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 20 72 65 73 6f 6c 76 65 73 20 77 68 65 6e 20 61 n.a.promise.that.resolves.when.a
1060 6c 6c 20 50 52 4f 4d 49 53 45 53 20 61 72 65 20 72 65 73 6f 6c 76 65 64 2e 22 0a 60 60 60 0a 0a ll.PROMISES.are.resolved.".```..
1080 23 23 20 53 65 6c 65 63 74 20 41 50 49 0a 0a 54 68 69 73 20 70 61 63 6b 61 67 65 20 69 6e 63 6c ##.Select.API..This.package.incl
10a0 75 64 65 73 20 61 20 73 65 6c 65 63 74 28 29 2d 6c 69 6b 65 2c 20 6c 65 76 65 6c 2d 74 72 69 67 udes.a.select()-like,.level-trig
10c0 67 65 72 65 64 20 41 50 49 20 66 6f 72 20 77 61 69 74 69 6e 67 0a 6f 6e 20 6d 75 6c 74 69 70 6c gered.API.for.waiting.on.multipl
10e0 65 20 70 72 6f 6d 69 73 65 73 20 61 74 20 6f 6e 63 65 2e 20 43 72 65 61 74 65 20 61 20 22 73 65 e.promises.at.once..Create.a."se
1100 6c 65 63 74 22 20 6f 62 6a 65 63 74 2c 20 61 64 64 20 70 72 6f 6d 69 73 65 73 0a 74 6f 20 69 74 lect".object,.add.promises.to.it
1120 2c 20 61 6e 64 20 61 77 61 69 74 20 6f 6e 20 69 74 2e 20 52 65 73 6f 6c 76 65 64 20 61 6e 64 20 ,.and.await.on.it..Resolved.and.
1140 72 65 74 75 72 6e 65 64 20 70 72 6f 6d 69 73 65 73 20 61 72 65 0a 61 75 74 6f 6d 61 74 69 63 61 returned.promises.are.automatica
1160 6c 6c 79 20 72 65 6d 6f 76 65 64 2c 20 61 6e 64 20 74 68 65 20 22 73 65 6c 65 63 74 22 20 6f 62 lly.removed,.and.the."select".ob
1180 6a 65 63 74 20 63 61 6e 20 62 65 20 72 65 75 73 65 64 2e 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d ject.can.be.reused...```el.(aio-
11a0 6d 61 6b 65 2d 73 65 6c 65 63 74 20 26 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 6d 69 73 65 73 29 0a make-select.&optional.promises).
11c0 3b 3b 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 60 61 69 6f 2d 73 65 6c 65 63 74 27 20 6f 62 6a ;;.Create.a.new.`aio-select'.obj
11e0 65 63 74 20 66 6f 72 20 77 61 69 74 69 6e 67 20 6f 6e 20 6d 75 6c 74 69 70 6c 65 20 70 72 6f 6d ect.for.waiting.on.multiple.prom
1200 69 73 65 73 2e 0a 0a 28 61 69 6f 2d 73 65 6c 65 63 74 2d 61 64 64 20 73 65 6c 65 63 74 20 70 72 ises...(aio-select-add.select.pr
1220 6f 6d 69 73 65 29 0a 3b 3b 20 41 64 64 20 50 52 4f 4d 49 53 45 20 74 6f 20 74 68 65 20 73 65 74 omise).;;.Add.PROMISE.to.the.set
1240 20 6f 66 20 70 72 6f 6d 69 73 65 73 20 69 6e 20 53 45 4c 45 43 54 2e 0a 0a 28 61 69 6f 2d 73 65 .of.promises.in.SELECT...(aio-se
1260 6c 65 63 74 2d 72 65 6d 6f 76 65 20 73 65 6c 65 63 74 20 70 72 6f 6d 69 73 65 29 0a 3b 3b 20 52 lect-remove.select.promise).;;.R
1280 65 6d 6f 76 65 20 50 52 4f 4d 49 53 45 20 66 6f 72 6d 20 74 68 65 20 73 65 74 20 6f 66 20 70 72 emove.PROMISE.form.the.set.of.pr
12a0 6f 6d 69 73 65 73 20 69 6e 20 53 45 4c 45 43 54 2e 0a 0a 28 61 69 6f 2d 73 65 6c 65 63 74 2d 70 omises.in.SELECT...(aio-select-p
12c0 72 6f 6d 69 73 65 73 20 73 65 6c 65 63 74 29 0a 3b 3b 20 52 65 74 75 72 6e 20 61 20 6c 69 73 74 romises.select).;;.Return.a.list
12e0 20 6f 66 20 70 72 6f 6d 69 73 65 73 20 69 6e 20 53 45 4c 45 43 54 2e 0a 0a 28 61 69 6f 2d 73 65 .of.promises.in.SELECT...(aio-se
1300 6c 65 63 74 20 73 65 6c 65 63 74 29 0a 3b 3b 20 52 65 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65 lect.select).;;.Return.a.promise
1320 20 74 68 61 74 20 72 65 73 6f 6c 76 65 73 20 77 68 65 6e 20 61 6e 79 20 70 72 6f 6d 69 73 65 20 .that.resolves.when.any.promise.
1340 69 6e 20 53 45 4c 45 43 54 20 72 65 73 6f 6c 76 65 73 2e 0a 60 60 60 0a 0a 46 6f 72 20 65 78 61 in.SELECT.resolves..```..For.exa
1360 6d 70 6c 65 2c 20 68 65 72 65 27 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f mple,.here's.an.implementation.o
1380 66 20 73 6c 65 65 70 20 73 6f 72 74 3a 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d 64 65 66 75 6e 20 f.sleep.sort:..```el.(aio-defun.
13a0 73 6c 65 65 70 2d 73 6f 72 74 20 28 76 61 6c 75 65 73 29 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 sleep-sort.(values)...(let*.((pr
13c0 6f 6d 69 73 65 73 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 76 29 20 28 61 69 6f 2d omises.(mapcar.(lambda.(v).(aio-
13e0 73 6c 65 65 70 20 76 20 76 29 29 20 76 61 6c 75 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 sleep.v.v)).values))..........(s
1400 65 6c 65 63 74 20 28 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 20 70 72 6f 6d 69 73 65 73 29 elect.(aio-make-select.promises)
1420 29 29 0a 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 72 65 70 65 61 74 20 28 6c 65 6e 67 74 68 20 70 )).....(cl-loop.repeat.(length.p
1440 72 6f 6d 69 73 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 65 78 74 20 3d romises)..............for.next.=
1460 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 73 65 6c 65 63 74 20 73 65 6c 65 63 74 29 29 .(aio-await.(aio-select.select))
1480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 61 69 6f 2d 61 77 61 69 74 ..............collect.(aio-await
14a0 20 6e 65 78 74 29 29 29 29 0a 60 60 60 0a 0a 23 23 20 53 65 6d 61 70 68 6f 72 65 20 41 50 49 0a .next)))).```..##.Semaphore.API.
14c0 0a 53 65 6d 61 70 68 6f 72 65 73 20 77 6f 72 6b 20 6a 75 73 74 20 61 73 20 74 68 65 79 20 77 6f .Semaphores.work.just.as.they.wo
14e0 75 6c 64 20 61 73 20 61 20 74 68 72 65 61 64 20 73 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f 6e 0a uld.as.a.thread.synchronization.
1500 70 72 69 6d 69 74 69 76 65 2e 20 54 68 65 72 65 27 73 20 61 6e 20 69 6e 74 65 72 6e 61 6c 20 63 primitive..There's.an.internal.c
1520 6f 75 6e 74 65 72 20 74 68 61 74 20 63 61 6e 6e 6f 74 20 64 72 6f 70 20 62 65 6c 6f 77 20 7a 65 ounter.that.cannot.drop.below.ze
1540 72 6f 2c 0a 61 6e 64 20 60 61 69 6f 2d 73 65 6d 2d 77 61 69 74 60 20 69 73 20 61 6e 20 61 77 61 ro,.and.`aio-sem-wait`.is.an.awa
1560 69 74 61 62 6c 65 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 6d 61 79 20 62 6c 6f 63 6b 20 74 itable.function.that.may.block.t
1580 68 65 0a 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 69 6f 6e 20 75 6e 74 69 6c 20 61 he.asynchronous.function.until.a
15a0 6e 6f 74 68 65 72 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c nother.asynchronous.function.cal
15c0 6c 73 0a 60 61 69 6f 2d 73 65 6d 2d 70 6f 73 74 60 2e 20 42 6c 6f 63 6b 65 64 20 66 75 6e 63 74 ls.`aio-sem-post`..Blocked.funct
15e0 69 6f 6e 73 20 77 61 69 74 20 69 6e 20 61 20 46 49 46 4f 20 71 75 65 75 65 20 61 6e 64 20 61 72 ions.wait.in.a.FIFO.queue.and.ar
1600 65 20 61 77 6f 6b 65 6e 0a 69 6e 20 74 68 65 20 73 61 6d 65 20 6f 72 64 65 72 20 74 68 61 74 20 e.awoken.in.the.same.order.that.
1620 74 68 65 79 20 61 77 61 69 74 65 64 2e 0a 0a 60 60 60 65 6c 0a 28 61 69 6f 2d 73 65 6d 20 69 6e they.awaited...```el.(aio-sem.in
1640 69 74 29 0a 3b 3b 20 43 72 65 61 74 65 20 61 20 6e 65 77 20 73 65 6d 61 70 68 6f 72 65 20 77 69 it).;;.Create.a.new.semaphore.wi
1660 74 68 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 49 4e 49 54 2e 0a 0a 28 61 69 6f 2d 73 65 6d th.initial.value.INIT...(aio-sem
1680 2d 70 6f 73 74 20 73 65 6d 29 0a 3b 3b 20 49 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75 -post.sem).;;.Increment.the.valu
16a0 65 20 6f 66 20 53 45 4d 2e 0a 0a 28 61 69 6f 2d 73 65 6d 2d 77 61 69 74 20 73 65 6d 29 0a 3b 3b e.of.SEM...(aio-sem-wait.sem).;;
16c0 20 44 65 63 72 65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 53 45 4d 2e 0a 60 60 60 .Decrement.the.value.of.SEM..```
16e0 0a 0a 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 77 ..This.can.be.used.to.create.a.w
1700 6f 72 6b 20 71 75 65 75 65 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 68 65 72 65 27 73 20 61 ork.queue..For.example,.here's.a
1720 0a 63 6f 6e 66 69 67 75 72 61 62 6c 65 20 64 6f 77 6e 6c 6f 61 64 20 71 75 65 75 65 20 66 6f 72 .configurable.download.queue.for
1740 20 60 75 72 6c 2d 72 65 74 72 69 65 76 65 60 3a 0a 0a 60 60 60 65 6c 0a 28 64 65 66 75 6e 20 66 .`url-retrieve`:..```el.(defun.f
1760 65 74 63 68 20 28 75 72 6c 2d 6c 69 73 74 20 6d 61 78 2d 70 61 72 61 6c 6c 65 6c 20 63 61 6c 6c etch.(url-list.max-parallel.call
1780 62 61 63 6b 29 0a 20 20 28 6c 65 74 20 28 28 73 65 6d 20 28 61 69 6f 2d 73 65 6d 20 6d 61 78 2d back)...(let.((sem.(aio-sem.max-
17a0 70 61 72 61 6c 6c 65 6c 29 29 29 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 75 72 6c 20 75 72 6c parallel))).....(dolist.(url.url
17c0 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 28 61 69 6f 2d 77 69 74 68 2d 61 73 79 6e 63 0a 20 20 20 -list).......(aio-with-async....
17e0 20 20 20 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 73 65 6d 2d 77 61 69 74 20 73 65 .....(aio-await.(aio-sem-wait.se
1800 6d 29 29 0a 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 m)).........(cl-destructuring-bi
1820 6e 64 20 28 73 74 61 74 75 73 20 2e 20 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 nd.(status...buffer)............
1840 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 75 72 6c 2d 72 65 74 72 69 65 76 65 20 75 72 .(aio-await.(aio-url-retrieve.ur
1860 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 73 65 6d 2d 70 6f 73 74 20 73 65 6d 29 l))...........(aio-sem-post.sem)
1880 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 ...........(funcall.callback....
18a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 ................(with-current-bu
18c0 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffer.buffer.....................
18e0 20 28 70 72 6f 67 31 20 28 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 .(prog1.(buffer-string).........
1900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 29 29 29 29 29 ...............(kill-buffer)))))
1920 29 29 29 29 0a 60 60 60 0a 0a 0a 5b 61 73 79 6e 63 69 6f 5d 3a 20 68 74 74 70 73 3a 2f 2f 64 6f )))).```...[asyncio]:.https://do
1940 63 73 2e 70 79 74 68 6f 6e 2e 6f 72 67 2f 33 2f 6c 69 62 72 61 72 79 2f 61 73 79 6e 63 69 6f 2e cs.python.org/3/library/asyncio.
1960 68 74 6d 6c 0a 5b 6d 65 6c 70 61 5d 3a 20 68 74 74 70 73 3a 2f 2f 6d 65 6c 70 61 2e 6f 72 67 2f html.[melpa]:.https://melpa.org/
1980 23 2f 61 69 6f 0a 5b 70 6f 73 74 5d 3a 20 68 74 74 70 73 3a 2f 2f 6e 75 6c 6c 70 72 6f 67 72 61 #/aio.[post]:.https://nullprogra
19a0 6d 2e 63 6f 6d 2f 62 6c 6f 67 2f 32 30 31 39 2f 30 33 2f 31 30 2f 0a 00 00 00 00 00 00 00 00 00 m.com/blog/2019/03/10/..........
19c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
19e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a00 61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30 34 2f 55 4e 4c 49 43 45 4e 53 45 00 00 00 00 00 aio-20200610.1904/UNLICENSE.....
1a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1a60 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
1a80 30 30 30 32 32 37 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 30 32 35 00 20 30 00 00 00 0002273.00000000000.013025..0...
1aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b00 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...................
1b20 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...................
1b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c00 54 68 69 73 20 69 73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e 63 75 6d 62 65 72 65 64 20 73 6f This.is.free.and.unencumbered.so
1c20 66 74 77 61 72 65 20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 ftware.released.into.the.public.
1c40 64 6f 6d 61 69 6e 2e 0a 0a 41 6e 79 6f 6e 65 20 69 73 20 66 72 65 65 20 74 6f 20 63 6f 70 79 2c domain...Anyone.is.free.to.copy,
1c60 20 6d 6f 64 69 66 79 2c 20 70 75 62 6c 69 73 68 2c 20 75 73 65 2c 20 63 6f 6d 70 69 6c 65 2c 20 .modify,.publish,.use,.compile,.
1c80 73 65 6c 6c 2c 20 6f 72 0a 64 69 73 74 72 69 62 75 74 65 20 74 68 69 73 20 73 6f 66 74 77 61 72 sell,.or.distribute.this.softwar
1ca0 65 2c 20 65 69 74 68 65 72 20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 20 6f 72 e,.either.in.source.code.form.or
1cc0 20 61 73 20 61 20 63 6f 6d 70 69 6c 65 64 0a 62 69 6e 61 72 79 2c 20 66 6f 72 20 61 6e 79 20 70 .as.a.compiled.binary,.for.any.p
1ce0 75 72 70 6f 73 65 2c 20 63 6f 6d 6d 65 72 63 69 61 6c 20 6f 72 20 6e 6f 6e 2d 63 6f 6d 6d 65 72 urpose,.commercial.or.non-commer
1d00 63 69 61 6c 2c 20 61 6e 64 20 62 79 20 61 6e 79 0a 6d 65 61 6e 73 2e 0a 0a 49 6e 20 6a 75 72 69 cial,.and.by.any.means...In.juri
1d20 73 64 69 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 63 6f 67 6e 69 7a 65 20 63 6f 70 79 72 69 67 sdictions.that.recognize.copyrig
1d40 68 74 20 6c 61 77 73 2c 20 74 68 65 20 61 75 74 68 6f 72 20 6f 72 20 61 75 74 68 6f 72 73 0a 6f ht.laws,.the.author.or.authors.o
1d60 66 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 20 64 65 64 69 63 61 74 65 20 61 6e 79 20 61 6e 64 f.this.software.dedicate.any.and
1d80 20 61 6c 6c 20 63 6f 70 79 72 69 67 68 74 20 69 6e 74 65 72 65 73 74 20 69 6e 20 74 68 65 0a 73 .all.copyright.interest.in.the.s
1da0 6f 66 74 77 61 72 65 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 20 57 65 oftware.to.the.public.domain..We
1dc0 20 6d 61 6b 65 20 74 68 69 73 20 64 65 64 69 63 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 62 65 .make.this.dedication.for.the.be
1de0 6e 65 66 69 74 0a 6f 66 20 74 68 65 20 70 75 62 6c 69 63 20 61 74 20 6c 61 72 67 65 20 61 6e 64 nefit.of.the.public.at.large.and
1e00 20 74 6f 20 74 68 65 20 64 65 74 72 69 6d 65 6e 74 20 6f 66 20 6f 75 72 20 68 65 69 72 73 20 61 .to.the.detriment.of.our.heirs.a
1e20 6e 64 0a 73 75 63 63 65 73 73 6f 72 73 2e 20 57 65 20 69 6e 74 65 6e 64 20 74 68 69 73 20 64 65 nd.successors..We.intend.this.de
1e40 64 69 63 61 74 69 6f 6e 20 74 6f 20 62 65 20 61 6e 20 6f 76 65 72 74 20 61 63 74 20 6f 66 0a 72 dication.to.be.an.overt.act.of.r
1e60 65 6c 69 6e 71 75 69 73 68 6d 65 6e 74 20 69 6e 20 70 65 72 70 65 74 75 69 74 79 20 6f 66 20 61 elinquishment.in.perpetuity.of.a
1e80 6c 6c 20 70 72 65 73 65 6e 74 20 61 6e 64 20 66 75 74 75 72 65 20 72 69 67 68 74 73 20 74 6f 20 ll.present.and.future.rights.to.
1ea0 74 68 69 73 0a 73 6f 66 74 77 61 72 65 20 75 6e 64 65 72 20 63 6f 70 79 72 69 67 68 74 20 6c 61 this.software.under.copyright.la
1ec0 77 2e 0a 0a 54 48 45 20 53 4f 46 54 57 41 52 45 20 49 53 20 50 52 4f 56 49 44 45 44 20 22 41 53 w...THE.SOFTWARE.IS.PROVIDED."AS
1ee0 20 49 53 22 2c 20 57 49 54 48 4f 55 54 20 57 41 52 52 41 4e 54 59 20 4f 46 20 41 4e 59 20 4b 49 .IS",.WITHOUT.WARRANTY.OF.ANY.KI
1f00 4e 44 2c 0a 45 58 50 52 45 53 53 20 4f 52 20 49 4d 50 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e ND,.EXPRESS.OR.IMPLIED,.INCLUDIN
1f20 47 20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 20 54 4f 20 54 48 45 20 57 41 52 52 41 4e 54 G.BUT.NOT.LIMITED.TO.THE.WARRANT
1f40 49 45 53 20 4f 46 0a 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 2c 20 46 49 54 4e 45 53 53 20 IES.OF.MERCHANTABILITY,.FITNESS.
1f60 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 20 41 4e 44 20 4e 4f 4e FOR.A.PARTICULAR.PURPOSE.AND.NON
1f80 49 4e 46 52 49 4e 47 45 4d 45 4e 54 2e 0a 49 4e 20 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 INFRINGEMENT..IN.NO.EVENT.SHALL.
1fa0 54 48 45 20 41 55 54 48 4f 52 53 20 42 45 20 4c 49 41 42 4c 45 20 46 4f 52 20 41 4e 59 20 43 4c THE.AUTHORS.BE.LIABLE.FOR.ANY.CL
1fc0 41 49 4d 2c 20 44 41 4d 41 47 45 53 20 4f 52 0a 4f 54 48 45 52 20 4c 49 41 42 49 4c 49 54 59 2c AIM,.DAMAGES.OR.OTHER.LIABILITY,
1fe0 20 57 48 45 54 48 45 52 20 49 4e 20 41 4e 20 41 43 54 49 4f 4e 20 4f 46 20 43 4f 4e 54 52 41 43 .WHETHER.IN.AN.ACTION.OF.CONTRAC
2000 54 2c 20 54 4f 52 54 20 4f 52 20 4f 54 48 45 52 57 49 53 45 2c 0a 41 52 49 53 49 4e 47 20 46 52 T,.TORT.OR.OTHERWISE,.ARISING.FR
2020 4f 4d 2c 20 4f 55 54 20 4f 46 20 4f 52 20 49 4e 20 43 4f 4e 4e 45 43 54 49 4f 4e 20 57 49 54 48 OM,.OUT.OF.OR.IN.CONNECTION.WITH
2040 20 54 48 45 20 53 4f 46 54 57 41 52 45 20 4f 52 20 54 48 45 20 55 53 45 20 4f 52 0a 4f 54 48 45 .THE.SOFTWARE.OR.THE.USE.OR.OTHE
2060 52 20 44 45 41 4c 49 4e 47 53 20 49 4e 20 54 48 45 20 53 4f 46 54 57 41 52 45 2e 0a 0a 46 6f 72 R.DEALINGS.IN.THE.SOFTWARE...For
2080 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65 66 65 72 20 .more.information,.please.refer.
20a0 74 6f 20 3c 68 74 74 70 3a 2f 2f 75 6e 6c 69 63 65 6e 73 65 2e 6f 72 67 2f 3e 0a 00 00 00 00 00 to.<http://unlicense.org/>......
20c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2200 61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30 34 2f 61 69 6f 2d 70 6b 67 2e 65 6c 00 00 00 00 aio-20200610.1904/aio-pkg.el....
2220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2260 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
2280 30 30 30 30 36 37 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 34 33 30 00 20 30 00 00 00 0000673.00000000000.013430..0...
22a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2300 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...................
2320 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...................
2340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2400 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 61 69 6f 22 20 22 32 30 32 30 30 36 31 30 2e (define-package."aio"."20200610.
2420 31 39 30 34 22 20 22 61 73 79 6e 63 2f 61 77 61 69 74 20 66 6f 72 20 45 6d 61 63 73 20 4c 69 73 1904"."async/await.for.Emacs.Lis
2440 70 22 0a 20 20 27 28 28 65 6d 61 63 73 20 22 32 36 2e 31 22 29 29 0a 20 20 3a 63 6f 6d 6d 69 74 p"...'((emacs."26.1"))...:commit
2460 20 22 64 61 39 33 35 32 33 65 32 33 35 35 32 39 66 61 39 37 64 36 66 32 35 31 33 31 39 64 39 65 ."da93523e235529fa97d6f251319d9e
2480 31 64 36 66 63 32 34 61 34 31 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 43 68 72 69 73 1d6fc24a41".:authors...'(("Chris
24a0 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20 22 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 topher.Wellons"..."wellons@nullp
24c0 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 73 0a 20 20 27 rogram.com"))...:maintainers...'
24e0 28 28 22 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20 22 77 65 6c 6c 6f (("Christopher.Wellons"..."wello
2500 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 ns@nullprogram.com"))...:maintai
2520 6e 65 72 0a 20 20 27 28 22 43 68 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 22 20 2e 20 ner...'("Christopher.Wellons"...
2540 22 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 72 6f 67 72 61 6d 2e 63 6f 6d 22 29 0a 20 20 3a 75 72 "wellons@nullprogram.com")...:ur
2560 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 73 6b 65 65 74 6f 2f 65 6d 61 l."https://github.com/skeeto/ema
2580 63 73 2d 61 69 6f 22 29 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 cs-aio").;;.Local.Variables:.;;.
25a0 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 no-byte-compile:.t.;;.End:......
25c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
25e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2600 61 69 6f 2d 32 30 32 30 30 36 31 30 2e 31 39 30 34 2f 61 69 6f 2e 65 6c 00 00 00 00 00 00 00 00 aio-20200610.1904/aio.el........
2620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2660 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
2680 30 30 34 31 33 31 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 36 34 36 00 20 30 00 00 00 0041314.00000000000.012646..0...
26a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
26e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2700 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...................
2720 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...................
2740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
27e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2800 3b 3b 3b 20 61 69 6f 2e 65 6c 20 2d 2d 2d 20 61 73 79 6e 63 2f 61 77 61 69 74 20 66 6f 72 20 45 ;;;.aio.el.---.async/await.for.E
2820 6d 61 63 73 20 4c 69 73 70 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 macs.Lisp.-*-.lexical-binding:.t
2840 3b 20 2d 2a 2d 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 66 72 65 65 20 61 6e 64 20 75 6e 65 6e 63 ;.-*-..;;.This.is.free.and.unenc
2860 75 6d 62 65 72 65 64 20 73 6f 66 74 77 61 72 65 20 72 65 6c 65 61 73 65 64 20 69 6e 74 6f 20 74 umbered.software.released.into.t
2880 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 43 68 he.public.domain...;;.Author:.Ch
28a0 72 69 73 74 6f 70 68 65 72 20 57 65 6c 6c 6f 6e 73 20 3c 77 65 6c 6c 6f 6e 73 40 6e 75 6c 6c 70 ristopher.Wellons.<wellons@nullp
28c0 72 6f 67 72 61 6d 2e 63 6f 6d 3e 0a 3b 3b 20 55 52 4c 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 rogram.com>.;;.URL:.https://gith
28e0 75 62 2e 63 6f 6d 2f 73 6b 65 65 74 6f 2f 65 6d 61 63 73 2d 61 69 6f 0a 3b 3b 20 56 65 72 73 69 ub.com/skeeto/emacs-aio.;;.Versi
2900 6f 6e 3a 20 31 2e 30 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 65 on:.1.0.;;.Package-Requires:.((e
2920 6d 61 63 73 20 22 32 36 2e 31 22 29 29 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a macs."26.1"))..;;;.Commentary:..
2940 3b 3b 20 60 61 69 6f 60 20 69 73 20 74 6f 20 45 6d 61 63 73 20 4c 69 73 70 20 61 73 20 5b 60 61 ;;.`aio`.is.to.Emacs.Lisp.as.[`a
2960 73 79 6e 63 69 6f 60 5d 5b 61 73 79 6e 63 69 6f 5d 20 69 73 20 74 6f 20 50 79 74 68 6f 6e 2e 20 syncio`][asyncio].is.to.Python..
2980 54 68 69 73 0a 3b 3b 20 70 61 63 6b 61 67 65 20 62 75 69 6c 64 73 20 75 70 6f 6e 20 45 6d 61 63 This.;;.package.builds.upon.Emac
29a0 73 20 32 35 20 67 65 6e 65 72 61 74 6f 72 73 20 74 6f 20 70 72 6f 76 69 64 65 20 66 75 6e 63 74 s.25.generators.to.provide.funct
29c0 69 6f 6e 73 20 74 68 61 74 0a 3b 3b 20 70 61 75 73 65 20 77 68 69 6c 65 20 74 68 65 79 20 77 61 ions.that.;;.pause.while.they.wa
29e0 69 74 20 6f 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 65 76 65 6e 74 73 2e 20 54 68 65 79 20 it.on.asynchronous.events..They.
2a00 64 6f 20 6e 6f 74 20 62 6c 6f 63 6b 20 61 6e 79 0a 3b 3b 20 74 68 72 65 61 64 20 77 68 69 6c 65 do.not.block.any.;;.thread.while
2a20 20 70 61 75 73 65 64 2e 0a 0a 3b 3b 20 54 68 65 20 6d 61 69 6e 20 63 6f 6d 70 6f 6e 65 6e 74 73 .paused...;;.The.main.components
2a40 20 6f 66 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 61 72 65 20 60 61 69 6f 2d 64 65 66 75 6e 27 .of.this.package.are.`aio-defun'
2a60 20 2f 20 60 61 69 6f 2d 6c 61 6d 62 64 61 27 0a 3b 3b 20 74 6f 20 64 65 66 69 6e 65 20 61 73 79 ./.`aio-lambda'.;;.to.define.asy
2a80 6e 63 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20 60 61 69 6f 2d 61 77 61 69 74 27 20 74 6f 20 nc.function,.and.`aio-await'.to.
2aa0 70 61 75 73 65 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 0a 3b 3b 20 77 68 69 6c 65 20 74 pause.these.functions.;;.while.t
2ac0 68 65 79 20 77 61 69 74 20 6f 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 65 76 65 6e 74 73 2e hey.wait.on.asynchronous.events.
2ae0 20 57 68 65 6e 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 0a 3b 3b 20 66 75 6e 63 74 69 6f .When.an.asynchronous.;;.functio
2b00 6e 20 69 73 20 70 61 75 73 65 64 2c 20 74 68 65 20 6d 61 69 6e 20 74 68 72 65 61 64 20 69 73 20 n.is.paused,.the.main.thread.is.
2b20 6e 6f 74 20 62 6c 6f 63 6b 65 64 2e 20 49 74 20 69 73 20 6e 6f 20 6d 6f 72 65 0a 3b 3b 20 6f 72 not.blocked..It.is.no.more.;;.or
2b40 20 6c 65 73 73 20 70 6f 77 65 72 66 75 6c 20 74 68 61 6e 20 63 61 6c 6c 62 61 63 6b 73 2c 20 62 .less.powerful.than.callbacks,.b
2b60 75 74 20 69 73 20 6e 69 63 65 72 20 74 6f 20 75 73 65 2e 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 ut.is.nicer.to.use...;;.This.is.
2b80 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 62 61 73 65 64 20 6f 6e 20 45 6d 61 63 73 implementation.is.based.on.Emacs
2ba0 20 32 35 20 67 65 6e 65 72 61 74 6f 72 73 2c 20 61 6e 64 0a 3b 3b 20 61 73 79 6e 63 68 72 6f 6e .25.generators,.and.;;.asynchron
2bc0 6f 75 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 69 74 65 72 61 ous.functions.are.actually.itera
2be0 74 6f 72 73 20 69 6e 20 64 69 73 67 75 69 73 65 2c 20 6f 70 65 72 61 74 65 64 0a 3b 3b 20 61 73 tors.in.disguise,.operated.;;.as
2c00 20 73 74 61 63 6b 6c 65 73 73 2c 20 61 73 79 6d 6d 65 74 72 69 63 20 63 6f 72 6f 75 74 69 6e 65 .stackless,.asymmetric.coroutine
2c20 73 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 s...;;;.Code:..(require.'cl-lib)
2c40 0a 28 72 65 71 75 69 72 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 29 0a 28 72 65 71 75 69 72 65 20 27 .(require.'font-lock).(require.'
2c60 67 65 6e 65 72 61 74 6f 72 29 0a 28 72 65 71 75 69 72 65 20 27 72 78 29 0a 0a 3b 3b 20 52 65 67 generator).(require.'rx)..;;.Reg
2c80 69 73 74 65 72 20 6e 65 77 20 65 72 72 6f 72 20 74 79 70 65 73 0a 28 64 65 66 69 6e 65 2d 65 72 ister.new.error.types.(define-er
2ca0 72 6f 72 20 27 61 69 6f 2d 63 61 6e 63 65 6c 20 22 50 72 6f 6d 69 73 65 20 77 61 73 20 63 61 6e ror.'aio-cancel."Promise.was.can
2cc0 63 65 6c 65 64 22 29 0a 28 64 65 66 69 6e 65 2d 65 72 72 6f 72 20 27 61 69 6f 2d 74 69 6d 65 6f celed").(define-error.'aio-timeo
2ce0 75 74 20 22 54 69 6d 65 6f 75 74 20 77 61 73 20 72 65 61 63 68 65 64 22 29 0a 0a 28 64 65 66 75 ut."Timeout.was.reached")..(defu
2d00 6e 20 61 69 6f 2d 70 72 6f 6d 69 73 65 20 28 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 n.aio-promise.()..."Create.a.new
2d20 20 70 72 6f 6d 69 73 65 20 6f 62 6a 65 63 74 2e 22 0a 20 20 28 72 65 63 6f 72 64 20 27 61 69 6f .promise.object."...(record.'aio
2d40 2d 70 72 6f 6d 69 73 65 20 6e 69 6c 20 28 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f -promise.nil.()))..(defsubst.aio
2d60 2d 70 72 6f 6d 69 73 65 2d 70 20 28 6f 62 6a 65 63 74 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f -promise-p.(object)..."Return.no
2d80 6e 2d 6e 69 6c 20 69 66 20 4f 42 4a 45 43 54 20 69 73 20 61 20 70 72 6f 6d 69 73 65 2e 22 0a 20 n-nil.if.OBJECT.is.a.promise."..
2da0 20 28 61 6e 64 20 28 65 71 20 27 61 69 6f 2d 70 72 6f 6d 69 73 65 20 28 74 79 70 65 2d 6f 66 20 .(and.(eq.'aio-promise.(type-of.
2dc0 6f 62 6a 65 63 74 29 29 0a 20 20 20 20 20 20 20 28 3d 20 33 20 28 6c 65 6e 67 74 68 20 6f 62 6a object))........(=.3.(length.obj
2de0 65 63 74 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 72 65 73 75 6c 74 20 28 70 ect))))..(defsubst.aio-result.(p
2e00 72 6f 6d 69 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 romise)..."Return.the.result.of.
2e20 50 52 4f 4d 49 53 45 2c 20 6f 72 20 6e 69 6c 20 69 66 20 69 74 20 69 73 20 75 6e 72 65 73 6f 6c PROMISE,.or.nil.if.it.is.unresol
2e40 76 65 64 2e 0a 0a 50 72 6f 6d 69 73 65 20 72 65 73 75 6c 74 73 20 61 72 65 20 77 72 61 70 70 65 ved...Promise.results.are.wrappe
2e60 64 20 69 6e 20 61 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 72 65 73 75 6c 74 20 6d 75 73 74 d.in.a.function..The.result.must
2e80 20 62 65 0a 63 61 6c 6c 65 64 20 28 65 2e 67 2e 20 60 66 75 6e 63 61 6c 6c 27 29 20 69 6e 20 6f .be.called.(e.g..`funcall').in.o
2ea0 72 64 65 72 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 68 65 20 76 61 6c 75 65 2e 22 0a 20 20 28 rder.to.retrieve.the.value."...(
2ec0 75 6e 6c 65 73 73 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 2d 70 20 70 72 6f 6d 69 73 65 29 0a 20 unless.(aio-promise-p.promise)..
2ee0 20 20 20 28 73 69 67 6e 61 6c 20 27 77 72 6f 6e 67 2d 74 79 70 65 2d 61 72 67 75 6d 65 6e 74 20 ...(signal.'wrong-type-argument.
2f00 28 6c 69 73 74 20 27 61 69 6f 2d 70 72 6f 6d 69 73 65 2d 70 20 70 72 6f 6d 69 73 65 29 29 29 0a (list.'aio-promise-p.promise))).
2f20 20 20 28 61 72 65 66 20 70 72 6f 6d 69 73 65 20 31 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d ..(aref.promise.1))..(defun.aio-
2f40 6c 69 73 74 65 6e 20 28 70 72 6f 6d 69 73 65 20 63 61 6c 6c 62 61 63 6b 29 0a 20 20 22 41 64 64 listen.(promise.callback)..."Add
2f60 20 43 41 4c 4c 42 41 43 4b 20 74 6f 20 50 52 4f 4d 49 53 45 2e 0a 0a 49 66 20 74 68 65 20 70 72 .CALLBACK.to.PROMISE...If.the.pr
2f80 6f 6d 69 73 65 20 68 61 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 72 65 73 6f 6c 76 65 64 2c omise.has.already.been.resolved,
2fa0 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 69 6c 6c 20 62 65 0a 73 63 68 65 64 75 6c 65 64 20 .the.callback.will.be.scheduled.
2fc0 66 6f 72 20 74 68 65 20 6e 65 78 74 20 65 76 65 6e 74 20 6c 6f 6f 70 20 74 75 72 6e 2e 22 0a 20 for.the.next.event.loop.turn."..
2fe0 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 61 69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 .(let.((result.(aio-result.promi
3000 73 65 29 29 29 0a 20 20 20 20 28 69 66 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 28 72 75 se))).....(if.result.........(ru
3020 6e 2d 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 63 61 6c 6c 62 61 63 6b 20 72 65 73 75 6c 74 29 n-at-time.0.nil.callback.result)
3040 0a 20 20 20 20 20 20 28 70 75 73 68 20 63 61 6c 6c 62 61 63 6b 20 28 61 72 65 66 20 70 72 6f 6d .......(push.callback.(aref.prom
3060 69 73 65 20 32 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 72 65 73 6f 6c 76 65 20 28 ise.2)))))..(defun.aio-resolve.(
3080 70 72 6f 6d 69 73 65 20 76 61 6c 75 65 2d 66 75 6e 63 74 69 6f 6e 29 0a 20 20 22 52 65 73 6f 6c promise.value-function)..."Resol
30a0 76 65 20 74 68 69 73 20 50 52 4f 4d 49 53 45 20 77 69 74 68 20 56 41 4c 55 45 2d 46 55 4e 43 54 ve.this.PROMISE.with.VALUE-FUNCT
30c0 49 4f 4e 2e 0a 0a 41 20 70 72 6f 6d 69 73 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 72 65 73 6f ION...A.promise.can.only.be.reso
30e0 6c 76 65 64 20 6f 6e 63 65 2c 20 61 6e 64 20 61 6e 79 20 66 75 72 74 68 65 72 20 63 61 6c 6c 73 lved.once,.and.any.further.calls
3100 20 74 6f 0a 60 61 69 6f 2d 72 65 73 6f 6c 76 65 27 20 61 72 65 20 73 69 6c 65 6e 74 6c 79 20 69 .to.`aio-resolve'.are.silently.i
3120 67 6e 6f 72 65 64 2e 20 54 68 65 20 56 41 4c 55 45 2d 46 55 4e 43 54 49 4f 4e 20 6d 75 73 74 20 gnored..The.VALUE-FUNCTION.must.
3140 62 65 20 61 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73 20 6e 6f 20 61 72 67 75 be.a.function.that.takes.no.argu
3160 6d 65 6e 74 73 20 61 6e 64 20 65 69 74 68 65 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 ments.and.either.returns.the.res
3180 75 6c 74 0a 76 61 6c 75 65 20 6f 72 20 72 65 74 68 72 6f 77 73 20 61 20 73 69 67 6e 61 6c 2e 22 ult.value.or.rethrows.a.signal."
31a0 0a 20 20 28 75 6e 6c 65 73 73 20 28 66 75 6e 63 74 69 6f 6e 70 20 76 61 6c 75 65 2d 66 75 6e 63 ...(unless.(functionp.value-func
31c0 74 69 6f 6e 29 0a 20 20 20 20 28 73 69 67 6e 61 6c 20 27 77 72 6f 6e 67 2d 74 79 70 65 2d 61 72 tion).....(signal.'wrong-type-ar
31e0 67 75 6d 65 6e 74 20 28 6c 69 73 74 20 27 66 75 6e 63 74 69 6f 6e 70 20 76 61 6c 75 65 2d 66 75 gument.(list.'functionp.value-fu
3200 6e 63 74 69 6f 6e 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 61 69 6f 2d 72 65 73 75 6c 74 20 nction)))...(unless.(aio-result.
3220 70 72 6f 6d 69 73 65 29 0a 20 20 20 20 28 6c 65 74 20 28 28 63 61 6c 6c 62 61 63 6b 73 20 28 6e promise).....(let.((callbacks.(n
3240 72 65 76 65 72 73 65 20 28 61 72 65 66 20 70 72 6f 6d 69 73 65 20 32 29 29 29 29 0a 20 20 20 20 reverse.(aref.promise.2)))).....
3260 20 20 28 73 65 74 66 20 28 61 72 65 66 20 70 72 6f 6d 69 73 65 20 31 29 20 76 61 6c 75 65 2d 66 ..(setf.(aref.promise.1).value-f
3280 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 65 66 20 70 72 6f 6d 69 73 unction.............(aref.promis
32a0 65 20 32 29 20 28 29 29 0a 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 61 6c 6c 62 61 63 6b e.2).()).......(dolist.(callback
32c0 20 63 61 6c 6c 62 61 63 6b 73 29 0a 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 .callbacks).........(run-at-time
32e0 20 30 20 6e 69 6c 20 63 61 6c 6c 62 61 63 6b 20 76 61 6c 75 65 2d 66 75 6e 63 74 69 6f 6e 29 29 .0.nil.callback.value-function))
3300 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 2d 73 74 65 70 20 28 69 74 65 72 20 70 72 6f 6d )))..(defun.aio--step.(iter.prom
3320 69 73 65 20 79 69 65 6c 64 2d 72 65 73 75 6c 74 29 0a 20 20 22 41 64 76 61 6e 63 65 20 49 54 45 ise.yield-result)..."Advance.ITE
3340 52 20 74 6f 20 74 68 65 20 6e 65 78 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 50 52 4f 4d 49 53 45 20 R.to.the.next.promise...PROMISE.
3360 69 73 20 74 68 65 20 72 65 74 75 72 6e 20 70 72 6f 6d 69 73 65 20 6f 66 20 74 68 65 20 69 74 65 is.the.return.promise.of.the.ite
3380 72 61 74 6f 72 2c 20 77 68 69 63 68 20 77 61 73 20 72 65 74 75 72 6e 65 64 0a 62 79 20 74 68 65 rator,.which.was.returned.by.the
33a0 20 6f 72 69 67 69 6e 61 74 69 6e 67 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2e 20 59 49 45 .originating.async.function..YIE
33c0 4c 44 2d 52 45 53 55 4c 54 20 69 73 20 74 68 65 20 76 61 6c 75 65 0a 66 75 6e 63 74 69 6f 6e 20 LD-RESULT.is.the.value.function.
33e0 72 65 73 75 6c 74 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 74 68 65 20 70 72 65 76 69 6f 75 result.directly.from.the.previou
3400 73 6c 79 20 79 69 65 6c 64 65 64 20 70 72 6f 6d 69 73 65 2e 22 0a 20 20 28 63 6f 6e 64 69 74 69 sly.yielded.promise."...(conditi
3420 6f 6e 2d 63 61 73 65 20 5f 0a 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 72 65 73 on-case._.......(cl-loop.for.res
3440 75 6c 74 20 3d 20 28 69 74 65 72 2d 6e 65 78 74 20 69 74 65 72 20 79 69 65 6c 64 2d 72 65 73 75 ult.=.(iter-next.iter.yield-resu
3460 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 6e 20 28 69 74 65 72 2d 6e 65 lt)................then.(iter-ne
3480 78 74 20 69 74 65 72 20 28 6c 61 6d 62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 0a 20 20 20 20 xt.iter.(lambda.().result)).....
34a0 20 20 20 20 20 20 20 20 20 20 20 75 6e 74 69 6c 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 2d 70 20 ...........until.(aio-promise-p.
34c0 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 28 result)................finally.(
34e0 61 69 6f 2d 6c 69 73 74 65 6e 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 aio-listen.result...............
3500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 76 61 .....................(lambda.(va
3520 6c 75 65 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 20 20 lue)............................
3540 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 2d 73 74 65 70 20 69 74 65 72 20 70 72 6f 6d 69 73 ..........(aio--step.iter.promis
3560 65 20 76 61 6c 75 65 29 29 29 29 0a 20 20 20 20 28 69 74 65 72 2d 65 6e 64 2d 6f 66 2d 73 65 71 e.value)))).....(iter-end-of-seq
3580 75 65 6e 63 65 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 77 69 74 68 2d 70 72 6f uence)))..(defmacro.aio-with-pro
35a0 6d 69 73 65 20 28 70 72 6f 6d 69 73 65 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 76 61 mise.(promise.&rest.body)..."Eva
35c0 6c 75 61 74 65 20 42 4f 44 59 20 61 6e 64 20 72 65 73 6f 6c 76 65 20 50 52 4f 4d 49 53 45 20 77 luate.BODY.and.resolve.PROMISE.w
35e0 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 2e 0a 0a 49 66 20 74 68 65 20 62 6f 64 79 20 73 69 67 ith.the.result...If.the.body.sig
3600 6e 61 6c 73 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 69 73 20 65 72 72 6f 72 20 77 69 6c 6c 20 62 nals.an.error,.this.error.will.b
3620 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 70 72 6f 6d 69 73 65 20 61 6e 64 20 72 65 74 68 e.stored.in.the.promise.and.reth
3640 72 6f 77 6e 20 69 6e 20 74 68 65 20 70 72 6f 6d 69 73 65 27 73 20 6c 69 73 74 65 6e 65 72 73 2e rown.in.the.promise's.listeners.
3660 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 64 65 66 75 6e 29 0a 20 20 20 20 "...(declare.(indent.defun).....
3680 20 20 20 20 20 20 20 28 64 65 62 75 67 20 28 66 6f 72 6d 20 62 6f 64 79 29 29 29 0a 20 20 28 63 .......(debug.(form.body)))...(c
36a0 6c 2d 61 73 73 65 72 74 20 28 65 71 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 20 74 29 29 l-assert.(eq.lexical-binding.t))
36c0 0a 20 20 60 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 2c 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 ...`(aio-resolve.,promise.......
36e0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 6f 72 0a ..........(condition-case.error.
3700 20 20 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 72 65 73 75 6c ....................(let.((resul
3720 74 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.(progn.,@body)))..............
3740 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 0a 20 20 20 .........(lambda.().result))....
3760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 6c 61 6d 62 64 61 20 28 29 ...............(error.(lambda.()
3780 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 20 20 28 73 69 67 ............................(sig
37a0 6e 61 6c 20 28 63 61 72 20 65 72 72 6f 72 29 20 28 63 64 72 20 65 72 72 6f 72 29 29 29 29 29 29 nal.(car.error).(cdr.error))))))
37c0 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 61 77 61 69 74 20 28 65 78 70 72 29 0a 20 20 )..(defmacro.aio-await.(expr)...
37e0 22 49 66 20 45 58 50 52 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 61 20 70 72 6f 6d 69 73 65 2c "If.EXPR.evaluates.to.a.promise,
3800 20 70 61 75 73 65 20 75 6e 74 69 6c 20 74 68 65 20 70 72 6f 6d 69 73 65 20 69 73 20 72 65 73 6f .pause.until.the.promise.is.reso
3820 6c 76 65 64 2e 0a 0a 50 61 75 73 69 6e 67 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e lved...Pausing.an.async.function
3840 20 64 6f 65 73 20 6e 6f 74 20 62 6c 6f 63 6b 20 45 6d 61 63 73 27 20 6d 61 69 6e 20 74 68 72 65 .does.not.block.Emacs'.main.thre
3860 61 64 2e 20 49 66 0a 45 58 50 52 20 64 6f 65 73 6e 27 74 20 65 76 61 6c 75 61 74 65 20 74 6f 20 ad..If.EXPR.doesn't.evaluate.to.
3880 61 20 70 72 6f 6d 69 73 65 2c 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 a.promise,.the.value.is.returned
38a0 0a 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 .immediately.and.the.function.is
38c0 20 6e 6f 74 20 70 61 75 73 65 64 2e 20 53 69 6e 63 65 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f .not.paused..Since.async.functio
38e0 6e 73 0a 72 65 74 75 72 6e 20 70 72 6f 6d 69 73 65 73 2c 20 61 73 79 6e 63 20 66 75 6e 63 74 69 ns.return.promises,.async.functi
3900 6f 6e 73 20 63 61 6e 20 61 77 61 69 74 20 64 69 72 65 63 74 6c 79 20 6f 6e 20 6f 74 68 65 72 0a ons.can.await.directly.on.other.
3920 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 73 20 75 73 69 6e 67 20 74 68 69 73 20 6d 61 63 72 6f async.functions.using.this.macro
3940 2e 0a 0a 54 68 69 73 20 6d 61 63 72 6f 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 ...This.macro.can.only.be.used.i
3960 6e 73 69 64 65 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2c 20 65 69 74 68 65 72 0a nside.an.async.function,.either.
3980 60 61 69 6f 2d 6c 61 6d 62 64 61 27 20 6f 72 20 60 61 69 6f 2d 64 65 66 75 6e 27 2e 22 0a 20 20 `aio-lambda'.or.`aio-defun'."...
39a0 60 28 66 75 6e 63 61 6c 6c 20 28 69 74 65 72 2d 79 69 65 6c 64 20 2c 65 78 70 72 29 29 29 0a 0a `(funcall.(iter-yield.,expr)))..
39c0 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 6c 61 6d 62 64 61 20 28 61 72 67 6c 69 73 74 20 26 72 (defmacro.aio-lambda.(arglist.&r
39e0 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4c 69 6b 65 20 60 6c 61 6d 62 64 61 27 2c 20 62 75 74 20 est.body)..."Like.`lambda',.but.
3a00 64 65 66 69 6e 65 73 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 54 68 65 20 defines.an.async.function...The.
3a20 62 6f 64 79 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 75 73 65 20 60 61 body.of.this.function.may.use.`a
3a40 69 6f 2d 61 77 61 69 74 27 20 74 6f 20 77 61 69 74 20 6f 6e 0a 70 72 6f 6d 69 73 65 73 2e 20 57 io-await'.to.wait.on.promises..W
3a60 68 65 6e 20 61 6e 20 61 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 2c hen.an.async.function.is.called,
3a80 20 69 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 72 65 74 75 72 6e 73 20 61 20 70 72 6f 6d 69 73 .it.immediately.returns.a.promis
3aa0 65 20 74 68 61 74 20 77 69 6c 6c 20 72 65 73 6f 6c 76 65 20 74 6f 20 74 68 65 20 66 75 6e 63 74 e.that.will.resolve.to.the.funct
3ac0 69 6f 6e 27 73 20 72 65 74 75 72 6e 0a 76 61 6c 75 65 2c 20 6f 72 20 61 6e 79 20 75 6e 63 61 75 ion's.return.value,.or.any.uncau
3ae0 67 68 74 20 65 72 72 6f 72 20 73 69 67 6e 61 6c 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 ght.error.signal."...(declare.(i
3b00 6e 64 65 6e 74 20 64 65 66 75 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 63 2d 73 74 72 ndent.defun)............(doc-str
3b20 69 6e 67 20 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65 62 75 67 20 28 26 64 65 66 69 6e ing.3)............(debug.(&defin
3b40 65 20 6c 61 6d 62 64 61 2d 6c 69 73 74 20 6c 61 6d 62 64 61 2d 64 6f 63 0a 20 20 20 20 20 20 20 e.lambda-list.lambda-doc........
3b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 26 6f 70 74 69 6f 6e 61 6c 20 28 ....................[&optional.(
3b80 22 69 6e 74 65 72 61 63 74 69 76 65 22 20 69 6e 74 65 72 61 63 74 69 76 65 29 5d 0a 20 20 20 20 "interactive".interactive)].....
3ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 72 65 73 74 20 73 65 78 .......................&rest.sex
3bc0 70 29 29 29 0a 20 20 28 6c 65 74 20 28 28 61 72 67 73 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 p)))...(let.((args.(make-symbol.
3be0 22 61 72 67 73 22 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 6d 69 73 65 20 28 6d 61 6b 65 2d "args")).........(promise.(make-
3c00 73 79 6d 62 6f 6c 20 22 70 72 6f 6d 69 73 65 22 29 29 0a 20 20 20 20 20 20 20 20 28 73 70 6c 69 symbol."promise")).........(spli
3c20 74 2d 62 6f 64 79 20 28 6d 61 63 72 6f 65 78 70 2d 70 61 72 73 65 2d 62 6f 64 79 20 62 6f 64 79 t-body.(macroexp-parse-body.body
3c40 29 29 29 0a 20 20 20 20 60 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 2c 61 72 67 73 29 0a 20 ))).....`(lambda.(&rest.,args)..
3c60 20 20 20 20 20 20 2c 40 28 63 61 72 20 73 70 6c 69 74 2d 62 6f 64 79 29 0a 20 20 20 20 20 20 20 ......,@(car.split-body)........
3c80 28 6c 65 74 2a 20 28 28 2c 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 0a (let*.((,promise.(aio-promise)).
3ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 74 65 72 20 28 61 70 70 6c 79 20 28 69 74 65 72 ..............(iter.(apply.(iter
3cc0 2d 6c 61 6d 62 64 61 20 2c 61 72 67 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -lambda.,arglist................
3ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 77 69 74 68 2d 70 72 6f 6d 69 73 65 20 ..............(aio-with-promise.
3d00 2c 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,promise........................
3d20 20 20 20 20 20 20 20 20 2c 40 28 63 64 72 20 73 70 6c 69 74 2d 62 6f 64 79 29 29 29 0a 20 20 20 ........,@(cdr.split-body)))....
3d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 61 72 67 73 29 29 29 ........................,args)))
3d60 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 2c 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 ..........(prog1.,promise.......
3d80 20 20 20 20 20 28 61 69 6f 2d 2d 73 74 65 70 20 69 74 65 72 20 2c 70 72 6f 6d 69 73 65 20 6e 69 .....(aio--step.iter.,promise.ni
3da0 6c 29 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 64 65 66 75 6e 20 28 6e 61 l))))))..(defmacro.aio-defun.(na
3dc0 6d 65 20 61 72 67 6c 69 73 74 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 4c 69 6b 65 20 60 me.arglist.&rest.body)..."Like.`
3de0 61 69 6f 2d 6c 61 6d 62 64 61 27 20 62 75 74 20 67 69 76 65 73 20 74 68 65 20 66 75 6e 63 74 69 aio-lambda'.but.gives.the.functi
3e00 6f 6e 20 61 20 6e 61 6d 65 20 6c 69 6b 65 20 60 64 65 66 75 6e 27 2e 22 0a 20 20 28 64 65 63 6c on.a.name.like.`defun'."...(decl
3e20 61 72 65 20 28 69 6e 64 65 6e 74 20 64 65 66 75 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 are.(indent.defun)............(d
3e40 6f 63 2d 73 74 72 69 6e 67 20 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65 62 75 67 20 28 oc-string.3)............(debug.(
3e60 26 64 65 66 69 6e 65 20 6e 61 6d 65 20 6c 61 6d 62 64 61 2d 6c 69 73 74 20 26 72 65 73 74 20 73 &define.name.lambda-list.&rest.s
3e80 65 78 70 29 29 29 0a 20 20 60 28 70 72 6f 67 6e 0a 20 20 20 20 20 28 64 65 66 61 6c 69 61 73 20 exp)))...`(progn......(defalias.
3ea0 27 2c 6e 61 6d 65 20 28 61 69 6f 2d 6c 61 6d 62 64 61 20 2c 61 72 67 6c 69 73 74 20 2c 40 62 6f ',name.(aio-lambda.,arglist.,@bo
3ec0 64 79 29 29 0a 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 2d 70 75 74 20 27 2c 6e 61 6d 65 20 27 dy))......(function-put.',name.'
3ee0 61 69 6f 2d 64 65 66 75 6e 2d 70 20 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 77 61 69 aio-defun-p.t)))..(defun.aio-wai
3f00 74 2d 66 6f 72 20 28 70 72 6f 6d 69 73 65 29 0a 20 20 22 53 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 t-for.(promise)..."Synchronously
3f20 20 77 61 69 74 20 66 6f 72 20 50 52 4f 4d 49 53 45 2c 20 62 6c 6f 63 6b 69 6e 67 20 74 68 65 20 .wait.for.PROMISE,.blocking.the.
3f40 63 75 72 72 65 6e 74 20 74 68 72 65 61 64 2e 22 0a 20 20 28 77 68 69 6c 65 20 28 6e 75 6c 6c 20 current.thread."...(while.(null.
3f60 28 61 69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 73 65 29 29 0a 20 20 20 20 28 61 63 63 65 70 (aio-result.promise)).....(accep
3f80 74 2d 70 72 6f 63 65 73 73 2d 6f 75 74 70 75 74 29 29 0a 20 20 28 66 75 6e 63 61 6c 6c 20 28 61 t-process-output))...(funcall.(a
3fa0 69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 73 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f io-result.promise)))..(defun.aio
3fc0 2d 63 61 6e 63 65 6c 20 28 70 72 6f 6d 69 73 65 20 26 6f 70 74 69 6f 6e 61 6c 20 72 65 61 73 6f -cancel.(promise.&optional.reaso
3fe0 6e 29 0a 20 20 22 41 74 74 65 6d 70 74 20 74 6f 20 63 61 6e 63 65 6c 20 50 52 4f 4d 49 53 45 2c n)..."Attempt.to.cancel.PROMISE,
4000 20 72 65 74 75 72 6e 69 6e 67 20 6e 6f 6e 2d 6e 69 6c 20 69 66 20 73 75 63 63 65 73 73 66 75 6c .returning.non-nil.if.successful
4020 2e 0a 0a 41 6c 6c 20 61 77 61 69 74 65 72 73 20 77 69 6c 6c 20 72 65 63 65 69 76 65 20 61 6e 20 ...All.awaiters.will.receive.an.
4040 61 69 6f 2d 63 61 6e 63 65 6c 20 73 69 67 6e 61 6c 2e 20 54 68 65 20 61 63 74 75 61 6c 0a 75 6e aio-cancel.signal..The.actual.un
4060 64 65 72 6c 79 69 6e 67 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6f 70 65 72 61 74 69 6f 6e 20 derlying.asynchronous.operation.
4080 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 62 65 20 63 61 6e 63 65 6c 65 64 2e 22 0a will.not.actually.be.canceled.".
40a0 20 20 28 75 6e 6c 65 73 73 20 28 61 69 6f 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 73 65 29 0a 20 ..(unless.(aio-result.promise)..
40c0 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f 6d 69 73 65 20 28 6c 61 6d 62 64 61 20 ...(aio-resolve.promise.(lambda.
40e0 28 29 20 28 73 69 67 6e 61 6c 20 27 61 69 6f 2d 63 61 6e 63 65 6c 20 72 65 61 73 6f 6e 29 29 29 ().(signal.'aio-cancel.reason)))
4100 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f 2d 77 69 74 68 2d 61 73 79 6e 63 20 28 26 72 ))..(defmacro.aio-with-async.(&r
4120 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 76 61 6c 75 61 74 65 20 42 4f 44 59 20 61 73 79 6e 63 est.body)..."Evaluate.BODY.async
4140 68 72 6f 6e 6f 75 73 6c 79 20 61 73 20 69 66 20 69 74 20 77 61 73 20 69 6e 73 69 64 65 20 60 61 hronously.as.if.it.was.inside.`a
4160 69 6f 2d 6c 61 6d 62 64 61 27 2e 0a 0a 53 69 6e 63 65 20 42 4f 44 59 20 69 73 20 65 76 61 6c 75 io-lambda'...Since.BODY.is.evalu
4180 65 64 20 69 6e 73 69 64 65 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6c 61 6d 62 64 61 ed.inside.an.asynchronous.lambda
41a0 2c 20 60 61 69 6f 2d 61 77 61 69 74 27 0a 69 73 20 61 76 61 69 6c 61 62 6c 65 20 68 65 72 65 2e ,.`aio-await'.is.available.here.
41c0 20 54 68 69 73 20 6d 61 63 72 6f 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 61 20 70 72 6f 6d 69 .This.macro.evaluates.to.a.promi
41e0 73 65 20 66 6f 72 20 42 4f 44 59 27 73 0a 65 76 65 6e 74 75 61 6c 20 72 65 73 75 6c 74 2e 0a 0a se.for.BODY's.eventual.result...
4200 42 65 77 61 72 65 3a 20 44 79 6e 61 6d 69 63 20 62 69 6e 64 69 6e 67 73 20 74 68 61 74 20 61 72 Beware:.Dynamic.bindings.that.ar
4220 65 20 6c 65 78 69 63 61 6c 6c 79 20 6f 75 74 73 69 64 65 0a e2 80 98 61 69 6f 2d 77 69 74 68 2d e.lexically.outside....aio-with-
4240 61 73 79 6e 63 e2 80 99 20 62 6c 6f 63 6b 73 20 68 61 76 65 20 6e 6f 20 65 66 66 65 63 74 2e 20 async....blocks.have.no.effect..
4260 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 0a 20 20 28 64 65 66 76 61 72 20 64 79 6e 61 6d 69 63 .For.example,....(defvar.dynamic
4280 2d 76 61 72 20 6e 69 6c 29 0a 20 20 28 64 65 66 75 6e 20 6d 79 2d 66 75 6e 63 20 28 29 0a 20 20 -var.nil)...(defun.my-func.()...
42a0 20 20 28 6c 65 74 20 28 28 64 79 6e 61 6d 69 63 2d 76 61 72 20 31 32 33 29 29 0a 20 20 20 20 20 ..(let.((dynamic-var.123))......
42c0 20 28 61 69 6f 2d 77 69 74 68 2d 61 73 79 6e 63 20 64 79 6e 61 6d 69 63 2d 76 61 72 29 29 29 0a .(aio-with-async.dynamic-var))).
42e0 20 20 28 6c 65 74 20 28 28 64 79 6e 61 6d 69 63 2d 76 61 72 20 34 35 36 29 29 0a 20 20 20 20 28 ..(let.((dynamic-var.456)).....(
4300 61 69 6f 2d 77 61 69 74 2d 66 6f 72 20 28 6d 79 2d 66 75 6e 63 29 29 29 0a 20 20 e2 87 92 20 34 aio-wait-for.(my-func))).......4
4320 35 36 0a 0a 4f 74 68 65 72 20 67 6c 6f 62 61 6c 20 73 74 61 74 65 20 73 75 63 68 20 61 73 20 74 56..Other.global.state.such.as.t
4340 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 62 65 68 61 76 65 73 20 6c 69 6b 65 77 69 he.current.buffer.behaves.likewi
4360 73 65 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 30 29 0a 20 20 20 20 20 se."...(declare.(indent.0)......
4380 20 20 20 20 20 20 28 64 65 62 75 67 20 28 26 72 65 73 74 20 73 65 78 70 29 29 29 0a 20 20 60 28 ......(debug.(&rest.sexp)))...`(
43a0 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 66 75 6e 63 61 6c 6c 20 28 61 69 6f 2d 6c 61 6d 62 let.((promise.(funcall.(aio-lamb
43c0 64 61 20 28 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 20 da.()...........................
43e0 20 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 61 69 6f 2d 73 6c 65 65 70 20 30 29 29 0a 20 20 20 ...(aio-await.(aio-sleep.0))....
4400 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 2c 40 62 6f 64 79 ..........................,@body
4420 29 29 29 29 0a 20 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 20 ))))......(prog1.promise........
4440 3b 3b 20 54 68 65 20 69 73 20 74 68 65 20 6d 61 69 6e 20 66 65 61 74 75 72 65 3a 20 46 6f 72 63 ;;.The.is.the.main.feature:.Forc
4460 65 20 74 68 65 20 66 69 6e 61 6c 20 72 65 73 75 6c 74 20 74 6f 20 62 65 0a 20 20 20 20 20 20 20 e.the.final.result.to.be........
4480 3b 3b 20 72 65 61 6c 69 7a 65 64 20 73 6f 20 74 68 61 74 20 65 72 72 6f 72 73 20 61 72 65 20 72 ;;.realized.so.that.errors.are.r
44a0 65 70 6f 72 74 65 64 2e 0a 20 20 20 20 20 20 20 28 61 69 6f 2d 6c 69 73 74 65 6e 20 70 72 6f 6d eported.........(aio-listen.prom
44c0 69 73 65 20 23 27 66 75 6e 63 61 6c 6c 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 61 69 6f ise.#'funcall))))..(defmacro.aio
44e0 2d 63 68 61 69 6e 20 28 65 78 70 72 29 0a 20 20 22 60 61 69 6f 2d 61 77 61 69 74 27 20 6f 6e 20 -chain.(expr)..."`aio-await'.on.
4500 45 58 50 52 20 61 6e 64 20 72 65 70 6c 61 63 65 20 70 6c 61 63 65 20 45 58 50 52 20 77 69 74 68 EXPR.and.replace.place.EXPR.with
4520 20 74 68 65 20 6e 65 78 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 45 58 50 52 20 6d 75 73 74 20 62 65 .the.next.promise...EXPR.must.be
4540 20 73 65 74 66 2d 61 62 6c 65 2e 20 52 65 74 75 72 6e 73 20 28 63 64 72 20 72 65 73 75 6c 74 29 .setf-able..Returns.(cdr.result)
4560 2e 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 0a 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75 ..This.macro.is.intended.to.be.u
4580 73 65 64 20 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 27 20 69 6e 20 sed.with.`aio-make-callback'.in.
45a0 6f 72 64 65 72 20 74 6f 20 66 6f 6c 6c 6f 77 0a 61 20 63 68 61 69 6e 20 6f 66 20 70 72 6f 6d 69 order.to.follow.a.chain.of.promi
45c0 73 65 2d 79 69 65 6c 64 69 6e 67 20 70 72 6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 se-yielding.promises."...(let.((
45e0 72 65 73 75 6c 74 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 72 65 73 75 6c 74 22 29 29 29 0a result.(make-symbol."result"))).
4600 20 20 20 20 60 28 6c 65 74 20 28 28 2c 72 65 73 75 6c 74 20 28 61 69 6f 2d 61 77 61 69 74 20 2c ....`(let.((,result.(aio-await.,
4620 65 78 70 72 29 29 29 0a 20 20 20 20 20 20 20 28 73 65 74 66 20 2c 65 78 70 72 20 28 63 61 72 20 expr)))........(setf.,expr.(car.
4640 2c 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 20 28 63 64 72 20 2c 72 65 73 75 6c 74 29 29 29 ,result))........(cdr.,result)))
4660 29 0a 0a 3b 3b 20 55 73 65 66 75 6c 20 70 72 6f 6d 69 73 65 2d 72 65 74 75 72 6e 69 6e 67 20 66 )..;;.Useful.promise-returning.f
4680 75 6e 63 74 69 6f 6e 73 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 75 72 6c 29 0a 0a 28 61 69 6f 2d unctions:..(require.'url)..(aio-
46a0 64 65 66 75 6e 20 61 69 6f 2d 61 6c 6c 20 28 70 72 6f 6d 69 73 65 73 29 0a 20 20 22 52 65 74 75 defun.aio-all.(promises)..."Retu
46c0 72 6e 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 20 72 65 73 6f 6c 76 65 73 20 77 68 65 6e 20 rn.a.promise.that.resolves.when.
46e0 61 6c 6c 20 50 52 4f 4d 49 53 45 53 20 61 72 65 20 72 65 73 6f 6c 76 65 64 2e 22 0a 20 20 28 64 all.PROMISES.are.resolved."...(d
4700 6f 6c 69 73 74 20 28 70 72 6f 6d 69 73 65 20 70 72 6f 6d 69 73 65 73 29 0a 20 20 20 20 28 61 69 olist.(promise.promises).....(ai
4720 6f 2d 61 77 61 69 74 20 70 72 6f 6d 69 73 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 63 o-await.promise)))..(defun.aio-c
4740 61 74 63 68 20 28 70 72 6f 6d 69 73 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6e 65 77 20 70 atch.(promise)..."Return.a.new.p
4760 72 6f 6d 69 73 65 20 74 68 61 74 20 77 72 61 70 73 20 50 52 4f 4d 49 53 45 20 62 75 74 20 77 69 romise.that.wraps.PROMISE.but.wi
4780 6c 6c 20 6e 65 76 65 72 20 73 69 67 6e 61 6c 2e 0a 0a 54 68 65 20 70 72 6f 6d 69 73 65 20 76 61 ll.never.signal...The.promise.va
47a0 6c 75 65 20 69 73 20 61 20 63 6f 6e 73 20 77 68 65 72 65 20 74 68 65 20 63 61 72 20 69 73 20 65 lue.is.a.cons.where.the.car.is.e
47c0 69 74 68 65 72 20 3a 73 75 63 63 65 73 73 20 6f 72 0a 3a 65 72 72 6f 72 2e 20 46 6f 72 20 3a 73 ither.:success.or.:error..For.:s
47e0 75 63 63 65 73 73 2c 20 74 68 65 20 63 64 72 20 77 69 6c 6c 20 62 65 20 74 68 65 20 72 65 73 75 uccess,.the.cdr.will.be.the.resu
4800 6c 74 20 76 61 6c 75 65 2e 20 46 6f 72 0a 3a 65 72 72 6f 72 2c 20 74 68 65 20 63 64 72 20 77 69 lt.value..For.:error,.the.cdr.wi
4820 6c 6c 20 62 65 20 74 68 65 20 65 72 72 6f 72 20 64 61 74 61 2e 22 0a 20 20 28 6c 65 74 20 28 28 ll.be.the.error.data."...(let.((
4840 72 65 73 75 6c 74 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28 63 6c 2d 66 result.(aio-promise))).....(cl-f
4860 6c 65 74 20 28 28 63 61 6c 6c 62 61 63 6b 20 28 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 let.((callback.(value)..........
4880 20 20 20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 72 65 73 75 6c 74 0a 20 20 20 20 20 .......(aio-resolve.result......
48a0 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 6c 61 6d 62 64 61 20 ........................(lambda.
48c0 28 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 20 20 20 20 ()..............................
48e0 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 ..(condition-case.error.........
4900 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 63 6f 6e 73 ...........................(cons
4920 20 3a 73 75 63 63 65 73 73 20 28 66 75 6e 63 61 6c 6c 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 .:success.(funcall.value))......
4940 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 20 28 65 72 72 ............................(err
4960 6f 72 20 28 63 6f 6e 73 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 29 29 29 29 29 29 29 0a 20 20 20 or.(cons.:error.error)))))))....
4980 20 20 20 28 70 72 6f 67 31 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 28 61 69 6f 2d 6c 69 ...(prog1.result.........(aio-li
49a0 73 74 65 6e 20 70 72 6f 6d 69 73 65 20 23 27 63 61 6c 6c 62 61 63 6b 29 29 29 29 29 0a 0a 28 64 sten.promise.#'callback)))))..(d
49c0 65 66 75 6e 20 61 69 6f 2d 73 6c 65 65 70 20 28 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f 6e 61 efun.aio-sleep.(seconds.&optiona
49e0 6c 20 72 65 73 75 6c 74 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 70 72 6f 6d 69 73 65 20 74 68 l.result)..."Create.a.promise.th
4a00 61 74 20 69 73 20 72 65 73 6f 6c 76 65 64 20 61 66 74 65 72 20 53 45 43 4f 4e 44 53 20 77 69 74 at.is.resolved.after.SECONDS.wit
4a20 68 20 52 45 53 55 4c 54 2e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 76 61 6c 75 65 h.RESULT...The.result.is.a.value
4a40 2c 20 6e 6f 74 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20 69 74 20 77 ,.not.a.value.function,.and.it.w
4a60 69 6c 6c 20 62 65 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 72 61 70 70 65 64 20 77 69 74 ill.be.automatically.wrapped.wit
4a80 68 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 20 28 73 65 65 20 60 61 69 6f 2d 72 65 73 h.a.value.function.(see.`aio-res
4aa0 6f 6c 76 65 27 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 70 olve')."...(let.((promise.(aio-p
4ac0 72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65 0a 20 20 20 romise))).....(prog1.promise....
4ae0 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 73 65 63 6f 6e 64 73 20 6e 69 6c 0a 20 20 20 20 ...(run-at-time.seconds.nil.....
4b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 61 69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f ...............#'aio-resolve.pro
4b20 6d 69 73 65 20 28 6c 61 6d 62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 mise.(lambda.().result)))))..(de
4b40 66 75 6e 20 61 69 6f 2d 69 64 6c 65 20 28 73 65 63 6f 6e 64 73 20 26 6f 70 74 69 6f 6e 61 6c 20 fun.aio-idle.(seconds.&optional.
4b60 72 65 73 75 6c 74 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 result)..."Create.a.promise.that
4b80 20 69 73 20 72 65 73 6f 6c 76 65 64 20 61 66 74 65 72 20 69 64 6c 65 20 53 45 43 4f 4e 44 53 20 .is.resolved.after.idle.SECONDS.
4ba0 77 69 74 68 20 52 45 53 55 4c 54 2e 0a 0a 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 76 61 with.RESULT...The.result.is.a.va
4bc0 6c 75 65 2c 20 6e 6f 74 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64 20 69 lue,.not.a.value.function,.and.i
4be0 74 20 77 69 6c 6c 20 62 65 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 72 61 70 70 65 64 20 t.will.be.automatically.wrapped.
4c00 77 69 74 68 20 61 20 76 61 6c 75 65 20 66 75 6e 63 74 69 6f 6e 20 28 73 65 65 20 60 61 69 6f 2d with.a.value.function.(see.`aio-
4c20 72 65 73 6f 6c 76 65 27 29 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 resolve')."...(let.((promise.(ai
4c40 6f 2d 70 72 6f 6d 69 73 65 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65 0a o-promise))).....(prog1.promise.
4c60 20 20 20 20 20 20 28 72 75 6e 2d 77 69 74 68 2d 69 64 6c 65 2d 74 69 6d 65 72 20 73 65 63 6f 6e ......(run-with-idle-timer.secon
4c80 64 73 20 6e 69 6c 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 ds.nil..........................
4ca0 20 20 23 27 61 69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f 6d 69 73 65 20 28 6c 61 6d 62 64 61 20 ..#'aio-resolve.promise.(lambda.
4cc0 28 29 20 72 65 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 74 69 6d 65 6f ().result)))))..(defun.aio-timeo
4ce0 75 74 20 28 73 65 63 6f 6e 64 73 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 70 72 6f 6d 69 73 65 ut.(seconds)..."Create.a.promise
4d00 20 77 69 74 68 20 61 20 74 69 6d 65 6f 75 74 20 65 72 72 6f 72 20 61 66 74 65 72 20 53 45 43 4f .with.a.timeout.error.after.SECO
4d20 4e 44 53 2e 22 0a 20 20 28 6c 65 74 20 28 28 74 69 6d 65 6f 75 74 20 28 61 69 6f 2d 70 72 6f 6d NDS."...(let.((timeout.(aio-prom
4d40 69 73 65 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 ise))).....(prog1.timeout.......
4d60 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 73 65 63 6f 6e 64 73 20 6e 69 6c 23 27 61 69 6f 2d 72 65 (run-at-time.seconds.nil#'aio-re
4d80 73 6f 6c 76 65 20 74 69 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 solve.timeout...................
4da0 20 28 6c 61 6d 62 64 61 20 28 29 20 28 73 69 67 6e 61 6c 20 27 61 69 6f 2d 74 69 6d 65 6f 75 74 .(lambda.().(signal.'aio-timeout
4dc0 20 73 65 63 6f 6e 64 73 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 75 72 6c 2d 72 .seconds))))))..(defun.aio-url-r
4de0 65 74 72 69 65 76 65 20 28 75 72 6c 20 26 6f 70 74 69 6f 6e 61 6c 20 73 69 6c 65 6e 74 20 69 6e etrieve.(url.&optional.silent.in
4e00 68 69 62 69 74 2d 63 6f 6f 6b 69 65 73 29 0a 20 20 22 57 72 61 70 73 20 60 75 72 6c 2d 72 65 74 hibit-cookies)..."Wraps.`url-ret
4e20 72 69 65 76 65 27 20 69 6e 20 61 20 70 72 6f 6d 69 73 65 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 rieve'.in.a.promise...This.funct
4e40 69 6f 6e 20 77 69 6c 6c 20 6e 65 76 65 72 20 64 69 72 65 63 74 6c 79 20 73 69 67 6e 61 6c 20 61 ion.will.never.directly.signal.a
4e60 6e 20 65 72 72 6f 72 2e 20 49 6e 73 74 65 61 64 20 61 6e 79 0a 65 72 72 6f 72 73 20 77 69 6c 6c n.error..Instead.any.errors.will
4e80 20 62 65 20 64 65 6c 69 76 65 72 65 64 20 76 69 61 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 70 .be.delivered.via.the.returned.p
4ea0 72 6f 6d 69 73 65 2e 20 54 68 65 20 70 72 6f 6d 69 73 65 0a 72 65 73 75 6c 74 20 69 73 20 61 20 romise..The.promise.result.is.a.
4ec0 63 6f 6e 73 20 6f 66 20 28 73 74 61 74 75 73 20 2e 20 62 75 66 66 65 72 29 2e 20 54 68 69 73 20 cons.of.(status...buffer)..This.
4ee0 62 75 66 66 65 72 20 69 73 20 61 20 63 6c 6f 6e 65 20 6f 66 0a 74 68 65 20 62 75 66 66 65 72 20 buffer.is.a.clone.of.the.buffer.
4f00 63 72 65 61 74 65 64 20 62 79 20 60 75 72 6c 2d 72 65 74 72 69 65 76 65 27 20 61 6e 64 20 73 68 created.by.`url-retrieve'.and.sh
4f20 6f 75 6c 64 20 62 65 20 6b 69 6c 6c 65 64 20 62 79 20 74 68 65 0a 63 61 6c 6c 65 72 2e 22 0a 20 ould.be.killed.by.the.caller."..
4f40 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 29 0a .(let.((promise.(aio-promise))).
4f60 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 28 63 6f 6e 64 69 74 ....(prog1.promise.......(condit
4f80 69 6f 6e 2d 63 61 73 65 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 ion-case.error...........(url-re
4fa0 74 72 69 65 76 65 20 75 72 6c 20 28 6c 61 6d 62 64 61 20 28 73 74 61 74 75 73 29 0a 20 20 20 20 trieve.url.(lambda.(status).....
4fc0 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 6c 65 74 20 28 ..........................(let.(
4fe0 28 76 61 6c 75 65 20 28 63 6f 6e 73 20 73 74 61 74 75 73 20 28 63 6c 6f 6e 65 2d 62 75 66 66 65 (value.(cons.status.(clone-buffe
5000 72 29 29 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 20 r))))...........................
5020 20 20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f 6d 69 73 65 20 28 6c 61 6d 62 ......(aio-resolve.promise.(lamb
5040 64 61 20 28 29 20 76 61 6c 75 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 da.().value)))).................
5060 20 20 20 20 20 20 20 20 73 69 6c 65 6e 74 20 69 6e 68 69 62 69 74 2d 63 6f 6f 6b 69 65 73 29 0a ........silent.inhibit-cookies).
5080 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f 6d ........(error.(aio-resolve.prom
50a0 69 73 65 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 20 20 20 ise.............................
50c0 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (lambda.()......................
50e0 20 20 20 20 20 20 20 20 20 28 73 69 67 6e 61 6c 20 28 63 61 72 20 65 72 72 6f 72 29 20 28 63 64 .........(signal.(car.error).(cd
5100 72 20 65 72 72 6f 72 29 29 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 61 69 6f 2d r.error)))))))))..(cl-defun.aio-
5120 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 20 28 26 6b 65 79 20 74 61 67 20 6f 6e 63 65 29 0a 20 20 make-callback.(&key.tag.once)...
5140 22 52 65 74 75 72 6e 20 61 20 6e 65 77 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 "Return.a.new.callback.function.
5160 61 6e 64 20 69 74 73 20 66 69 72 73 74 20 70 72 6f 6d 69 73 65 2e 0a 0a 52 65 74 75 72 6e 73 20 and.its.first.promise...Returns.
5180 61 20 63 6f 6e 73 20 28 63 61 6c 6c 62 61 63 6b 20 2e 20 70 72 6f 6d 69 73 65 29 20 77 68 65 72 a.cons.(callback...promise).wher
51a0 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 66 75 6e 63 74 69 6f 6e 0a 73 75 69 74 61 62 6c 65 20 e.callback.is.function.suitable.
51c0 66 6f 72 20 72 65 70 65 61 74 65 64 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 54 68 69 73 20 6d 61 for.repeated.invocation..This.ma
51e0 6b 65 73 20 69 74 20 75 73 65 66 75 6c 20 66 6f 72 0a 70 72 6f 63 65 73 73 20 66 69 6c 74 65 72 kes.it.useful.for.process.filter
5200 73 20 61 6e 64 20 73 65 6e 74 69 6e 65 6c 73 2e 20 54 68 65 20 70 72 6f 6d 69 73 65 20 69 73 20 s.and.sentinels..The.promise.is.
5220 74 68 65 20 66 69 72 73 74 20 70 72 6f 6d 69 73 65 0a 74 6f 20 62 65 20 72 65 73 6f 6c 76 65 64 the.first.promise.to.be.resolved
5240 20 62 79 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 0a 54 68 65 20 70 72 6f 6d 69 73 65 20 72 .by.the.callback...The.promise.r
5260 65 73 6f 6c 76 65 73 20 74 6f 3a 0a 20 20 28 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 2e 20 63 61 esolves.to:...(next-promise...ca
5280 6c 6c 62 61 63 6b 2d 61 72 67 73 29 0a 4f 72 20 77 68 65 6e 20 54 41 47 20 69 73 20 73 75 70 70 llback-args).Or.when.TAG.is.supp
52a0 6c 69 65 64 3a 0a 20 20 28 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 54 41 47 20 2e 20 63 61 6c 6c lied:...(next-promise.TAG...call
52c0 62 61 63 6b 2d 61 72 67 73 29 0a 4f 72 20 69 66 20 4f 4e 43 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c back-args).Or.if.ONCE.is.non-nil
52e0 3a 0a 20 20 63 61 6c 6c 62 61 63 6b 2d 61 72 67 73 0a 0a 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 :...callback-args..The.callback.
5300 72 65 73 6f 6c 76 65 73 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 6f 6e 20 74 68 65 20 6e 65 78 resolves.next-promise.on.the.nex
5320 74 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 54 68 69 73 0a 63 72 65 61 74 65 73 20 61 20 63 68 61 t.invocation..This.creates.a.cha
5340 69 6e 20 6f 66 20 70 72 6f 6d 69 73 65 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 in.of.promises.representing.the.
5360 73 65 71 75 65 6e 63 65 20 6f 66 20 63 61 6c 6c 73 2e 0a 4e 6f 74 65 3a 20 54 6f 20 61 76 6f 69 sequence.of.calls..Note:.To.avoi
5380 64 20 6b 65 65 70 69 6e 67 20 6c 6f 74 73 20 6f 66 20 67 61 72 62 61 67 65 20 69 6e 20 6d 65 6d d.keeping.lots.of.garbage.in.mem
53a0 6f 72 79 2c 20 61 76 6f 69 64 20 68 6f 6c 64 69 6e 67 0a 6f 6e 74 6f 20 74 68 65 20 66 69 72 73 ory,.avoid.holding.onto.the.firs
53c0 74 20 70 72 6f 6d 69 73 65 20 28 69 2e 65 2e 20 63 61 70 74 75 72 69 6e 67 20 69 74 20 69 6e 20 t.promise.(i.e..capturing.it.in.
53e0 61 20 63 6c 6f 73 75 72 65 29 2e 0a 0a 54 68 65 20 60 61 69 6f 2d 63 68 61 69 6e 27 20 6d 61 63 a.closure)...The.`aio-chain'.mac
5400 72 6f 20 6d 61 6b 65 73 20 69 74 20 65 61 73 69 65 72 20 74 6f 20 75 73 65 20 74 68 65 73 65 20 ro.makes.it.easier.to.use.these.
5420 70 72 6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 promises."...(let*.((promise.(ai
5440 6f 2d 70 72 6f 6d 69 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 61 63 6b 0a 20 o-promise))..........(callback..
5460 20 20 20 20 20 20 20 20 20 28 69 66 20 6f 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........(if.once...............
5480 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 (lambda.(&rest.args)............
54a0 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 73 75 6c 74 20 28 69 66 20 74 61 67 0a 20 20 20 20 20 .....(let.((result.(if.tag......
54c0 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 20 20 28 63 6f .............................(co
54e0 6e 73 20 74 61 67 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ns.tag.args)....................
5500 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .............args)))............
5520 20 20 20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 70 72 6f 6d 69 73 65 20 28 6c 61 6d .......(aio-resolve.promise.(lam
5540 62 64 61 20 28 29 20 72 65 73 75 6c 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c bda.().result)))).............(l
5560 61 6d 62 64 61 20 28 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ambda.(&rest.args)..............
5580 20 28 6c 65 74 2a 20 28 28 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 70 72 6f 6d 69 .(let*.((next-promise.(aio-promi
55a0 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 75 6c se))......................(resul
55c0 74 20 28 69 66 20 74 61 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.(if.tag.......................
55e0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 20 28 63 ...........(cons.next-promise.(c
5600 6f 6e 73 20 74 61 67 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ons.tag.args))..................
5620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 ..............(cons.next-promise
5640 20 61 72 67 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 72 .args)))).................(aio-r
5660 65 73 6f 6c 76 65 20 70 72 6f 6d 69 73 65 20 28 6c 61 6d 62 64 61 20 28 29 20 72 65 73 75 6c 74 esolve.promise.(lambda.().result
5680 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 70 72 6f 6d 69 73 65 )).................(setf.promise
56a0 20 6e 65 78 74 2d 70 72 6f 6d 69 73 65 29 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 73 20 63 61 .next-promise)))))).....(cons.ca
56c0 6c 6c 62 61 63 6b 20 70 72 6f 6d 69 73 65 29 29 29 0a 0a 3b 3b 20 41 20 73 69 6d 70 6c 65 20 6c llback.promise)))..;;.A.simple.l
56e0 69 74 74 6c 65 20 71 75 65 75 65 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 2d 71 75 65 75 ittle.queue..(defsubst.aio--queu
5700 65 2d 65 6d 70 74 79 2d 70 20 28 71 75 65 75 65 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e 2d e-empty-p.(queue)..."Return.non-
5720 6e 69 6c 20 69 66 20 51 55 45 55 45 20 69 73 20 65 6d 70 74 79 2e 0a 41 6e 20 65 6d 70 74 79 20 nil.if.QUEUE.is.empty..An.empty.
5740 71 75 65 75 65 20 69 73 20 28 6e 69 6c 20 2e 20 6e 69 6c 29 2e 22 0a 20 20 28 6e 75 6c 6c 20 28 queue.is.(nil...nil)."...(null.(
5760 63 61 61 72 20 71 75 65 75 65 29 29 29 0a 0a 28 64 65 66 73 75 62 73 74 20 61 69 6f 2d 2d 71 75 caar.queue)))..(defsubst.aio--qu
5780 65 75 65 2d 67 65 74 20 28 71 75 65 75 65 29 0a 20 20 22 47 65 74 20 74 68 65 20 6e 65 78 74 20 eue-get.(queue)..."Get.the.next.
57a0 69 74 65 6d 20 66 72 6f 6d 20 51 55 45 55 45 2c 20 6f 72 20 6e 69 6c 20 66 6f 72 20 65 6d 70 74 item.from.QUEUE,.or.nil.for.empt
57c0 79 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 65 61 64 20 28 63 61 72 20 71 75 65 75 65 29 29 29 0a y."...(let.((head.(car.queue))).
57e0 20 20 20 20 28 63 6f 6e 64 20 28 28 6e 75 6c 6c 20 68 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 ....(cond.((null.head)..........
5800 20 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 68 65 61 64 20 28 63 64 72 20 ..nil)...........((eq.head.(cdr.
5820 71 75 65 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 28 63 61 72 20 68 queue))............(prog1.(car.h
5840 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 61 72 20 71 75 65 ead)..............(setf.(car.que
5860 75 65 29 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 ue).nil....................(cdr.
5880 71 75 65 75 65 29 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 70 72 6f 67 31 20 queue).nil)))...........((prog1.
58a0 28 63 61 72 20 68 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 (car.head)..............(setf.(c
58c0 61 72 20 71 75 65 75 65 29 20 28 63 64 72 20 68 65 61 64 29 29 29 29 29 29 29 0a 0a 28 64 65 66 ar.queue).(cdr.head)))))))..(def
58e0 73 75 62 73 74 20 61 69 6f 2d 2d 71 75 65 75 65 2d 70 75 74 20 28 71 75 65 75 65 20 65 6c 65 6d subst.aio--queue-put.(queue.elem
5900 65 6e 74 29 0a 20 20 22 41 70 70 65 6e 64 20 45 4c 45 4d 45 4e 54 20 74 6f 20 51 55 45 55 45 2c ent)..."Append.ELEMENT.to.QUEUE,
5920 20 72 65 74 75 72 6e 69 6e 67 20 45 4c 45 4d 45 4e 54 2e 22 0a 20 20 28 6c 65 74 20 28 28 6e 65 .returning.ELEMENT."...(let.((ne
5940 77 20 28 6c 69 73 74 20 65 6c 65 6d 65 6e 74 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 65 6c w.(list.element))).....(prog1.el
5960 65 6d 65 6e 74 0a 20 20 20 20 20 20 28 69 66 20 28 6e 75 6c 6c 20 28 63 61 72 20 71 75 65 75 65 ement.......(if.(null.(car.queue
5980 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 61 72 20 71 75 65 75 65 29 20 6e ))...........(setf.(car.queue).n
59a0 65 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 71 75 65 75 65 29 20 6e ew.................(cdr.queue).n
59c0 65 77 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 63 64 72 20 28 63 64 72 20 71 75 65 75 ew).........(setf.(cdr.(cdr.queu
59e0 65 29 29 20 6e 65 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 71 75 65 75 65 e)).new...............(cdr.queue
5a00 29 20 6e 65 77 29 29 29 29 29 0a 0a 3b 3b 20 41 6e 20 65 66 66 69 63 69 65 6e 74 20 73 65 6c 65 ).new)))))..;;.An.efficient.sele
5a20 63 74 28 29 2d 6c 69 6b 65 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 20 70 72 6f 6d 69 73 65 73 ct()-like.interface.for.promises
5a40 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 20 28 26 6f 70 74 69 6f ..(defun.aio-make-select.(&optio
5a60 6e 61 6c 20 70 72 6f 6d 69 73 65 73 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 20 60 61 nal.promises)..."Create.a.new.`a
5a80 69 6f 2d 73 65 6c 65 63 74 27 20 6f 62 6a 65 63 74 20 66 6f 72 20 77 61 69 74 69 6e 67 20 6f 6e io-select'.object.for.waiting.on
5aa0 20 6d 75 6c 74 69 70 6c 65 20 70 72 6f 6d 69 73 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 65 .multiple.promises."...(let.((se
5ac0 6c 65 63 74 20 28 72 65 63 6f 72 64 20 27 61 69 6f 2d 73 65 6c 65 63 74 0a 20 20 20 20 20 20 20 lect.(record.'aio-select........
5ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 65 6d 62 65 72 73 68 69 70 20 74 .................;;.Membership.t
5b00 61 62 6c 65 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 28 6d 61 able.........................(ma
5b20 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 29 0a 20 20 20 20 20 20 20 ke-hash-table.:test.'eq)........
5b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 22 53 65 65 6e 22 20 74 61 62 6c 65 .................;;."Seen".table
5b60 20 28 61 76 6f 69 64 20 61 64 64 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 63 61 6c 6c 62 61 63 6b .(avoid.adding.multiple.callback
5b80 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 28 6d 61 6b 65 2d ).........................(make-
5ba0 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 20 3a 77 65 61 6b 6e 65 73 73 20 27 hash-table.:test.'eq.:weakness.'
5bc0 6b 65 79 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 3b 3b 20 key).........................;;.
5be0 51 75 65 75 65 20 6f 66 20 70 65 6e 64 69 6e 67 20 72 65 73 6f 6c 76 65 64 20 70 72 6f 6d 69 73 Queue.of.pending.resolved.promis
5c00 65 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 28 63 6f 6e 73 es.........................(cons
5c20 20 6e 69 6c 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nil.nil).......................
5c40 20 20 3b 3b 20 43 61 6c 6c 62 61 63 6b 20 74 6f 20 72 65 73 6f 6c 76 65 20 73 65 6c 65 63 74 27 ..;;.Callback.to.resolve.select'
5c60 73 20 6f 77 6e 20 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s.own.promise...................
5c80 20 20 20 20 20 20 6e 69 6c 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 73 65 6c 65 63 74 0a 20 ......nil))).....(prog1.select..
5ca0 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 70 72 6f 6d 69 73 65 20 70 72 6f 6d 69 73 65 73 29 0a .....(dolist.(promise.promises).
5cc0 20 20 20 20 20 20 20 20 28 61 69 6f 2d 73 65 6c 65 63 74 2d 61 64 64 20 73 65 6c 65 63 74 20 70 ........(aio-select-add.select.p
5ce0 72 6f 6d 69 73 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 2d 61 romise)))))..(defun.aio-select-a
5d00 64 64 20 28 73 65 6c 65 63 74 20 70 72 6f 6d 69 73 65 29 0a 20 20 22 41 64 64 20 50 52 4f 4d 49 dd.(select.promise)..."Add.PROMI
5d20 53 45 20 74 6f 20 74 68 65 20 73 65 74 20 6f 66 20 70 72 6f 6d 69 73 65 73 20 69 6e 20 53 45 4c SE.to.the.set.of.promises.in.SEL
5d40 45 43 54 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61 74 65 64 20 77 69 74 68 20 60 61 69 ECT...SELECT.is.created.with.`ai
5d60 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 20 49 74 20 69 73 20 76 61 6c 69 64 20 74 6f 20 61 o-make-select'..It.is.valid.to.a
5d80 64 64 20 61 0a 70 72 6f 6d 69 73 65 20 74 68 61 74 20 77 61 73 20 70 72 65 76 69 6f 75 73 6c 79 dd.a.promise.that.was.previously
5da0 20 72 65 6d 6f 76 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 65 6d 62 65 72 73 20 28 61 72 65 .removed."...(let.((members.(are
5dc0 66 20 73 65 6c 65 63 74 20 31 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 65 6e 20 28 61 72 65 66 f.select.1)).........(seen.(aref
5de0 20 73 65 6c 65 63 74 20 32 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 70 72 6f 6d 69 73 65 0a .select.2))).....(prog1.promise.
5e00 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d 69 73 65 20 73 ......(unless.(gethash.promise.s
5e20 65 65 6e 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d een).........(setf.(gethash.prom
5e40 69 73 65 20 73 65 65 6e 29 20 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 68 61 ise.seen).t...............(getha
5e60 73 68 20 70 72 6f 6d 69 73 65 20 6d 65 6d 62 65 72 73 29 20 74 29 0a 20 20 20 20 20 20 20 20 28 sh.promise.members).t).........(
5e80 61 69 6f 2d 6c 69 73 74 65 6e 20 70 72 6f 6d 69 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 aio-listen.promise..............
5ea0 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(lambda.(_)..............
5ec0 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 68 61 73 68 20 70 72 6f 6d 69 73 65 20 .........(when.(gethash.promise.
5ee0 6d 65 6d 62 65 72 73 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 members)........................
5f00 20 28 61 69 6f 2d 2d 71 75 65 75 65 2d 70 75 74 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 33 29 .(aio--queue-put.(aref.select.3)
5f20 20 70 72 6f 6d 69 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .promise).......................
5f40 20 20 28 72 65 6d 68 61 73 68 20 70 72 6f 6d 69 73 65 20 6d 65 6d 62 65 72 73 29 0a 20 20 20 20 ..(remhash.promise.members).....
5f60 20 20 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 63 61 6c 6c 62 ....................(let.((callb
5f80 61 63 6b 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 34 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ack.(aref.select.4)))...........
5fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 61 6c 6c 62 61 63 6b 0a 20 ................(when.callback..
5fc0 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 73 65 74 66 ...........................(setf
5fe0 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 34 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 .(aref.select.4).nil)...........
6000 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 63 61 6c 6c 62 ..................(funcall.callb
6020 61 63 6b 29 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 ack))))))))))..(defun.aio-select
6040 2d 72 65 6d 6f 76 65 20 28 73 65 6c 65 63 74 20 70 72 6f 6d 69 73 65 29 0a 20 20 22 52 65 6d 6f -remove.(select.promise)..."Remo
6060 76 65 20 50 52 4f 4d 49 53 45 20 66 6f 72 6d 20 74 68 65 20 73 65 74 20 6f 66 20 70 72 6f 6d 69 ve.PROMISE.form.the.set.of.promi
6080 73 65 73 20 69 6e 20 53 45 4c 45 43 54 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61 74 65 ses.in.SELECT...SELECT.is.create
60a0 64 20 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 22 0a 20 20 28 72 65 d.with.`aio-make-select'."...(re
60c0 6d 68 61 73 68 20 70 72 6f 6d 69 73 65 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 31 29 29 29 0a mhash.promise.(aref.select.1))).
60e0 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 2d 70 72 6f 6d 69 73 65 73 20 28 73 65 6c .(defun.aio-select-promises.(sel
6100 65 63 74 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 69 73 65 ect)..."Return.a.list.of.promise
6120 73 20 69 6e 20 53 45 4c 45 43 54 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61 74 65 64 20 s.in.SELECT...SELECT.is.created.
6140 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 22 0a 20 20 28 63 6c 2d 6c with.`aio-make-select'."...(cl-l
6160 6f 6f 70 20 66 6f 72 20 6b 65 79 20 62 65 69 6e 67 20 74 68 65 20 68 61 73 68 2d 6b 65 79 73 20 oop.for.key.being.the.hash-keys.
6180 6f 66 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f of.(aref.select.1)............co
61a0 6c 6c 65 63 74 20 6b 65 79 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6c 65 63 74 20 28 llect.key))..(defun.aio-select.(
61c0 73 65 6c 65 63 74 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 select)..."Return.a.promise.that
61e0 20 72 65 73 6f 6c 76 65 73 20 77 68 65 6e 20 61 6e 79 20 70 72 6f 6d 69 73 65 20 69 6e 20 53 45 .resolves.when.any.promise.in.SE
6200 4c 45 43 54 20 72 65 73 6f 6c 76 65 73 2e 0a 0a 53 45 4c 45 43 54 20 69 73 20 63 72 65 61 74 65 LECT.resolves...SELECT.is.create
6220 64 20 77 69 74 68 20 60 61 69 6f 2d 6d 61 6b 65 2d 73 65 6c 65 63 74 27 2e 20 54 68 69 73 20 66 d.with.`aio-make-select'..This.f
6240 75 6e 63 74 69 6f 6e 20 69 73 0a 6c 65 76 65 6c 2d 74 72 69 67 67 65 72 65 64 3a 20 69 66 20 61 unction.is.level-triggered:.if.a
6260 20 70 72 6f 6d 69 73 65 20 69 6e 20 53 45 4c 45 43 54 20 69 73 20 61 6c 72 65 61 64 79 20 72 65 .promise.in.SELECT.is.already.re
6280 73 6f 6c 76 65 64 2c 20 69 74 0a 72 65 74 75 72 6e 73 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 77 solved,.it.returns.immediately.w
62a0 69 74 68 20 74 68 61 74 20 70 72 6f 6d 69 73 65 2e 20 50 72 6f 6d 69 73 65 73 20 72 65 74 75 72 ith.that.promise..Promises.retur
62c0 6e 65 64 20 62 79 0a 60 61 69 6f 2d 73 65 6c 65 63 74 27 20 61 72 65 20 61 75 74 6f 6d 61 74 69 ned.by.`aio-select'.are.automati
62e0 63 61 6c 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 53 45 4c 45 43 54 2e 20 55 73 65 20 74 cally.removed.from.SELECT..Use.t
6300 68 69 73 0a 66 75 6e 63 74 69 6f 6e 20 74 6f 20 72 65 70 65 61 74 65 64 6c 79 20 77 61 69 74 20 his.function.to.repeatedly.wait.
6320 6f 6e 20 61 20 73 65 74 20 6f 66 20 70 72 6f 6d 69 73 65 73 2e 0a 0a 4e 6f 74 65 3a 20 54 68 65 on.a.set.of.promises...Note:.The
6340 20 70 72 6f 6d 69 73 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 69 73 20 66 75 6e 63 74 69 .promise.returned.by.this.functi
6360 6f 6e 20 72 65 73 6f 6c 76 65 73 20 74 6f 20 61 6e 6f 74 68 65 72 0a 70 72 6f 6d 69 73 65 2c 20 on.resolves.to.another.promise,.
6380 6e 6f 74 20 74 68 61 74 20 70 72 6f 6d 69 73 65 27 73 20 72 65 73 75 6c 74 2e 20 59 6f 75 20 77 not.that.promise's.result..You.w
63a0 69 6c 6c 20 6e 65 65 64 20 74 6f 20 60 61 69 6f 2d 61 77 61 69 74 27 0a 6f 6e 20 69 74 2c 20 6f ill.need.to.`aio-await'.on.it,.o
63c0 72 20 75 73 65 20 60 61 69 6f 2d 72 65 73 75 6c 74 27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 72 r.use.`aio-result'."...(let*.((r
63e0 65 73 75 6c 74 20 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 esult.(aio-promise))..........(c
6400 61 6c 6c 62 61 63 6b 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 allback.(lambda.()..............
6420 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 69 73 65 20 28 61 69 6f 2d 2d 71 75 65 ........(let.((promise.(aio--que
6440 75 65 2d 67 65 74 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 33 29 29 29 29 0a 20 20 20 20 20 20 ue-get.(aref.select.3)))).......
6460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 72 65 .................(aio-resolve.re
6480 73 75 6c 74 20 28 6c 61 6d 62 64 61 20 28 29 20 70 72 6f 6d 69 73 65 29 29 29 29 29 29 0a 20 20 sult.(lambda.().promise))))))...
64a0 20 20 28 70 72 6f 67 31 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 28 69 66 20 28 61 69 6f 2d 2d ..(prog1.result.......(if.(aio--
64c0 71 75 65 75 65 2d 65 6d 70 74 79 2d 70 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 33 29 29 0a 20 queue-empty-p.(aref.select.3))..
64e0 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 61 72 65 66 20 73 65 6c 65 63 74 20 34 29 20 63 .........(setf.(aref.select.4).c
6500 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 63 61 6c 6c 62 61 allback).........(funcall.callba
6520 63 6b 29 29 29 29 29 0a 0a 3b 3b 20 53 65 6d 61 70 68 6f 72 65 73 0a 0a 28 64 65 66 75 6e 20 61 ck)))))..;;.Semaphores..(defun.a
6540 69 6f 2d 73 65 6d 20 28 69 6e 69 74 29 0a 20 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 20 73 65 io-sem.(init)..."Create.a.new.se
6560 6d 61 70 68 6f 72 65 20 77 69 74 68 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 49 4e 49 54 2e maphore.with.initial.value.INIT.
6580 22 0a 20 20 28 72 65 63 6f 72 64 20 27 61 69 6f 2d 73 65 6d 0a 20 20 20 20 20 20 20 20 20 20 3b "...(record.'aio-sem...........;
65a0 3b 20 53 65 6d 61 70 68 6f 72 65 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 ;.Semaphore.value...........init
65c0 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 51 75 65 75 65 20 6f 66 20 77 61 69 74 69 6e 67 20 61 ...........;;.Queue.of.waiting.a
65e0 73 79 6e 63 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 6e sync.functions...........(cons.n
6600 69 6c 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6d 2d 70 6f 73 74 20 28 il.nil)))..(defun.aio-sem-post.(
6620 73 65 6d 29 0a 20 20 22 49 6e 63 72 65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 53 sem)..."Increment.the.value.of.S
6640 45 4d 2e 0a 0a 49 66 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 EM...If.asynchronous.functions.a
6660 72 65 20 61 77 61 69 74 69 6e 67 20 6f 6e 20 53 45 4d 2c 20 74 68 65 6e 20 6f 6e 65 20 77 69 6c re.awaiting.on.SEM,.then.one.wil
6680 6c 20 62 65 0a 77 6f 6b 65 6e 20 75 70 2e 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 l.be.woken.up..This.function.is.
66a0 6e 6f 74 20 61 77 61 69 74 61 62 6c 65 2e 22 0a 20 20 28 77 68 65 6e 20 28 3c 3d 20 28 63 6c 2d not.awaitable."...(when.(<=.(cl-
66c0 69 6e 63 66 20 28 61 72 65 66 20 73 65 6d 20 31 29 29 20 30 29 0a 20 20 20 20 28 6c 65 74 20 28 incf.(aref.sem.1)).0).....(let.(
66e0 28 77 61 69 74 69 6e 67 20 28 61 69 6f 2d 2d 71 75 65 75 65 2d 67 65 74 20 28 61 72 65 66 20 73 (waiting.(aio--queue-get.(aref.s
6700 65 6d 20 32 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 77 61 69 74 69 6e 67 0a 20 20 20 em.2)))).......(when.waiting....
6720 20 20 20 20 20 28 61 69 6f 2d 72 65 73 6f 6c 76 65 20 77 61 69 74 69 6e 67 20 28 6c 61 6d 62 64 .....(aio-resolve.waiting.(lambd
6740 61 20 28 29 20 6e 69 6c 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 73 65 6d 2d 77 a.().nil))))))..(defun.aio-sem-w
6760 61 69 74 20 28 73 65 6d 29 0a 20 20 22 44 65 63 72 65 6d 65 6e 74 20 74 68 65 20 76 61 6c 75 65 ait.(sem)..."Decrement.the.value
6780 20 6f 66 20 53 45 4d 2e 0a 0a 49 66 20 53 45 4d 20 69 73 20 61 74 20 7a 65 72 6f 2c 20 72 65 74 .of.SEM...If.SEM.is.at.zero,.ret
67a0 75 72 6e 73 20 61 20 70 72 6f 6d 69 73 65 20 74 68 61 74 20 77 69 6c 6c 20 72 65 73 6f 6c 76 65 urns.a.promise.that.will.resolve
67c0 20 77 68 65 6e 0a 61 6e 6f 74 68 65 72 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e 63 74 .when.another.asynchronous.funct
67e0 69 6f 6e 20 75 73 65 73 20 60 61 69 6f 2d 73 65 6d 2d 70 6f 73 74 27 2e 22 0a 20 20 28 77 68 65 ion.uses.`aio-sem-post'."...(whe
6800 6e 20 28 3c 20 28 63 6c 2d 64 65 63 66 20 28 61 72 65 66 20 73 65 6d 20 31 29 29 20 30 29 0a 20 n.(<.(cl-decf.(aref.sem.1)).0)..
6820 20 20 20 28 61 69 6f 2d 2d 71 75 65 75 65 2d 70 75 74 20 28 61 72 65 66 20 73 65 6d 20 32 29 20 ...(aio--queue-put.(aref.sem.2).
6840 28 61 69 6f 2d 70 72 6f 6d 69 73 65 29 29 29 29 0a 0a 3b 3b 20 60 65 6d 61 63 73 2d 6c 69 73 70 (aio-promise))))..;;.`emacs-lisp
6860 2d 6d 6f 64 65 27 20 66 6f 6e 74 20 6c 6f 63 6b 0a 0a 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 61 64 64 -mode'.font.lock..(font-lock-add
6880 2d 6b 65 79 77 6f 72 64 73 0a 20 27 65 6d 61 63 73 2d 6c 69 73 70 2d 6d 6f 64 65 0a 20 60 28 28 -keywords..'emacs-lisp-mode..`((
68a0 2c 28 72 78 20 22 28 61 69 6f 2d 64 65 66 75 6e 22 20 28 2b 20 62 6c 61 6e 6b 29 0a 20 20 20 20 ,(rx."(aio-defun".(+.blank).....
68c0 20 20 20 20 20 28 67 72 6f 75 70 20 28 2b 20 28 6f 72 20 28 73 79 6e 74 61 78 20 77 6f 72 64 29 .....(group.(+.(or.(syntax.word)
68e0 20 28 73 79 6e 74 61 78 20 73 79 6d 62 6f 6c 29 29 29 29 29 0a 20 20 20 20 31 20 27 66 6f 6e 74 .(syntax.symbol))))).....1.'font
6900 2d 6c 6f 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 2d 66 61 63 65 29 29 29 0a 0a 28 61 64 -lock-function-name-face)))..(ad
6920 64 2d 68 6f 6f 6b 20 27 68 65 6c 70 2d 66 6e 73 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 74 69 d-hook.'help-fns-describe-functi
6940 6f 6e 2d 66 75 6e 63 74 69 6f 6e 73 20 23 27 61 69 6f 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 on-functions.#'aio-describe-func
6960 74 69 6f 6e 29 0a 0a 28 64 65 66 75 6e 20 61 69 6f 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 74 tion)..(defun.aio-describe-funct
6980 69 6f 6e 20 28 66 75 6e 63 74 69 6f 6e 29 0a 20 20 22 49 6e 73 65 72 74 20 77 68 65 74 68 65 72 ion.(function)..."Insert.whether
69a0 20 46 55 4e 43 54 49 4f 4e 20 69 73 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66 75 6e .FUNCTION.is.an.asynchronous.fun
69c0 63 74 69 6f 6e 2e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 64 64 65 64 20 74 6f ction..This.function.is.added.to
69e0 20 e2 80 98 68 65 6c 70 2d 66 6e 73 2d 64 65 73 63 72 69 62 65 2d 66 75 6e 63 74 69 6f 6e 2d 66 ....help-fns-describe-function-f
6a00 75 6e 63 74 69 6f 6e 73 e2 80 99 2e 22 0a 20 20 28 77 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e 2d unctions...."...(when.(function-
6a20 67 65 74 20 66 75 6e 63 74 69 6f 6e 20 27 61 69 6f 2d 64 65 66 75 6e 2d 70 29 0a 20 20 20 20 28 get.function.'aio-defun-p).....(
6a40 69 6e 73 65 72 74 20 22 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 73 79 6e 63 insert."..This.function.is.async
6a60 68 72 6f 6e 6f 75 73 3b 20 69 74 20 72 65 74 75 72 6e 73 20 22 0a 20 20 20 20 20 20 20 20 20 20 hronous;.it.returns."...........
6a80 20 20 22 61 6e 20 e2 80 98 61 69 6f 2d 70 72 6f 6d 69 73 65 e2 80 99 20 6f 62 6a 65 63 74 2e 5c .."an....aio-promise....object.\
6aa0 6e 22 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 61 69 6f 29 0a 0a 3b 3b 3b 20 61 69 6f 2e 65 n")))..(provide.'aio)..;;;.aio.e
6ac0 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 00 00 00 00 00 00 l.ends.here.....................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 ................................