summaryrefslogtreecommitdiff
path: root/.localrepo/oauth2-auto-20250624.1919.tar
blob: a84615a82aef22858fe5d5d3aeb9d931b14b717e (plain)
ofshex dumpascii
0000 6f 61 75 74 68 32 2d 61 75 74 6f 2d 32 30 32 35 30 36 32 34 2e 31 39 31 39 2f 00 00 00 00 00 00 oauth2-auto-20250624.1919/......
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 33 31 37 31 00 20 35 00 00 00 0000000.00000000000.013171..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 6f 61 75 74 68 32 2d 61 75 74 6f 2d 32 30 32 35 30 36 32 34 2e 31 39 31 39 2f 6f 61 75 74 68 32 oauth2-auto-20250624.1919/oauth2
0220 2d 61 75 74 6f 2d 70 6b 67 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -auto-pkg.el....................
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 30 31 30 31 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 34 34 30 00 20 30 00 00 00 0001016.00000000000.016440..0...
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 3b 3b 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63 ;;.-*-.no-byte-compile:.t;.lexic
0420 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20 2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b al-binding:.nil.-*-.(define-pack
0440 61 67 65 20 22 6f 61 75 74 68 32 2d 61 75 74 6f 22 20 22 32 30 32 35 30 36 32 34 2e 31 39 31 39 age."oauth2-auto"."20250624.1919
0460 22 0a 20 20 22 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 66 72 65 73 68 69 6e 67 20 4f 41 "..."Automatically.refreshing.OA
0480 75 74 68 20 32 2e 30 20 74 6f 6b 65 6e 73 2e 22 0a 20 20 27 28 28 65 6d 61 63 73 20 22 32 36 2e uth.2.0.tokens."...'((emacs."26.
04a0 31 22 29 0a 20 20 20 20 28 61 69 6f 20 20 20 22 31 2e 30 22 29 0a 20 20 20 20 28 61 6c 65 72 74 1").....(aio..."1.0").....(alert
04c0 20 22 31 2e 32 22 29 0a 20 20 20 20 28 64 61 73 68 20 20 22 32 2e 31 39 22 29 29 0a 20 20 3a 75 ."1.2").....(dash.."2.19"))...:u
04e0 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 68 61 70 73 30 64 79 2f rl."https://github.com/rhaps0dy/
0500 65 6d 61 63 73 2d 6f 61 75 74 68 32 2d 61 75 74 6f 22 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 32 30 emacs-oauth2-auto"...:commit."20
0520 62 33 31 35 33 64 39 63 66 62 37 61 61 66 65 36 38 61 30 31 36 38 36 34 37 61 31 37 33 37 33 61 b3153d9cfb7aafe68a0168647a17373a
0540 64 66 35 65 32 32 22 0a 20 20 3a 72 65 76 64 65 73 63 20 22 32 30 62 33 31 35 33 64 39 63 66 62 df5e22"...:revdesc."20b3153d9cfb
0560 22 0a 20 20 3a 6b 65 79 77 6f 72 64 73 20 27 28 22 63 6f 6d 6d 22 20 22 6f 61 75 74 68 32 22 29 "...:keywords.'("comm"."oauth2")
0580 0a 20 20 3a 61 75 74 68 6f 72 73 20 27 28 28 22 41 64 72 69 c3 a0 20 47 61 72 72 69 67 61 2d 41 ...:authors.'(("Adri...Garriga-A
05a0 6c 6f 6e 73 6f 22 20 2e 20 22 61 64 72 69 61 2e 67 61 72 72 69 67 61 40 67 6d 61 69 6c 2e 63 6f lonso"..."adria.garriga@gmail.co
05c0 6d 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 73 20 27 28 28 22 41 64 72 69 c3 a0 20 47 m"))...:maintainers.'(("Adri...G
05e0 61 72 72 69 67 61 2d 41 6c 6f 6e 73 6f 22 20 2e 20 22 61 64 72 69 61 2e 67 61 72 72 69 67 61 40 arriga-Alonso"..."adria.garriga@
0600 67 6d 61 69 6c 2e 63 6f 6d 22 29 29 29 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 gmail.com")))...................
0620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0800 6f 61 75 74 68 32 2d 61 75 74 6f 2d 32 30 32 35 30 36 32 34 2e 31 39 31 39 2f 6f 61 75 74 68 32 oauth2-auto-20250624.1919/oauth2
0820 2d 61 75 74 6f 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -auto.el........................
0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0860 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
0880 30 30 36 31 36 34 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 36 37 36 00 20 30 00 00 00 0061644.00000000000.015676..0...
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 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...................
0920 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...................
0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a00 3b 3b 3b 20 6f 61 75 74 68 32 2d 61 75 74 6f 2e 65 6c 20 2d 2d 2d 20 41 75 74 6f 6d 61 74 69 63 ;;;.oauth2-auto.el.---.Automatic
0a20 61 6c 6c 79 20 72 65 66 72 65 73 68 69 6e 67 20 4f 41 75 74 68 20 32 2e 30 20 74 6f 6b 65 6e 73 ally.refreshing.OAuth.2.0.tokens
0a40 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b .-*-.lexical-binding:.t;.-*-..;;
0a60 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 32 32 2d 32 30 32 33 20 41 64 72 69 c3 a0 20 .Copyright.(C).2022-2023.Adri...
0a80 47 61 72 72 69 67 61 2d 41 6c 6f 6e 73 6f 2c 20 52 6f 62 65 72 74 20 49 72 65 6c 61 6e 0a 0a 3b Garriga-Alonso,.Robert.Irelan..;
0aa0 3b 20 41 75 74 68 6f 72 3a 20 41 64 72 69 c3 a0 20 47 61 72 72 69 67 61 2d 41 6c 6f 6e 73 6f 20 ;.Author:.Adri...Garriga-Alonso.
0ac0 3c 61 64 72 69 61 2e 67 61 72 72 69 67 61 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 55 52 4c <adria.garriga@gmail.com>.;;.URL
0ae0 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 68 61 70 73 30 64 79 2f 65 6d :.https://github.com/rhaps0dy/em
0b00 61 63 73 2d 6f 61 75 74 68 32 2d 61 75 74 6f 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 56 65 72 73 69 acs-oauth2-auto.;;.Package-Versi
0b20 6f 6e 3a 20 32 30 32 35 30 36 32 34 2e 31 39 31 39 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 76 on:.20250624.1919.;;.Package-Rev
0b40 69 73 69 6f 6e 3a 20 32 30 62 33 31 35 33 64 39 63 66 62 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a ision:.20b3153d9cfb.;;.Keywords:
0b60 20 63 6f 6d 6d 20 6f 61 75 74 68 32 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71 75 69 72 65 73 .comm.oauth2.;;.Package-Requires
0b80 3a 20 28 28 65 6d 61 63 73 20 22 32 36 2e 31 22 29 20 28 61 69 6f 20 22 31 2e 30 22 29 20 28 61 :.((emacs."26.1").(aio."1.0").(a
0ba0 6c 65 72 74 20 22 31 2e 32 22 29 20 28 64 61 73 68 20 22 32 2e 31 39 22 29 29 0a 0a 3b 3b 20 54 lert."1.2").(dash."2.19"))..;;.T
0bc0 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f his.program.is.free.software;.yo
0be0 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 u.can.redistribute.it.and/or.mod
0c00 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 ify.;;.it.under.the.terms.of.the
0c20 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 .GNU.General.Public.License.as.p
0c40 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 ublished.by.;;.the.Free.Software
0c60 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 .Foundation,.either.version.3.of
0c80 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 .the.License,.or.;;.(at.your.opt
0ca0 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 ion).any.later.version...;;.This
0cc0 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 .program.is.distributed.in.the.h
0ce0 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 ope.that.it.will.be.useful,.;;.b
0d00 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 ut.WITHOUT.ANY.WARRANTY;.without
0d20 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b .even.the.implied.warranty.of.;;
0d40 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 .MERCHANTABILITY.or.FITNESS.FOR.
0d60 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b A.PARTICULAR.PURPOSE...See.the.;
0d80 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 ;.GNU.General.Public.License.for
0da0 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 .more.details...;;.You.should.ha
0dc0 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 ve.received.a.copy.of.the.GNU.Ge
0de0 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 neral.Public.License.;;.along.wi
0e00 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 th.this.program...If.not,.see.<h
0e20 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b ttp://www.gnu.org/licenses/>...;
0e40 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 53 74 61 74 65 20 6d 61 63 68 69 6e 65 ;;.Commentary:..;;.State.machine
0e60 20 74 6f 20 66 65 74 63 68 20 4f 41 75 74 68 20 32 2e 30 20 74 6f 6b 65 6e 73 20 66 6f 72 20 76 .to.fetch.OAuth.2.0.tokens.for.v
0e80 61 72 69 6f 75 73 20 65 6d 61 69 6c 20 61 63 63 6f 75 6e 74 73 2e 0a 3b 3b 0a 3b 3b 20 42 61 73 arious.email.accounts..;;.;;.Bas
0ea0 65 64 20 6f 6e 20 7e 6d 75 74 74 5f 6f 61 75 74 68 32 2e 70 79 7e 2c 20 77 68 69 63 68 20 69 73 ed.on.~mutt_oauth2.py~,.which.is
0ec0 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 32 30 20 41 6c 65 78 61 6e 64 65 72 20 50 65 .Copyright.(C).2020.Alexander.Pe
0ee0 72 6c 69 73 2c 0a 3b 3b 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 68 65 20 47 50 4c 76 rlis,.;;.licensed.under.the.GPLv
0f00 33 20 6f 72 20 6c 61 74 65 72 2e 0a 3b 3b 0a 3b 3b 20 54 68 65 20 65 6e 74 72 79 20 70 6f 69 6e 3.or.later..;;.;;.The.entry.poin
0f20 74 73 20 61 72 65 20 60 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 69 73 74 27 20 61 6e 64 20 74 ts.are.`oauth2-auto-plist'.and.t
0f40 68 65 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 0a 3b 3b 20 60 6f 61 75 74 he.convenience.function.;;.`oaut
0f60 68 32 2d 61 75 74 6f 2d 61 63 63 65 73 73 2d 74 6f 6b 65 6e 27 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 h2-auto-access-token'...;;;.Code
0f80 3a 0a 28 72 65 71 75 69 72 65 20 27 70 6c 73 74 6f 72 65 29 0a 28 72 65 71 75 69 72 65 20 27 61 :.(require.'plstore).(require.'a
0fa0 69 6f 29 20 20 20 20 20 3b 20 70 72 6f 6d 69 73 65 73 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f io).....;.promises.(eval-when-co
0fc0 6d 70 69 6c 65 20 28 72 65 71 75 69 72 65 20 27 64 61 73 68 29 29 20 20 20 20 3b 20 60 2d 2d 6d mpile.(require.'dash))....;.`--m
0fe0 61 70 27 0a 28 72 65 71 75 69 72 65 20 27 61 6c 65 72 74 29 20 20 20 3b 20 60 61 6c 65 72 74 27 ap'.(require.'alert)...;.`alert'
1000 20 74 6f 20 67 69 76 65 20 74 68 65 20 75 73 65 72 20 61 20 68 65 61 64 73 20 75 70 20 74 6f 20 .to.give.the.user.a.heads.up.to.
1020 67 6f 20 74 6f 20 74 68 65 69 72 20 62 72 6f 77 73 65 72 20 61 6e 64 20 6c 6f 67 20 69 6e 0a 28 go.to.their.browser.and.log.in.(
1040 72 65 71 75 69 72 65 20 27 75 72 6c 2d 61 75 74 68 29 0a 0a 28 64 65 66 67 72 6f 75 70 20 6f 61 require.'url-auth)..(defgroup.oa
1060 75 74 68 32 2d 61 75 74 6f 20 6e 69 6c 0a 20 20 22 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 uth2-auto.nil..."Automatically.r
1080 65 66 72 65 73 68 69 6e 67 20 4f 41 75 74 68 20 32 2e 30 20 74 6f 6b 65 6e 73 2e 22 0a 20 20 3a efreshing.OAuth.2.0.tokens."...:
10a0 67 72 6f 75 70 20 27 63 6f 6d 6d 29 0a 0a 0a 3b 3b 20 45 6e 64 70 6f 69 6e 74 73 20 61 6e 64 20 group.'comm)...;;.Endpoints.and.
10c0 63 6c 69 65 6e 74 20 73 65 63 72 65 74 2f 69 64 20 75 73 65 64 20 66 6f 72 20 76 61 72 69 6f 75 client.secret/id.used.for.variou
10e0 73 20 4f 41 75 74 68 32 20 70 72 6f 76 69 64 65 72 73 2e 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 s.OAuth2.providers...(defcustom.
1100 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 69 63 72 6f 73 6f 66 74 2d 64 65 66 61 75 6c 74 2d 74 65 oauth2-auto-microsoft-default-te
1120 6e 61 6e 74 20 22 63 6f 6d 6d 6f 6e 22 0a 20 20 22 44 65 66 61 75 6c 74 20 74 65 6e 61 6e 74 20 nant."common"..."Default.tenant.
1140 49 44 20 66 6f 72 20 4d 69 63 72 6f 73 6f 66 74 20 4f 41 75 74 68 32 2e 22 0a 20 20 3a 67 72 6f ID.for.Microsoft.OAuth2."...:gro
1160 75 70 20 27 6f 61 75 74 68 32 2d 61 75 74 6f 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 29 up.'oauth2-auto...:type.'string)
1180 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 69 63 72 6f 73 6f ..(defcustom.oauth2-auto-microso
11a0 66 74 2d 63 6c 69 65 6e 74 2d 69 64 20 22 22 0a 20 20 22 44 65 66 61 75 6c 74 20 63 6c 69 65 6e ft-client-id.""..."Default.clien
11c0 74 20 49 44 20 66 6f 72 20 4d 69 63 72 6f 73 6f 66 74 20 4f 41 75 74 68 32 2e 22 0a 20 20 3a 67 t.ID.for.Microsoft.OAuth2."...:g
11e0 72 6f 75 70 20 27 6f 61 75 74 68 32 2d 61 75 74 6f 0a 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e roup.'oauth2-auto...:type.'strin
1200 67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 69 63 72 6f g)..(defcustom.oauth2-auto-micro
1220 73 6f 66 74 2d 63 6c 69 65 6e 74 2d 73 65 63 72 65 74 20 22 22 0a 20 20 22 44 65 66 61 75 6c 74 soft-client-secret.""..."Default
1240 20 63 6c 69 65 6e 74 20 73 65 63 72 65 74 20 66 6f 72 20 4d 69 63 72 6f 73 6f 66 74 20 4f 41 75 .client.secret.for.Microsoft.OAu
1260 74 68 32 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 6f 61 75 74 68 32 2d 61 75 74 6f 0a 20 20 3a 74 th2."...:group.'oauth2-auto...:t
1280 79 70 65 20 27 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6f 61 75 74 68 32 2d ype.'string)..(defcustom.oauth2-
12a0 61 75 74 6f 2d 67 6f 6f 67 6c 65 2d 63 6c 69 65 6e 74 2d 69 64 20 22 22 0a 20 20 22 44 65 66 61 auto-google-client-id.""..."Defa
12c0 75 6c 74 20 63 6c 69 65 6e 74 20 49 44 20 66 6f 72 20 47 6f 6f 67 6c 65 20 4f 41 75 74 68 32 2e ult.client.ID.for.Google.OAuth2.
12e0 22 0a 20 20 3a 67 72 6f 75 70 20 27 6f 61 75 74 68 32 2d 61 75 74 6f 0a 20 20 3a 74 79 70 65 20 "...:group.'oauth2-auto...:type.
1300 27 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6f 61 75 74 68 32 2d 61 75 74 6f 'string)..(defcustom.oauth2-auto
1320 2d 67 6f 6f 67 6c 65 2d 63 6c 69 65 6e 74 2d 73 65 63 72 65 74 20 22 22 0a 20 20 22 44 65 66 61 -google-client-secret.""..."Defa
1340 75 6c 74 20 63 6c 69 65 6e 74 20 73 65 63 72 65 74 20 66 6f 72 20 47 6f 6f 67 6c 65 20 4f 41 75 ult.client.secret.for.Google.OAu
1360 74 68 32 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 6f 61 75 74 68 32 2d 61 75 74 6f 0a 20 20 3a 74 th2."...:group.'oauth2-auto...:t
1380 79 70 65 20 27 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6f 61 75 74 68 32 2d ype.'string)..(defcustom.oauth2-
13a0 61 75 74 6f 2d 61 64 64 69 74 69 6f 6e 61 6c 2d 70 72 6f 76 69 64 65 72 73 2d 61 6c 69 73 74 20 auto-additional-providers-alist.
13c0 27 28 29 0a 20 20 22 41 64 64 69 74 69 6f 6e 61 6c 20 4f 41 75 74 68 32 20 70 72 6f 76 69 64 65 '()..."Additional.OAuth2.provide
13e0 72 73 20 66 6f 6c 6c 6f 77 69 6e 67 20 60 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 64 65 66 61 75 rs.following.`oauth2-auto--defau
1400 6c 74 2d 70 72 6f 76 69 64 65 72 73 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 6f 61 75 74 68 32 lt-providers'."...:group.'oauth2
1420 2d 61 75 74 6f 0a 20 20 3a 74 79 70 65 20 27 61 6c 69 73 74 29 0a 0a 28 64 65 66 63 75 73 74 6f -auto...:type.'alist)..(defcusto
1440 6d 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 61 6e 75 61 6c 6c 79 2d 61 75 74 68 20 6e 69 6c 0a m.oauth2-auto-manually-auth.nil.
1460 20 20 22 49 66 20 6e 6f 6e 2d 6e 69 6c 2c 20 6e 6f 74 20 6c 61 75 6e 63 68 20 62 72 6f 77 73 65 .."If.non-nil,.not.launch.browse
1480 72 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 6f 61 75 74 r.automatically."...:group.'oaut
14a0 68 32 2d 61 75 74 6f 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 75 h2-auto...:type.'boolean)..(defu
14c0 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 64 65 66 61 75 6c 74 2d 70 72 6f 76 69 64 65 72 73 n.oauth2-auto--default-providers
14e0 20 28 29 0a 20 20 22 44 65 66 61 75 6c 74 20 4f 41 75 74 68 32 20 70 72 6f 76 69 64 65 72 73 2e .()..."Default.OAuth2.providers.
1500 22 0a 20 20 28 6c 65 74 20 28 28 6d 73 2d 6f 61 75 74 68 32 2d 75 72 6c 20 28 63 6f 6e 63 61 74 "...(let.((ms-oauth2-url.(concat
1520 20 22 68 74 74 70 73 3a 2f 2f 6c 6f 67 69 6e 2e 6d 69 63 72 6f 73 6f 66 74 6f 6e 6c 69 6e 65 2e ."https://login.microsoftonline.
1540 63 6f 6d 2f 22 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 com/"...........................
1560 20 20 20 20 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 69 63 72 6f 73 6f 66 74 2d 64 65 66 61 75 .....oauth2-auto-microsoft-defau
1580 6c 74 2d 74 65 6e 61 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lt-tenant.......................
15a0 20 20 20 20 20 20 20 20 20 22 2f 6f 61 75 74 68 32 2f 76 32 2e 30 2f 22 29 29 29 0a 20 20 20 20 ........."/oauth2/v2.0/"))).....
15c0 60 28 28 67 6f 6f 67 6c 65 0a 20 20 20 20 20 20 20 28 61 75 74 68 6f 72 69 7a 65 5f 75 72 6c 20 `((google........(authorize_url.
15e0 2e 20 22 68 74 74 70 73 3a 2f 2f 61 63 63 6f 75 6e 74 73 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 6f .."https://accounts.google.com/o
1600 2f 6f 61 75 74 68 32 2f 61 75 74 68 22 29 0a 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 5f 75 72 6c /oauth2/auth")........(token_url
1620 20 2e 20 22 68 74 74 70 73 3a 2f 2f 6f 61 75 74 68 32 2e 67 6f 6f 67 6c 65 61 70 69 73 2e 63 6f ..."https://oauth2.googleapis.co
1640 6d 2f 74 6f 6b 65 6e 22 29 0a 20 20 20 20 20 20 20 28 73 63 6f 70 65 20 2e 20 22 68 74 74 70 73 m/token")........(scope..."https
1660 3a 2f 2f 6d 61 69 6c 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e ://mail.google.com/.https://www.
1680 67 6f 6f 67 6c 65 61 70 69 73 2e 63 6f 6d 2f 61 75 74 68 2f 63 61 6c 65 6e 64 61 72 2e 65 76 65 googleapis.com/auth/calendar.eve
16a0 6e 74 73 22 29 0a 20 20 20 20 20 20 20 28 63 6c 69 65 6e 74 5f 69 64 20 2e 20 2c 6f 61 75 74 68 nts")........(client_id...,oauth
16c0 32 2d 61 75 74 6f 2d 67 6f 6f 67 6c 65 2d 63 6c 69 65 6e 74 2d 69 64 29 0a 20 20 20 20 20 20 20 2-auto-google-client-id)........
16e0 28 63 6c 69 65 6e 74 5f 73 65 63 72 65 74 20 2e 20 2c 6f 61 75 74 68 32 2d 61 75 74 6f 2d 67 6f (client_secret...,oauth2-auto-go
1700 6f 67 6c 65 2d 63 6c 69 65 6e 74 2d 73 65 63 72 65 74 29 29 0a 20 20 20 20 20 20 28 6d 69 63 72 ogle-client-secret)).......(micr
1720 6f 73 6f 66 74 0a 20 20 20 20 20 20 20 28 61 75 74 68 6f 72 69 7a 65 5f 75 72 6c 20 2e 20 2c 28 osoft........(authorize_url...,(
1740 63 6f 6e 63 61 74 20 6d 73 2d 6f 61 75 74 68 32 2d 75 72 6c 20 22 61 75 74 68 6f 72 69 7a 65 22 concat.ms-oauth2-url."authorize"
1760 29 29 0a 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 5f 75 72 6c 20 2e 20 2c 28 63 6f 6e 63 61 74 20 ))........(token_url...,(concat.
1780 6d 73 2d 6f 61 75 74 68 32 2d 75 72 6c 20 22 74 6f 6b 65 6e 22 29 29 0a 20 20 20 20 20 20 20 28 ms-oauth2-url."token"))........(
17a0 74 65 6e 61 6e 74 20 2e 20 2c 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 69 63 72 6f 73 6f 66 74 2d tenant...,oauth2-auto-microsoft-
17c0 64 65 66 61 75 6c 74 2d 74 65 6e 61 6e 74 29 0a 20 20 20 20 20 20 20 28 73 63 6f 70 65 20 2e 20 default-tenant)........(scope...
17e0 22 6f 66 66 6c 69 6e 65 5f 61 63 63 65 73 73 20 68 74 74 70 73 3a 2f 2f 6f 75 74 6c 6f 6f 6b 2e "offline_access.https://outlook.
1800 6f 66 66 69 63 65 2e 63 6f 6d 2f 49 4d 41 50 2e 41 63 63 65 73 73 41 73 55 73 65 72 2e 41 6c 6c office.com/IMAP.AccessAsUser.All
1820 20 68 74 74 70 73 3a 2f 2f 6f 75 74 6c 6f 6f 6b 2e 6f 66 66 69 63 65 2e 63 6f 6d 2f 50 4f 50 2e .https://outlook.office.com/POP.
1840 41 63 63 65 73 73 41 73 55 73 65 72 2e 41 6c 6c 20 68 74 74 70 73 3a 2f 2f 6f 75 74 6c 6f 6f 6b AccessAsUser.All.https://outlook
1860 2e 6f 66 66 69 63 65 2e 63 6f 6d 2f 53 4d 54 50 2e 53 65 6e 64 22 29 0a 20 20 20 20 20 20 20 28 .office.com/SMTP.Send")........(
1880 63 6c 69 65 6e 74 5f 69 64 20 2e 20 2c 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 69 63 72 6f 73 6f client_id...,oauth2-auto-microso
18a0 66 74 2d 63 6c 69 65 6e 74 2d 69 64 29 0a 20 20 20 20 20 20 20 28 63 6c 69 65 6e 74 5f 73 65 63 ft-client-id)........(client_sec
18c0 72 65 74 20 2e 20 2c 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 69 63 72 6f 73 6f 66 74 2d 63 6c 69 ret...,oauth2-auto-microsoft-cli
18e0 65 6e 74 2d 73 65 63 72 65 74 29 29 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d ent-secret)))))...(defun.oauth2-
1900 61 75 74 6f 2d 70 72 6f 76 69 64 65 72 73 2d 61 6c 69 73 74 20 28 29 0a 20 20 22 52 65 74 75 72 auto-providers-alist.()..."Retur
1920 6e 20 61 6c 6c 20 61 76 61 69 6c 61 62 6c 65 20 4f 41 75 74 68 32 20 70 72 6f 76 69 64 65 72 73 n.all.available.OAuth2.providers
1940 2e 0a 54 68 69 73 20 63 6f 6d 62 69 6e 65 73 20 74 68 65 20 70 72 6f 76 69 64 65 72 73 20 73 70 ..This.combines.the.providers.sp
1960 65 63 69 66 69 65 64 20 69 6e 20 60 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 64 65 66 61 75 6c 74 ecified.in.`oauth2-auto--default
1980 2d 70 72 6f 76 69 64 65 72 73 27 20 61 6e 64 0a 60 6f 61 75 74 68 32 2d 61 75 74 6f 2d 61 64 64 -providers'.and.`oauth2-auto-add
19a0 69 74 69 6f 6e 61 6c 2d 70 72 6f 76 69 64 65 72 73 2d 61 6c 69 73 74 27 2e 22 0a 20 20 28 61 70 itional-providers-alist'."...(ap
19c0 70 65 6e 64 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 61 64 64 69 74 69 6f 6e 61 6c 2d 70 72 6f 76 pend.oauth2-auto-additional-prov
19e0 69 64 65 72 73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 28 6f 61 75 74 68 32 2d 61 75 iders-alist...........(oauth2-au
1a00 74 6f 2d 2d 64 65 66 61 75 6c 74 2d 70 72 6f 76 69 64 65 72 73 29 29 29 0a 0a 0a 3b 3b 20 4d 61 to--default-providers)))...;;.Ma
1a20 69 6e 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 in.data.structure..(defun.oauth2
1a40 2d 61 75 74 6f 2d 2d 6d 61 6b 65 2d 70 6c 69 73 74 20 28 72 65 73 70 6f 6e 73 65 20 70 6c 69 73 -auto--make-plist.(response.plis
1a60 74 29 0a 20 20 22 4d 61 6b 65 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 20 73 74 72 75 63 74 75 t)..."Make.the.main.data.structu
1a80 72 65 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 2e 0a 0a 54 68 69 73 20 64 61 74 61 20 73 74 72 re.of.the.module...This.data.str
1aa0 75 63 74 75 72 65 20 69 73 20 61 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 20 ucture.is.a.plist.containing.an.
1ac0 3a 61 63 63 65 73 73 2d 74 6f 6b 65 6e 2c 20 3a 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e 2c 20 61 :access-token,.:refresh-token,.a
1ae0 6e 64 0a 3a 65 78 70 69 72 61 74 69 6f 6e 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 74 nd.:expiration...This.function.t
1b00 61 6b 65 73 20 52 45 53 50 4f 4e 53 45 20 66 72 6f 6d 20 e2 80 98 6f 61 75 74 68 32 2d 61 75 74 akes.RESPONSE.from....oauth2-aut
1b20 6f 2d 2d 72 65 71 75 65 73 74 e2 80 99 2c 20 61 6e 64 20 64 61 74 61 0a 66 72 6f 6d 20 50 4c 49 o--request...,.and.data.from.PLI
1b40 53 54 20 69 66 20 6e 6f 6e 2d 6e 69 6c 2e 20 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 ST.if.non-nil...The.return.value
1b60 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 70 6c 73 .is.intended.to.be.stored.in.pls
1b80 74 6f 72 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e 20 28 6f tore."...(let.((refresh-token.(o
1ba0 72 20 28 63 64 72 20 28 61 73 73 6f 63 20 27 72 65 66 72 65 73 68 5f 74 6f 6b 65 6e 20 72 65 73 r.(cdr.(assoc.'refresh_token.res
1bc0 70 6f 6e 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 20 20 20 ponse)).........................
1be0 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 6c 69 73 74 20 3a 72 65 66 72 65 73 68 2d 74 6f 6b ...(plist-get.plist.:refresh-tok
1c00 65 6e 29 29 29 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e en)))).....(unless.refresh-token
1c20 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 4e 6f 20 72 65 66 72 65 73 68 20 74 6f 6b 65 6e 20 .......(error."No.refresh.token.
1c40 69 6e 20 72 65 73 70 6f 6e 73 65 20 25 73 20 6f 72 20 70 6c 69 73 74 20 25 73 22 0a 20 20 20 20 in.response.%s.or.plist.%s".....
1c60 20 20 20 20 20 20 20 20 20 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 .........(pp-to-string.response)
1c80 20 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67 20 70 6c 69 73 74 29 29 29 0a 20 20 20 20 60 28 3a 61 .(pp-to-string.plist))).....`(:a
1ca0 63 63 65 73 73 2d 74 6f 6b 65 6e 20 2c 28 63 64 72 20 28 61 73 73 6f 63 20 27 61 63 63 65 73 73 ccess-token.,(cdr.(assoc.'access
1cc0 5f 74 6f 6b 65 6e 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 3a 72 65 66 72 65 73 68 _token.response)).......:refresh
1ce0 2d 74 6f 6b 65 6e 20 2c 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e 0a 20 20 20 20 20 20 3a 65 78 70 -token.,refresh-token.......:exp
1d00 69 72 61 74 69 6f 6e 20 2c 28 2b 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 6e 6f 77 29 0a 20 iration.,(+.(oauth2-auto--now)..
1d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 .....................(cdr.(assoc
1d40 20 27 65 78 70 69 72 65 73 5f 69 6e 20 72 65 73 70 6f 6e 73 65 29 29 29 29 29 29 0a 0a 0a 3b 3b .'expires_in.response))))))...;;
1d60 20 43 68 65 63 6b 69 6e 67 20 74 6f 6b 65 6e 20 65 78 70 69 72 61 74 69 6f 6e 0a 0a 28 64 65 66 .Checking.token.expiration..(def
1d80 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 6e 6f 77 20 28 29 0a 20 20 22 43 75 72 72 65 6e un.oauth2-auto--now.()..."Curren
1da0 74 20 65 70 6f 63 68 20 69 6e 20 73 65 63 6f 6e 64 73 2c 20 61 73 20 61 6e 20 69 6e 74 65 67 65 t.epoch.in.seconds,.as.an.intege
1dc0 72 2e 22 0a 20 20 28 74 72 75 6e 63 61 74 65 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29 29 29 0a 0a r."...(truncate.(float-time)))..
1de0 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 69 73 74 2d 6e 65 65 64 73 2d (defun.oauth2-auto--plist-needs-
1e00 72 65 66 72 65 73 68 69 6e 67 20 28 70 6c 69 73 74 29 0a 20 20 22 52 65 74 75 72 6e 20 6e 6f 6e refreshing.(plist)..."Return.non
1e20 2d 6e 69 6c 20 69 66 20 74 68 65 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2d 74 6f 6b 65 6e -nil.if.the.authentication-token
1e40 20 69 6e 20 50 4c 49 53 54 20 6e 65 65 64 73 20 72 65 66 72 65 73 68 69 6e 67 2e 22 0a 20 20 28 .in.PLIST.needs.refreshing."...(
1e60 6f 72 20 28 6e 6f 74 20 28 70 6c 69 73 74 2d 67 65 74 20 70 6c 69 73 74 20 3a 65 78 70 69 72 61 or.(not.(plist-get.plist.:expira
1e80 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 28 3e 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 6e 6f tion)).......(>.(oauth2-auto--no
1ea0 77 29 0a 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 6c 69 73 74 20 3a 65 78 w)..........(plist-get.plist.:ex
1ec0 70 69 72 61 74 69 6f 6e 29 29 29 29 0a 0a 0a 3b 3b 20 43 61 63 68 65 20 61 6e 64 20 70 6c 73 74 piration))))...;;.Cache.and.plst
1ee0 6f 72 65 20 72 65 61 64 2f 77 72 69 74 65 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 6f 61 75 74 68 ore.read/write..(defcustom.oauth
1f00 32 2d 61 75 74 6f 2d 70 6c 73 74 6f 72 65 20 28 63 6f 6e 63 61 74 20 75 73 65 72 2d 65 6d 61 63 2-auto-plstore.(concat.user-emac
1f20 73 2d 64 69 72 65 63 74 6f 72 79 20 22 6f 61 75 74 68 32 2d 61 75 74 6f 2e 70 6c 69 73 74 22 29 s-directory."oauth2-auto.plist")
1f40 0a 20 20 22 46 69 6c 65 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 61 75 74 68 65 6e 74 69 63 61 ..."File.to.store.the.authentica
1f60 74 65 64 20 61 63 63 6f 75 6e 74 73 20 74 6f 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 6f 61 75 74 ted.accounts.to."...:group.'oaut
1f80 68 32 2d 61 75 74 6f 0a 20 20 3a 74 79 70 65 20 27 66 69 6c 65 29 0a 0a 3b 20 54 4f 44 4f 20 72 h2-auto...:type.'file)..;.TODO.r
1fa0 65 6d 6f 76 65 20 63 61 63 68 65 20 6f 72 20 69 6e 76 61 6c 69 64 61 74 65 20 69 74 20 70 72 6f emove.cache.or.invalidate.it.pro
1fc0 70 65 72 6c 79 20 77 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 67 72 61 6d 73 20 77 72 69 74 65 20 perly.when.other.programs.write.
1fe0 74 6f 20 64 69 73 6b 0a 28 64 65 66 76 61 72 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 to.disk.(defvar.oauth2-auto--pls
2000 74 6f 72 65 2d 63 61 63 68 65 0a 20 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 tore-cache...(make-hash-table.:t
2020 65 73 74 20 27 65 71 75 61 6c 29 0a 20 20 22 43 61 63 68 65 20 74 68 65 20 76 61 6c 75 65 73 20 est.'equal)..."Cache.the.values.
2040 77 72 69 74 74 65 6e 20 74 6f 20 61 6e 64 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 70 6c 73 written.to.and.read.from.the.pls
2060 74 6f 72 65 2e 22 29 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 63 6f 6d tore.")..(defun.oauth2-auto--com
2080 70 75 74 65 2d 69 64 20 28 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 0a 20 20 22 55 pute-id.(username.provider)..."U
20a0 6e 69 71 75 65 20 49 44 20 66 6f 72 20 61 20 55 53 45 52 4e 41 4d 45 20 61 6e 64 20 50 52 4f 56 nique.ID.for.a.USERNAME.and.PROV
20c0 49 44 45 52 2e 22 0a 20 20 28 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 69 6e 67 20 28 70 70 2d IDER."...(url-hexify-string.(pp-
20e0 74 6f 2d 73 74 72 69 6e 67 20 28 6c 69 73 74 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 to-string.(list.username.provide
2100 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f r))))..(defun.oauth2-auto--plsto
2120 72 65 2d 77 72 69 74 65 20 28 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 20 70 6c 69 73 re-write.(username.provider.plis
2140 74 29 0a 20 20 22 53 61 76 65 20 64 61 74 61 20 50 4c 49 53 54 20 66 6f 72 20 55 53 45 52 4e 41 t)..."Save.data.PLIST.for.USERNA
2160 4d 45 20 61 6e 64 20 50 52 4f 56 49 44 45 52 20 74 6f 20 74 68 65 20 70 6c 73 74 6f 72 65 20 61 ME.and.PROVIDER.to.the.plstore.a
2180 6e 64 20 63 61 63 68 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 69 64 20 28 6f 61 75 74 68 32 2d 61 nd.cache."...(let.((id.(oauth2-a
21a0 75 74 6f 2d 2d 63 6f 6d 70 75 74 65 2d 69 64 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 uto--compute-id.username.provide
21c0 72 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 73 74 6f 72 65 20 28 70 6c 73 74 6f 72 65 2d 6f 70 r)).........(plstore.(plstore-op
21e0 65 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 73 74 6f 72 65 29 29 29 0a 20 20 20 20 28 75 en.oauth2-auto-plstore))).....(u
2200 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 70 6c 69 nwind-protect.........(prog1.pli
2220 73 74 0a 20 20 20 20 20 20 20 20 20 20 28 61 64 76 69 63 65 2d 61 64 64 20 23 27 69 6e 73 65 72 st...........(advice-add.#'inser
2240 74 20 3a 62 65 66 6f 72 65 20 23 27 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 69 6e 73 65 72 74 2d t.:before.#'oauth2-auto--insert-
2260 62 72 65 61 6b 2d 6f 6e 2d 73 65 63 72 65 74 2d 65 6e 74 72 69 65 73 29 0a 20 20 20 20 20 20 20 break-on-secret-entries)........
2280 20 20 20 28 70 6c 73 74 6f 72 65 2d 70 75 74 20 70 6c 73 74 6f 72 65 20 69 64 20 6e 69 6c 20 70 ...(plstore-put.plstore.id.nil.p
22a0 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 65 6d 73 20 6c 69 6b 65 20 77 65 list)...........;;.Seems.like.we
22c0 20 6f 63 63 61 73 69 6f 6e 61 6c 6c 79 20 65 6e 64 20 75 70 20 77 69 74 68 20 61 20 6b 69 6c 6c .occasionally.end.up.with.a.kill
22e0 65 64 20 62 75 66 66 65 72 20 69 6e 20 50 4c 53 54 4f 52 45 20 2d 20 72 65 69 6e 69 74 69 61 6c ed.buffer.in.PLSTORE.-.reinitial
2300 69 7a 65 20 69 74 20 69 6e 20 74 68 61 74 20 63 61 73 65 2e 0a 20 20 20 20 20 20 20 20 20 20 28 ize.it.in.that.case............(
2320 69 66 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 28 70 6c 73 74 6f 72 65 2d 2d 67 65 74 2d if.(buffer-live-p.(plstore--get-
2340 62 75 66 66 65 72 20 70 6c 73 74 6f 72 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 buffer.plstore))...............(
2360 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 73 74 6f 72 65 2d 73 progn.................(plstore-s
2380 61 76 65 20 70 6c 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 ave.plstore).................(pu
23a0 74 68 61 73 68 20 69 64 20 70 6c 69 73 74 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 thash.id.plist.oauth2-auto--plst
23c0 6f 72 65 2d 63 61 63 68 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 73 74 6f 72 65 ore-cache)).............(plstore
23e0 2d 63 6c 6f 73 65 20 70 6c 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 61 75 -close.plstore).............(oau
2400 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f 72 65 2d 77 72 69 74 65 20 75 73 65 72 6e 61 6d 65 th2-auto--plstore-write.username
2420 20 70 72 6f 76 69 64 65 72 20 70 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 28 70 6c 73 74 6f 72 .provider.plist))).......(plstor
2440 65 2d 63 6c 6f 73 65 20 70 6c 73 74 6f 72 65 29 0a 20 20 20 20 20 20 28 61 64 76 69 63 65 2d 72 e-close.plstore).......(advice-r
2460 65 6d 6f 76 65 20 23 27 69 6e 73 65 72 74 20 23 27 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 69 6e emove.#'insert.#'oauth2-auto--in
2480 73 65 72 74 2d 62 72 65 61 6b 2d 6f 6e 2d 73 65 63 72 65 74 2d 65 6e 74 72 69 65 73 29 29 29 29 sert-break-on-secret-entries))))
24a0 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 69 6e 73 65 72 74 2d 62 72 65 ..(defun.oauth2-auto--insert-bre
24c0 61 6b 2d 6f 6e 2d 73 65 63 72 65 74 2d 65 6e 74 72 69 65 73 20 28 26 72 65 73 74 20 61 72 67 73 ak-on-secret-entries.(&rest.args
24e0 29 0a 20 20 22 42 72 65 61 6b 20 69 66 20 74 72 79 69 6e 67 20 74 6f 20 69 6e 73 65 72 74 20 73 )..."Break.if.trying.to.insert.s
2500 65 63 72 65 74 20 65 6e 74 72 69 65 73 20 6f 75 74 73 69 64 65 20 6f 66 20 70 6c 73 74 6f 72 65 ecret.entries.outside.of.plstore
2520 20 62 75 66 66 65 72 2e 0a 41 52 47 53 20 61 72 65 20 74 68 6f 73 65 20 70 61 73 73 65 64 20 74 .buffer..ARGS.are.those.passed.t
2540 6f 20 e2 80 98 69 6e 73 65 72 74 e2 80 99 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 o....insert......This.function.i
2560 73 20 61 64 64 65 64 20 61 73 20 62 65 66 6f 72 65 20 61 64 76 69 63 65 20 74 6f 20 e2 80 98 69 s.added.as.before.advice.to....i
2580 6e 73 65 72 74 e2 80 99 20 74 6f 20 61 74 74 65 6d 70 74 20 74 6f 20 72 65 70 72 6f 64 75 63 65 nsert....to.attempt.to.reproduce
25a0 20 61 6e 64 0a 66 69 78 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 72 68 61 70 .and.fix.https://github.com/rhap
25c0 73 30 64 79 2f 65 6d 61 63 73 2d 6f 61 75 74 68 32 2d 61 75 74 6f 2f 69 73 73 75 65 73 2f 36 2e s0dy/emacs-oauth2-auto/issues/6.
25e0 22 0a 20 20 28 77 68 65 6e 0a 20 20 20 20 20 20 28 61 6e 64 0a 20 20 20 20 20 20 20 28 73 74 72 "...(when.......(and........(str
2600 69 6e 67 70 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 ingp.(buffer-file-name))........
2620 28 6e 6f 74 20 28 66 69 6c 65 2d 65 71 75 61 6c 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (not.(file-equal-p..............
2640 28 66 69 6c 65 2d 74 72 75 65 6e 61 6d 65 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 73 74 6f (file-truename.oauth2-auto-plsto
2660 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 74 72 75 65 6e 61 6d 65 20 re)..............(file-truename.
2680 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 28 65 71 (buffer-file-name))))........(eq
26a0 75 61 6c 20 22 3b 3b 3b 20 73 65 63 72 65 74 20 65 6e 74 72 69 65 73 5c 6e 22 20 28 6e 74 68 20 ual.";;;.secret.entries\n".(nth.
26c0 30 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 28 62 61 63 6b 74 72 61 63 65 2d 66 72 61 6d 65 0.args))........(backtrace-frame
26e0 73 20 27 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f 72 65 2d 77 72 69 74 65 29 29 0a s.'oauth2-auto--plstore-write)).
2700 20 20 20 20 28 65 72 72 6f 72 20 22 42 55 47 3a 20 41 74 74 65 6d 70 74 65 64 20 74 6f 20 77 72 ....(error."BUG:.Attempted.to.wr
2720 69 74 65 20 e2 80 98 6f 61 75 74 68 32 2d 61 75 74 6f e2 80 99 20 6b 65 79 73 20 74 6f 20 25 73 ite....oauth2-auto....keys.to.%s
2740 2c 20 6e 6f 74 20 e2 80 98 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 73 74 6f 72 65 e2 80 99 20 ,.not....oauth2-auto-plstore....
2760 28 25 73 29 2e 20 20 50 6c 65 61 73 65 20 72 65 70 6f 72 74 20 74 6f 20 68 74 74 70 73 3a 2f 2f (%s)...Please.report.to.https://
2780 67 69 74 68 75 62 2e 63 6f 6d 2f 72 68 61 70 73 30 64 79 2f 65 6d 61 63 73 2d 6f 61 75 74 68 32 github.com/rhaps0dy/emacs-oauth2
27a0 2d 61 75 74 6f 2f 69 73 73 75 65 73 2f 36 2e 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 -auto/issues/6.%s"............(b
27c0 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 73 uffer-file-name).oauth2-auto-pls
27e0 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 72 65 71 75 69 72 tore............(if.(and.(requir
2800 65 20 27 62 61 63 6b 74 72 61 63 65 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.'backtrace.nil.t).............
2820 20 20 20 20 20 20 20 20 28 66 62 6f 75 6e 64 70 20 27 62 61 63 6b 74 72 61 63 65 2d 70 72 69 6e ........(fboundp.'backtrace-prin
2840 74 2d 74 6f 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f t-to-string))................(co
2860 6e 63 61 74 20 22 20 42 61 63 6b 74 72 61 63 65 3a 5c 6e 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 ncat.".Backtrace:\n\n"..........
2880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 74 72 61 63 65 2d 70 72 69 6e 74 2d 74 ..............(backtrace-print-t
28a0 6f 2d 73 74 72 69 6e 67 20 28 62 61 63 6b 74 72 61 63 65 2d 66 72 61 6d 65 73 20 27 6f 61 75 74 o-string.(backtrace-frames.'oaut
28c0 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f 72 65 2d 77 72 69 74 65 29 29 29 0a 20 20 20 20 20 20 h2-auto--plstore-write))).......
28e0 20 20 20 20 20 20 20 22 22 29 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 .......""))))...(defun.oauth2-au
2900 74 6f 2d 2d 70 6c 73 74 6f 72 65 2d 72 65 61 64 20 28 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 to--plstore-read.(username.provi
2920 64 65 72 29 0a 20 20 22 52 65 61 64 20 74 68 65 20 64 61 74 61 20 66 6f 72 20 55 53 45 52 4e 41 der)..."Read.the.data.for.USERNA
2940 4d 45 20 61 6e 64 20 50 52 4f 56 49 44 45 52 20 66 72 6f 6d 20 74 68 65 20 63 61 63 68 65 2c 20 ME.and.PROVIDER.from.the.cache,.
2960 65 6c 73 65 20 66 72 6f 6d 20 70 6c 73 74 6f 72 65 2e 0a 43 61 63 68 65 20 64 61 74 61 20 69 66 else.from.plstore..Cache.data.if
2980 20 61 20 6d 69 73 73 20 6f 63 63 75 72 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 69 64 20 28 6f 61 .a.miss.occurs."...(let.((id.(oa
29a0 75 74 68 32 2d 61 75 74 6f 2d 2d 63 6f 6d 70 75 74 65 2d 69 64 20 75 73 65 72 6e 61 6d 65 20 70 uth2-auto--compute-id.username.p
29c0 72 6f 76 69 64 65 72 29 29 29 0a 20 20 20 20 3b 20 41 73 73 75 6d 65 20 63 61 63 68 65 20 69 73 rovider))).....;.Assume.cache.is
29e0 20 69 6e 76 61 6c 69 64 61 74 65 64 2e 20 46 49 58 4d 45 0a 20 20 20 20 28 6f 72 20 6e 69 6c 20 .invalidated..FIXME.....(or.nil.
2a00 3b 28 67 65 74 68 61 73 68 20 69 64 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f 72 ;(gethash.id.oauth2-auto--plstor
2a20 65 2d 63 61 63 68 65 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 6c 73 74 6f 72 65 20 e-cache).........(let.((plstore.
2a40 28 70 6c 73 74 6f 72 65 2d 6f 70 65 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 73 74 6f 72 (plstore-open.oauth2-auto-plstor
2a60 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 e)))...........(unwind-protect..
2a80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 74 68 61 73 68 20 69 64 0a 20 20 20 20 20 20 20 .............(puthash.id........
2aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 70 6c 73 74 6f 72 65 2d 67 65 ................(cdr.(plstore-ge
2ac0 74 20 70 6c 73 74 6f 72 65 20 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.plstore.id))..................
2ae0 20 20 20 20 20 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f 72 65 2d 63 61 63 68 65 ......oauth2-auto--plstore-cache
2b00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 73 74 6f 72 65 2d 63 6c 6f 73 65 20 70 6c 73 ).............(plstore-close.pls
2b20 74 6f 72 65 29 29 29 29 29 29 0a 0a 0a 0a 3b 3b 20 4d 61 69 6e 20 65 6e 74 72 79 20 70 6f 69 6e tore))))))....;;.Main.entry.poin
2b40 74 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 69 73 74 20 t..(aio-defun.oauth2-auto-plist.
2b60 28 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 (username.provider)..."Returns.a
2b80 6e 20 5c 5c 3d 27 6f 61 75 74 68 32 2d 74 6f 6b 65 6e 20 73 74 72 75 63 74 75 72 65 20 66 6f 72 n.\\='oauth2-token.structure.for
2ba0 20 55 53 45 52 4e 41 4d 45 20 61 6e 64 20 50 52 4f 56 49 44 45 52 2e 22 0a 20 20 3b 20 43 68 65 .USERNAME.and.PROVIDER."...;.Che
2bc0 63 6b 20 74 68 65 20 70 6c 73 74 6f 72 65 20 66 6f 72 20 74 68 65 20 72 65 71 75 65 73 74 65 64 ck.the.plstore.for.the.requested
2be0 20 75 73 65 72 6e 61 6d 65 20 61 6e 64 20 70 72 6f 76 69 64 65 72 0a 20 20 28 6c 65 74 20 28 28 .username.and.provider...(let.((
2c00 70 6c 69 73 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f 72 65 2d 72 65 61 64 plist.(oauth2-auto--plstore-read
2c20 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e .username.provider))).....(if.(n
2c40 6f 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 69 73 74 2d 6e 65 65 64 73 2d 72 65 66 ot.(oauth2-auto--plist-needs-ref
2c60 72 65 73 68 69 6e 67 20 70 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 3b 20 49 66 20 65 78 70 reshing.plist)).........;.If.exp
2c80 69 72 61 74 69 6f 6e 20 74 69 6d 65 20 69 73 20 66 6f 75 6e 64 20 61 6e 64 20 68 61 73 6e 27 74 iration.time.is.found.and.hasn't
2ca0 20 68 61 70 70 65 6e 65 64 20 79 65 74 0a 20 20 20 20 20 20 20 20 70 6c 69 73 74 0a 20 20 20 20 .happened.yet.........plist.....
2cc0 20 20 3b 20 4f 74 68 65 72 77 69 73 65 20 72 65 66 72 65 73 68 20 6f 72 20 61 75 74 68 65 6e 74 ..;.Otherwise.refresh.or.authent
2ce0 69 63 61 74 65 20 74 68 65 20 75 73 65 72 2c 20 61 6e 64 20 77 72 69 74 65 20 74 68 65 20 72 65 icate.the.user,.and.write.the.re
2d00 73 75 6c 74 20 74 6f 0a 20 20 20 20 20 20 3b 20 70 6c 73 74 6f 72 65 2e 0a 20 20 20 20 20 20 28 sult.to.......;.plstore........(
2d20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 6c 73 74 6f 72 65 2d 77 72 69 74 65 0a 20 20 20 20 20 oauth2-auto--plstore-write......
2d40 20 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 0a 20 20 20 20 20 20 20 28 61 69 6f 2d ..username.provider........(aio-
2d60 61 77 61 69 74 0a 20 20 20 20 20 20 20 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 72 65 66 72 65 await.........(oauth2-auto-refre
2d80 73 68 2d 6f 72 2d 61 75 74 68 65 6e 74 69 63 61 74 65 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 sh-or-authenticate.username.prov
2da0 69 64 65 72 20 70 6c 69 73 74 29 29 29 29 29 29 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20 6f 61 75 ider.plist))))))..(aio-defun.oau
2dc0 74 68 32 2d 61 75 74 6f 2d 66 6f 72 63 65 2d 72 65 61 75 74 68 20 28 75 73 65 72 6e 61 6d 65 20 th2-auto-force-reauth.(username.
2de0 70 72 6f 76 69 64 65 72 29 0a 20 20 22 41 75 74 68 65 6e 74 69 63 61 74 65 73 20 55 53 45 52 4e provider)..."Authenticates.USERN
2e00 41 4d 45 20 77 69 74 68 20 50 52 4f 56 49 44 45 52 20 61 67 61 69 6e 20 61 6e 64 20 73 61 76 65 AME.with.PROVIDER.again.and.save
2e20 73 20 74 6f 20 74 68 65 20 70 6c 73 74 6f 72 65 2e 22 0a 20 20 28 6f 61 75 74 68 32 2d 61 75 74 s.to.the.plstore."...(oauth2-aut
2e40 6f 2d 2d 70 6c 73 74 6f 72 65 2d 77 72 69 74 65 0a 20 20 20 75 73 65 72 6e 61 6d 65 20 70 72 6f o--plstore-write....username.pro
2e60 76 69 64 65 72 0a 20 20 20 28 61 69 6f 2d 61 77 61 69 74 0a 20 20 20 20 28 6f 61 75 74 68 32 2d vider....(aio-await.....(oauth2-
2e80 61 75 74 6f 2d 61 75 74 68 65 6e 74 69 63 61 74 65 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 auto-authenticate.username.provi
2ea0 64 65 72 29 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6f 6c der))))...(defun.oauth2-auto-pol
2ec0 6c 2d 70 72 6f 6d 69 73 65 20 28 70 72 6f 6d 69 73 65 29 0a 20 20 22 53 79 6e 63 68 72 6f 6e 6f l-promise.(promise)..."Synchrono
2ee0 75 73 6c 79 20 77 61 69 74 20 66 6f 72 20 50 52 4f 4d 49 53 45 2c 20 70 6f 6c 6c 69 6e 67 20 65 usly.wait.for.PROMISE,.polling.e
2f00 76 65 72 79 20 53 45 43 4f 4e 44 53 20 73 65 63 6f 6e 64 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 very.SECONDS.seconds."...(let.((
2f20 73 65 63 6f 6e 64 73 20 33 29 29 0a 20 20 20 28 77 68 69 6c 65 20 28 6e 75 6c 6c 20 28 61 69 6f seconds.3))....(while.(null.(aio
2f40 2d 72 65 73 75 6c 74 20 70 72 6f 6d 69 73 65 29 29 0a 20 20 20 20 20 28 73 6c 65 65 70 2d 66 6f -result.promise))......(sleep-fo
2f60 72 20 73 65 63 6f 6e 64 73 29 29 0a 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 61 69 6f 2d 72 65 73 r.seconds))....(funcall.(aio-res
2f80 75 6c 74 20 70 72 6f 6d 69 73 65 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a ult.promise))))..;;;###autoload.
2fa0 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 69 73 74 2d 73 79 6e 63 20 28 75 (defun.oauth2-auto-plist-sync.(u
2fc0 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 0a 20 20 22 53 79 6e 63 68 72 6f 6e 6f 75 73 sername.provider)..."Synchronous
2fe0 6c 79 20 63 61 6c 6c 20 e2 80 98 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 69 73 74 e2 80 99 20 ly.call....oauth2-auto-plist....
3000 61 6e 64 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 0a 46 6f 72 20 55 53 45 52 4e 41 4d 45 20 and.return.result..For.USERNAME.
3020 61 6e 64 20 50 52 4f 56 49 44 45 52 2c 20 73 65 65 2e 22 0a 20 20 28 6f 61 75 74 68 32 2d 61 75 and.PROVIDER,.see."...(oauth2-au
3040 74 6f 2d 70 6f 6c 6c 2d 70 72 6f 6d 69 73 65 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6c 69 to-poll-promise.(oauth2-auto-pli
3060 73 74 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 29 29 0a 0a 28 61 69 6f 2d 64 65 st.username.provider)))..(aio-de
3080 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 61 63 63 65 73 73 2d 74 6f 6b 65 6e 20 28 75 73 fun.oauth2-auto-access-token.(us
30a0 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 63 63 65 ername.provider)..."Returns.acce
30c0 73 73 2d 74 6f 6b 65 6e 20 73 74 72 69 6e 67 20 75 73 65 64 20 74 6f 20 61 75 74 68 65 6e 74 69 ss-token.string.used.to.authenti
30e0 63 61 74 65 20 55 53 45 52 4e 41 4d 45 20 74 6f 20 50 52 4f 56 49 44 45 52 2e 22 0a 20 20 28 70 cate.USERNAME.to.PROVIDER."...(p
3100 6c 69 73 74 2d 67 65 74 20 28 61 69 6f 2d 61 77 61 69 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f list-get.(aio-await.(oauth2-auto
3120 2d 70 6c 69 73 74 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 29 0a 20 20 20 20 20 -plist.username.provider))......
3140 20 20 20 20 20 20 20 20 3a 61 63 63 65 73 73 2d 74 6f 6b 65 6e 29 29 0a 0a 3b 3b 3b 23 23 23 61 ........:access-token))..;;;###a
3160 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 61 63 63 65 73 utoload.(defun.oauth2-auto-acces
3180 73 2d 74 6f 6b 65 6e 2d 73 79 6e 63 20 28 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 s-token-sync.(username.provider)
31a0 0a 20 20 22 53 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 63 61 6c 6c 20 e2 80 98 6f 61 75 74 68 32 ..."Synchronously.call....oauth2
31c0 2d 61 75 74 6f 2d 61 63 63 65 73 73 2d 74 6f 6b 65 6e e2 80 99 20 61 6e 64 20 72 65 74 75 72 6e -auto-access-token....and.return
31e0 20 72 65 73 75 6c 74 2e 0a 46 6f 72 20 55 53 45 52 4e 41 4d 45 20 61 6e 64 20 50 52 4f 56 49 44 .result..For.USERNAME.and.PROVID
3200 45 52 2c 20 73 65 65 2e 22 0a 20 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 6f 6c 6c 2d 70 72 ER,.see."...(oauth2-auto-poll-pr
3220 6f 6d 69 73 65 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 61 63 63 65 73 73 2d 74 6f 6b 65 6e 20 omise.(oauth2-auto-access-token.
3240 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 29 29 29 0a 0a 0a 3b 3b 20 4d 61 6b 69 6e 67 username.provider)))...;;.Making
3260 20 61 6e 64 20 65 6e 63 6f 64 69 6e 67 20 72 65 71 75 65 73 74 73 0a 0a 28 64 65 66 75 6e 20 6f .and.encoding.requests..(defun.o
3280 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 28 70 72 6f 76 69 auth2-auto--provider-info.(provi
32a0 64 65 72 29 0a 20 20 22 47 65 74 20 64 61 74 61 20 66 6f 72 20 50 52 4f 56 49 44 45 52 20 66 72 der)..."Get.data.for.PROVIDER.fr
32c0 6f 6d 20 60 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 72 6f 76 69 64 65 72 73 2d 61 6c 69 73 74 27 om.`oauth2-auto-providers-alist'
32e0 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 28 63 64 72 20 28 ."...(let.((provider-info.(cdr.(
3300 61 73 73 6f 63 20 70 72 6f 76 69 64 65 72 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 72 6f 76 assoc.provider.(oauth2-auto-prov
3320 69 64 65 72 73 2d 61 6c 69 73 74 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 iders-alist))))).....(when.(not.
3340 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 6f 61 75 provider-info).......(error."oau
3360 74 68 32 2d 61 75 74 6f 3a 20 55 6e 6b 6e 6f 77 6e 20 70 72 6f 76 69 64 65 72 3a 20 25 73 22 20 th2-auto:.Unknown.provider:.%s".
3380 70 72 6f 76 69 64 65 72 29 29 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 6b 65 79 20 27 28 63 6c provider)).....(dolist.(key.'(cl
33a0 69 65 6e 74 5f 69 64 20 63 6c 69 65 6e 74 5f 73 65 63 72 65 74 29 29 0a 20 20 20 20 20 20 20 20 ient_id.client_secret)).........
33c0 28 77 68 65 6e 20 28 65 71 75 61 6c 20 22 22 20 28 63 64 72 20 28 61 73 73 6f 63 20 6b 65 79 20 (when.(equal."".(cdr.(assoc.key.
33e0 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 provider-info)))..........(error
3400 20 22 6f 61 75 74 68 32 2d 61 75 74 6f 3a 20 50 72 6f 76 69 64 65 72 20 25 73 20 77 61 73 20 72 ."oauth2-auto:.Provider.%s.was.r
3420 65 71 75 65 73 74 65 64 20 62 75 74 20 68 61 73 20 6e 6f 20 60 25 73 27 20 73 70 65 63 69 66 69 equested.but.has.no.`%s'.specifi
3440 65 64 22 20 70 72 6f 76 69 64 65 72 20 6b 65 79 29 29 29 0a 20 20 20 20 70 72 6f 76 69 64 65 72 ed".provider.key))).....provider
3460 2d 69 6e 66 6f 29 29 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 75 72 6c -info))..(defun.oauth2-auto--url
3480 69 66 79 2d 72 65 71 75 65 73 74 20 28 61 6c 69 73 74 29 0a 20 20 22 4d 61 6b 65 20 41 4c 49 53 ify-request.(alist)..."Make.ALIS
34a0 54 20 6f 66 20 28 73 79 6d 62 6f 6c 20 2e 20 73 74 72 69 6e 67 29 20 69 6e 74 6f 20 55 52 4c 2d T.of.(symbol...string).into.URL-
34c0 66 6f 72 6d 61 74 74 65 64 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 6d 61 70 63 6f 6e 63 61 74 formatted.request."...(mapconcat
34e0 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 63 6f 6e 63 61 74 20 28 75 72 6c 2d 68 65 78 69 66 79 .(lambda.(s).(concat.(url-hexify
3500 2d 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 61 72 20 73 29 29 29 0a 20 -string.(symbol-name.(car.s)))..
3520 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 20 20 20 ................................
3540 22 3d 22 20 28 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 69 6e 67 20 28 63 64 72 20 73 29 29 29 "=".(url-hexify-string.(cdr.s)))
3560 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 69 73 74 20 22 26 22 29 29 0a 0a 28 64 65 66 )..............alist."&"))..(def
3580 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 63 72 61 66 74 2d 72 65 71 75 65 73 74 2d 61 6c un.oauth2-auto--craft-request-al
35a0 69 73 74 20 28 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 64 61 74 61 2d 6b 65 79 73 20 65 78 74 ist.(provider-info.data-keys.ext
35c0 72 61 2d 61 6c 69 73 74 29 0a 20 20 22 4d 61 6b 65 20 72 65 71 75 65 73 74 20 66 6f 72 20 50 52 ra-alist)..."Make.request.for.PR
35e0 4f 56 49 44 45 52 2d 49 4e 46 4f 20 75 73 69 6e 67 20 74 68 65 20 69 6e 66 6f 20 69 6e 20 44 41 OVIDER-INFO.using.the.info.in.DA
3600 54 41 2d 4b 45 59 53 20 61 6e 64 20 45 58 54 52 41 2d 41 4c 49 53 54 2e 22 0a 20 20 28 61 70 70 TA-KEYS.and.EXTRA-ALIST."...(app
3620 65 6e 64 20 28 2d 2d 66 69 6c 74 65 72 20 28 6d 65 6d 71 20 28 63 61 72 20 69 74 29 20 64 61 74 end.(--filter.(memq.(car.it).dat
3640 61 2d 6b 65 79 73 29 20 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 29 20 65 78 74 72 61 2d 61 6c 69 a-keys).provider-info).extra-ali
3660 73 74 29 29 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 72 65 71 75 65 73 st))..(defun.oauth2-auto--reques
3680 74 2d 61 63 63 65 73 73 2d 70 61 72 73 65 20 28 29 0a 20 20 22 50 61 72 73 65 20 74 68 65 20 72 t-access-parse.()..."Parse.the.r
36a0 65 73 75 6c 74 20 6f 66 20 61 6e 20 4f 41 75 74 68 20 72 65 71 75 65 73 74 2e 0a 0a 43 6f 64 65 esult.of.an.OAuth.request...Code
36c0 20 66 72 6f 6d 20 60 6f 61 75 74 68 32 2e 65 6c 27 2c 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 65 .from.`oauth2.el',.licensed.unde
36e0 72 20 47 50 4c 76 33 2b 2e 0a 53 65 65 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d r.GPLv3+..See.https://github.com
3700 2f 65 6d 61 63 73 6d 69 72 72 6f 72 2f 6f 61 75 74 68 32 2e 22 0a 20 20 28 67 6f 74 6f 2d 63 68 /emacsmirror/oauth2."...(goto-ch
3720 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 28 77 68 65 6e 20 28 73 65 61 72 63 68 2d ar.(point-min))...(when.(search-
3740 66 6f 72 77 61 72 64 2d 72 65 67 65 78 70 20 22 5e 24 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 28 forward-regexp."^$".nil.t).....(
3760 6a 73 6f 6e 2d 72 65 61 64 29 29 29 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20 6f 61 75 74 68 32 2d json-read)))..(aio-defun.oauth2-
3780 61 75 74 6f 2d 2d 72 65 71 75 65 73 74 20 28 70 72 6f 76 69 64 65 72 20 75 72 6c 2d 6b 65 79 20 auto--request.(provider.url-key.
37a0 64 61 74 61 2d 6b 65 79 73 20 65 78 74 72 61 2d 61 6c 69 73 74 29 0a 20 20 22 41 73 79 6e 63 68 data-keys.extra-alist)..."Asynch
37c0 72 6f 6e 6f 75 73 6c 79 20 73 65 6e 64 20 61 20 50 4f 53 54 20 72 65 71 75 65 73 74 20 74 6f 20 ronously.send.a.POST.request.to.
37e0 4f 41 75 74 68 32 20 50 52 4f 56 49 44 45 52 2e 0a 50 52 4f 56 49 44 45 52 20 75 73 65 73 20 74 OAuth2.PROVIDER..PROVIDER.uses.t
3800 68 65 20 75 72 6c 20 61 6e 64 20 64 61 74 61 20 73 70 65 63 69 66 69 65 64 20 75 6e 64 65 72 20 he.url.and.data.specified.under.
3820 55 52 4c 2d 4b 45 59 20 61 6e 64 0a 44 41 54 41 2d 4b 45 59 53 20 69 6e 20 74 68 65 20 70 72 6f URL-KEY.and.DATA-KEYS.in.the.pro
3840 76 69 64 65 72 20 69 6e 66 6f 20 28 73 65 65 20 60 6f 61 75 74 68 32 2d 61 75 74 6f 2d 70 72 6f vider.info.(see.`oauth2-auto-pro
3860 76 69 64 65 72 73 2d 61 6c 69 73 74 27 29 2e 0a 41 6c 73 6f 20 73 65 6e 64 20 64 61 74 61 20 69 viders-alist')..Also.send.data.i
3880 6e 20 45 58 54 52 41 2d 41 4c 49 53 54 2e 22 0a 20 20 28 6c 65 74 2a 20 28 0a 20 20 20 20 20 20 n.EXTRA-ALIST."...(let*.(.......
38a0 20 20 20 3b 3b 20 43 72 61 66 74 20 74 68 65 20 72 65 71 75 65 73 74 20 66 69 72 73 74 0a 20 20 ...;;.Craft.the.request.first...
38c0 20 20 20 20 20 20 20 28 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 28 6f 61 75 74 68 32 2d 61 75 .......(provider-info.(oauth2-au
38e0 74 6f 2d 2d 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 70 72 6f 76 69 64 65 72 29 29 0a 20 20 20 to--provider-info.provider))....
3900 20 20 20 20 20 20 28 75 72 6c 20 28 63 64 72 20 28 61 73 73 6f 63 20 75 72 6c 2d 6b 65 79 20 70 ......(url.(cdr.(assoc.url-key.p
3920 72 6f 76 69 64 65 72 2d 69 6e 66 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 64 61 74 61 2d 61 rovider-info)))..........(data-a
3940 6c 69 73 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 63 72 61 66 74 2d 72 65 71 75 65 73 74 list.(oauth2-auto--craft-request
3960 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f -alist.......................pro
3980 76 69 64 65 72 2d 69 6e 66 6f 20 64 61 74 61 2d 6b 65 79 73 20 65 78 74 72 61 2d 61 6c 69 73 74 vider-info.data-keys.extra-alist
39a0 29 29 0a 20 20 20 20 20 20 20 20 20 28 64 61 74 61 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d ))..........(data.(oauth2-auto--
39c0 75 72 6c 69 66 79 2d 72 65 71 75 65 73 74 20 64 61 74 61 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 urlify-request.data-alist)).....
39e0 20 20 20 20 20 3b 3b 20 50 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 60 75 72 6c 2d 72 65 74 72 .....;;.Parameters.for.`url-retr
3a00 69 65 76 65 27 20 69 6e 73 69 64 65 20 60 61 69 6f 2d 75 72 6c 2d 72 65 74 72 69 65 76 65 27 0a ieve'.inside.`aio-url-retrieve'.
3a20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 67 69 73 74 65 72 65 64 2d 61 75 74 68 2d 73 63 .........(url-registered-auth-sc
3a40 68 65 6d 65 73 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 hemes.nil)..........(url-request
3a60 2d 6d 65 74 68 6f 64 20 22 50 4f 53 54 22 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 -method."POST")..........(url-re
3a80 71 75 65 73 74 2d 64 61 74 61 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 quest-data.data)..........(url-r
3aa0 65 71 75 65 73 74 2d 65 78 74 72 61 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 27 equest-extra-headers...........'
3ac0 28 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f (("Content-Type"..."application/
3ae0 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 22 29 29 29 0a 20 20 20 20 20 20 x-www-form-urlencoded"))).......
3b00 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 75 73 69 6e 67 20 60 61 69 6f 2d 75 72 6c 2d 72 65 74 72 69 ...;;.TODO:.using.`aio-url-retri
3b20 65 76 65 27 20 73 6f 6d 65 74 69 6d 65 73 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20 68 75 6e 67 eve'.sometimes.results.in.a.hung
3b40 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 73 6f 20 77 65 20 66 ..........;;.connection,.so.we.f
3b60 61 6c 6c 20 62 61 63 6b 20 74 6f 20 e2 80 98 75 72 6c 2d 72 65 74 72 69 65 76 65 2d 73 79 6e 63 all.back.to....url-retrieve-sync
3b80 68 72 6f 6e 6f 75 73 6c 79 e2 80 99 20 69 6e 73 74 65 61 64 2e 0a 20 20 20 20 20 20 20 20 20 3b hronously....instead...........;
3ba0 3b 20 54 68 69 73 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 6e e2 80 99 74 20 62 65 20 63 61 6c ;.This.method.shouldn...t.be.cal
3bc0 6c 65 64 20 76 65 72 79 20 6f 66 74 65 6e 2c 20 6f 6e 6c 79 20 77 68 65 6e 20 6f 62 74 61 69 6e led.very.often,.only.when.obtain
3be0 69 6e 67 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 69 74 69 61 6c 20 61 63 63 65 ing.the..........;;.initial.acce
3c00 73 73 20 74 6f 6b 65 6e 20 61 6e 64 20 77 68 65 6e 20 72 65 66 72 65 73 68 69 6e 67 20 74 6f 6b ss.token.and.when.refreshing.tok
3c20 65 6e 73 2c 20 77 68 69 63 68 20 6f 6e 6c 79 20 68 61 70 70 65 6e 73 0a 20 20 20 20 20 20 20 20 ens,.which.only.happens.........
3c40 20 3b 3b 20 65 76 65 72 79 20 68 6f 75 72 20 6f 72 20 73 6f 2e 20 54 68 65 72 65 66 6f 72 65 20 .;;.every.hour.or.so..Therefore.
3c60 49 20 74 68 69 6e 6b 20 74 68 69 73 20 69 73 20 61 6e 20 61 63 63 65 70 74 61 62 6c 65 20 77 6f I.think.this.is.an.acceptable.wo
3c80 72 6b 61 72 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 66 6f 72 20 6e 6f 77 2e 0a 20 20 rkaround..........;;.for.now....
3ca0 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 2d 62 75 66 66 65 72 20 28 61 69 6f 2d 61 77 61 .......(response-buffer.(aio-awa
3cc0 69 74 20 28 75 72 6c 2d 72 65 74 72 69 65 76 65 2d 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 75 it.(url-retrieve-synchronously.u
3ce0 72 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 77 69 74 68 2d 63 rl)))..........(response.(with-c
3d00 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 72 65 73 70 6f 6e 73 65 2d 62 75 66 66 65 72 0a 20 20 urrent-buffer.response-buffer...
3d20 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 6f 61 75 74 68 ...................(prog1.(oauth
3d40 32 2d 61 75 74 6f 2d 2d 72 65 71 75 65 73 74 2d 61 63 63 65 73 73 2d 70 61 72 73 65 29 0a 20 20 2-auto--request-access-parse)...
3d60 20 20 20 20 20 20 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 .....................(kill-buffe
3d80 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 63 r.(current-buffer)))))).......(c
3da0 6f 6e 64 0a 20 20 20 20 20 20 20 28 28 61 73 73 6f 63 20 27 65 72 72 6f 72 20 72 65 73 70 6f 6e ond........((assoc.'error.respon
3dc0 73 65 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 4f 41 75 74 68 20 65 72 72 6f 72 2e se).........(error."OAuth.error.
3de0 20 20 52 65 71 75 65 73 74 3a 20 25 73 2e 20 20 52 65 73 70 6f 6e 73 65 3a 20 25 73 22 0a 20 20 ..Request:.%s...Response:.%s"...
3e00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67 20 64 61 74 61 2d .............(pp-to-string.data-
3e20 61 6c 69 73 74 29 20 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 29 alist).(pp-to-string.response)))
3e40 0a 20 20 20 20 20 20 20 28 74 20 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 0a 0a 3b 3b 20 42 61 72 ........(t.response))))...;;.Bar
3e60 65 62 6f 6e 65 73 20 48 54 54 50 20 73 65 72 76 65 72 20 74 6f 20 72 65 63 65 69 76 65 20 74 68 ebones.HTTP.server.to.receive.th
3e80 65 20 74 6f 6b 65 6e 73 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 68 74 e.tokens..(defun.oauth2-auto--ht
3ea0 74 70 64 2d 72 65 73 70 6f 6e 64 20 28 70 72 6f 63 65 73 73 20 72 65 73 70 6f 6e 73 65 29 0a 20 tpd-respond.(process.response)..
3ec0 20 22 53 65 6e 64 20 72 65 73 70 6f 6e 73 65 20 66 6f 72 20 4f 41 75 74 68 32 20 63 68 61 6c 6c ."Send.response.for.OAuth2.chall
3ee0 65 6e 67 65 2d 72 65 73 70 6f 6e 73 65 2e 0a 50 52 4f 43 45 53 53 20 69 73 20 74 68 65 20 73 65 enge-response..PROCESS.is.the.se
3f00 72 76 65 72 20 70 72 6f 63 65 73 73 20 63 72 65 61 74 65 64 20 69 6e 20 e2 80 98 6f 61 75 74 68 rver.process.created.in....oauth
3f20 32 2d 61 75 74 6f 2d 2d 62 72 6f 77 73 65 72 2d 72 65 71 75 65 73 74 e2 80 99 2e 0a 52 45 53 50 2-auto--browser-request.....RESP
3f40 4f 4e 53 45 20 69 73 20 74 68 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 20 62 6f 64 79 20 74 ONSE.is.the.HTTP.response.body.t
3f60 6f 20 73 65 6e 64 2e 22 0a 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 0a o.send."...(process-send-string.
3f80 20 20 20 70 72 6f 63 65 73 73 20 28 63 6f 6e 63 61 74 20 22 48 54 54 50 2f 31 2e 30 20 32 30 30 ...process.(concat."HTTP/1.0.200
3fa0 20 4f 4b 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e 74 65 .OK\n"...................."Conte
3fc0 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 75 74 66 nt-Type:.text/plain;.charset=utf
3fe0 2d 38 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 -8\n"....................(format
4000 20 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 25 69 5c 6e 5c 6e 22 20 28 6c 65 6e 67 74 ."Content-Length:.%i\n\n".(lengt
4020 68 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h.response))....................
4040 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 5c response...................."\n\
4060 6e 22 29 29 0a 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 20 70 72 6f 63 65 73 73 n"))...(process-send-eof.process
4080 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 71 75 65 72 79 ))..(defmacro.oauth2-auto--query
40a0 2d 63 61 73 65 20 28 26 72 65 73 74 20 63 61 73 65 73 29 0a 20 20 22 48 61 6e 64 6c 65 20 48 54 -case.(&rest.cases)..."Handle.HT
40c0 54 50 20 71 75 65 72 69 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6b 65 79 73 20 70 72 65 TP.queries.based.on.the.keys.pre
40e0 73 65 6e 74 20 69 6e 20 e2 80 98 71 75 65 72 79 2d 61 6c 69 73 74 e2 80 99 2e 0a e2 80 98 71 75 sent.in....query-alist........qu
4100 65 72 79 2d 61 6c 69 73 74 e2 80 99 20 69 73 20 61 20 66 72 65 65 20 76 61 72 69 61 62 6c 65 2c ery-alist....is.a.free.variable,
4120 20 62 6f 75 6e 64 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 6f 66 20 74 68 69 73 20 6d 61 63 .bound.by.the.caller.of.this.mac
4140 72 6f 2e 20 20 45 61 63 68 0a 65 6c 65 6d 65 6e 74 20 6f 66 20 43 41 53 45 53 20 68 61 73 20 74 ro...Each.element.of.CASES.has.t
4160 68 65 20 66 6f 72 6d 61 74 20 e2 80 98 28 73 79 6d 62 6f 6c 73 20 6d 73 67 20 62 6f 64 79 29 27 he.format....(symbols.msg.body)'
4180 2e 20 20 46 6f 72 20 65 61 63 68 20 65 6c 65 6d 65 6e 74 20 6f 66 0a 43 41 53 45 53 3a 0a 0a 2d ...For.each.element.of.CASES:..-
41a0 20 e2 80 98 73 79 6d 62 6f 6c 73 27 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 74 20 6c 65 61 ....symbols'.is.a.list.of.at.lea
41c0 73 74 20 6f 6e 65 20 73 79 6d 62 6f 6c 2c 20 77 68 69 63 68 20 73 68 6f 75 6c 64 20 62 65 20 6b st.one.symbol,.which.should.be.k
41e0 65 79 73 20 69 6e 0a 20 20 e2 80 98 71 75 65 72 79 2d 61 6c 69 73 74 e2 80 99 2e 0a 2d 20 45 78 eys.in......query-alist.....-.Ex
4200 74 72 61 63 74 20 61 6e 64 20 62 69 6e 64 20 6b 65 79 73 20 60 73 79 6d 62 6f 6c 73 27 20 66 72 tract.and.bind.keys.`symbols'.fr
4220 6f 6d 20 60 71 75 65 72 79 2d 61 6c 69 73 74 27 2e 0a 2d 20 49 66 20 61 6c 6c 20 6f 66 20 74 68 om.`query-alist'..-.If.all.of.th
4240 65 6d 20 61 72 65 20 70 72 65 73 65 6e 74 2c 20 72 65 73 70 6f 6e 64 20 77 69 74 68 20 60 6d 73 em.are.present,.respond.with.`ms
4260 67 27 20 61 6e 64 20 72 75 6e 73 20 60 62 6f 64 79 27 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 g'.and.runs.`body'...For.example
4280 20 6f 66 20 75 73 61 67 65 20 73 65 65 20 e2 80 98 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 68 74 .of.usage.see....oauth2-auto--ht
42a0 74 70 64 2d 66 69 6c 74 65 72 e2 80 99 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 0a 20 20 20 28 64 tpd-filter...."...(declare....(d
42c0 65 62 75 67 20 28 26 72 65 73 74 20 28 28 73 79 6d 62 6f 6c 70 20 26 72 65 73 74 20 73 79 6d 62 ebug.(&rest.((symbolp.&rest.symb
42e0 6f 6c 70 29 20 66 6f 72 6d 20 26 72 65 73 74 20 66 6f 72 6d 29 29 29 29 0a 20 20 60 28 63 6f 6e olp).form.&rest.form))))...`(con
4300 64 0a 20 20 20 20 2c 40 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 63 61 73 65 29 0a 20 d.....,@(mapcar.(lambda.(case)..
4320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 79 6d 62 6f 6c 73 20 28 63 ...............(let.((symbols.(c
4340 61 72 20 63 61 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 20 ar.case)).......................
4360 28 6d 73 67 20 28 63 61 64 72 20 63 61 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (msg.(cadr.case))...............
4380 20 20 20 20 20 20 20 20 28 62 6f 64 79 20 28 63 64 64 72 20 63 61 73 65 29 29 29 0a 20 20 20 20 ........(body.(cddr.case))).....
43a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 61 6e 64 20 2c 40 28 2d 2d 6d 61 70 20 60 28 ..............`((and.,@(--map.`(
43c0 63 64 72 20 28 61 73 73 6f 63 20 27 2c 69 74 20 71 75 65 72 79 2d 61 6c 69 73 74 29 29 20 73 79 cdr.(assoc.',it.query-alist)).sy
43e0 6d 62 6f 6c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 mbols)).....................(let
4400 2a 20 28 2c 40 28 2d 2d 6d 61 70 20 60 28 2c 69 74 20 28 63 64 72 20 28 61 73 73 6f 63 20 27 2c *.(,@(--map.`(,it.(cdr.(assoc.',
4420 69 74 20 71 75 65 72 79 2d 61 6c 69 73 74 29 29 29 20 73 79 6d 62 6f 6c 73 29 0a 20 20 20 20 20 it.query-alist))).symbols)......
4440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 73 67 20 2c 6d 73 67 29 ......................(msg.,msg)
4460 29 0a 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 e2 80 98 69 67 ).......................;;....ig
4480 6e 6f 72 65 e2 80 99 20 73 75 70 70 72 65 73 73 65 73 20 62 79 74 65 20 63 6f 6d 70 69 6c 65 72 nore....suppresses.byte.compiler
44a0 20 77 61 72 6e 69 6e 67 73 20 69 66 20 74 68 65 20 6d 61 63 72 6f 0a 20 20 20 20 20 20 20 20 20 .warnings.if.the.macro..........
44c0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 63 61 6c 6c 65 72 20 64 6f 65 73 6e e2 80 99 74 .............;;.caller.doesn...t
44e0 20 75 73 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 64 65 63 6c 61 72 65 64 20 69 6e 20 74 .use.the.variables.declared.in.t
4500 68 65 20 e2 80 98 6c 65 74 2a e2 80 99 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 he....let*......................
4520 20 20 20 20 3b 3b 20 61 62 6f 76 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....;;.above....................
4540 20 20 20 20 28 69 67 6e 6f 72 65 20 6d 73 67 20 2c 40 73 79 6d 62 6f 6c 73 29 0a 20 20 20 20 20 ....(ignore.msg.,@symbols)......
4560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 68 .................(oauth2-auto--h
4580 74 74 70 64 2d 72 65 73 70 6f 6e 64 20 70 72 6f 63 65 73 73 20 6d 73 67 29 0a 20 20 20 20 20 20 ttpd-respond.process.msg).......
45a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 29 29 0a 20 20 20 20 20 ................,@body))))......
45c0 20 20 20 20 20 20 20 20 20 63 61 73 65 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 .........cases)))..(defun.oauth2
45e0 2d 61 75 74 6f 2d 2d 68 74 74 70 64 2d 66 69 6c 74 65 72 20 28 70 72 6f 63 65 73 73 20 69 6e 70 -auto--httpd-filter.(process.inp
4600 75 74 29 0a 20 20 22 54 68 65 20 48 54 54 50 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20 ut)..."The.HTTP.handler.for.the.
4620 4f 41 75 74 68 32 20 63 68 61 6c 6c 65 6e 67 65 2d 72 65 73 70 6f 6e 73 65 20 73 65 72 76 65 72 OAuth2.challenge-response.server
4640 2e 0a 50 52 4f 43 45 53 53 20 69 73 20 74 68 65 20 73 65 72 76 65 72 20 70 72 6f 63 65 73 73 20 ..PROCESS.is.the.server.process.
4660 63 72 65 61 74 65 64 20 69 6e 20 e2 80 98 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 62 72 6f 77 73 created.in....oauth2-auto--brows
4680 65 72 2d 72 65 71 75 65 73 74 e2 80 99 2e 0a 49 4e 50 55 54 20 69 73 20 74 68 65 20 72 61 77 20 er-request.....INPUT.is.the.raw.
46a0 48 54 54 50 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 71 75 65 72 79 2d 61 6c HTTP.request."...(let.((query-al
46c0 69 73 74 0a 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 ist..........(with-temp-buffer..
46e0 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 69 6e 70 75 74 29 0a 20 20 20 20 20 20 20 ..........(insert.input)........
4700 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 ....(goto-char.(point-min)).....
4720 20 20 20 20 20 20 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 .......(re-search-forward.......
4740 20 20 20 20 20 20 22 5e 5b 5b 3a 73 70 61 63 65 3a 5d 5d 2a 47 45 54 5b 5b 3a 73 70 61 63 65 3a ......"^[[:space:]]*GET[[:space:
4760 5d 5d 2b 5b 2f 3f 5d 2b 5c 5c 28 5b 5b 3a 67 72 61 70 68 3a 5d 5d 2a 5c 5c 29 5b 5b 3a 73 70 61 ]]+[/?]+\\([[:graph:]]*\\)[[:spa
4780 63 65 3a 5d 5d 2b 48 54 54 50 2f 5b 30 2d 39 2e 5d 2b 5b 5b 3a 73 70 61 63 65 3a 5d 5d 2a 24 22 ce:]]+HTTP/[0-9.]+[[:space:]]*$"
47a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 )............(mapcar............
47c0 20 28 6c 61 6d 62 64 61 20 28 69 74 29 20 28 63 6f 6e 73 20 28 69 6e 74 65 72 6e 20 28 63 61 72 .(lambda.(it).(cons.(intern.(car
47e0 20 69 74 29 29 20 28 63 61 64 72 20 69 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 .it)).(cadr.it))).............(u
4800 72 6c 2d 70 61 72 73 65 2d 71 75 65 72 79 2d 73 74 72 69 6e 67 20 28 6d 61 74 63 68 2d 73 74 72 rl-parse-query-string.(match-str
4820 69 6e 67 20 31 29 29 29 29 29 29 0a 20 20 20 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 71 75 ing.1)))))).....(oauth2-auto--qu
4840 65 72 79 2d 63 61 73 65 0a 20 20 20 20 20 28 28 65 72 72 6f 72 20 65 72 72 6f 72 5f 64 65 73 63 ery-case......((error.error_desc
4860 72 69 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 45 72 72 6f 72 20 25 73 ription).......(format."Error.%s
4880 3a 20 25 73 22 20 65 72 72 6f 72 20 65 72 72 6f 72 5f 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 20 :.%s".error.error_description)..
48a0 20 20 20 20 20 28 65 72 72 6f 72 20 6d 73 67 29 0a 20 20 20 20 20 20 6e 69 6c 29 0a 20 20 20 20 .....(error.msg).......nil).....
48c0 20 28 28 63 6f 64 65 20 73 74 61 74 65 29 0a 20 20 20 20 20 20 22 41 75 74 68 65 6e 74 69 63 61 .((code.state)......."Authentica
48e0 74 69 6f 6e 20 74 6f 6b 65 6e 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 6f 62 74 61 69 6e 65 64 tion.token.successfully.obtained
4900 20 62 79 20 45 6d 61 63 73 21 20 59 6f 75 20 6d 61 79 20 63 6c 6f 73 65 20 74 68 69 73 20 70 61 .by.Emacs!.You.may.close.this.pa
4920 67 65 20 6e 6f 77 2e 22 0a 20 20 20 20 20 20 71 75 65 72 79 2d 61 6c 69 73 74 29 0a 20 20 20 20 ge.now.".......query-alist).....
4940 20 28 28 66 61 76 69 63 6f 6e 2e 69 63 6f 29 0a 20 20 20 20 20 20 22 22 0a 20 20 20 20 20 20 6e .((favicon.ico)......."".......n
4960 69 6c 29 20 20 3b 20 6a 75 73 74 20 72 65 74 75 72 6e 20 65 6d 70 74 79 20 6c 69 73 74 20 69 66 il)..;.just.return.empty.list.if
4980 20 66 61 76 69 63 6f 6e 2e 69 63 6f 20 69 73 20 72 65 71 75 65 73 74 65 64 0a 20 20 20 20 20 28 .favicon.ico.is.requested......(
49a0 28 29 0a 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 ().......(format."Could.not.pars
49c0 65 20 71 75 65 72 79 20 73 74 72 69 6e 67 20 25 73 22 20 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67 e.query.string.%s".(pp-to-string
49e0 20 71 75 65 72 79 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 6d 73 67 29 .query-alist)).......(error.msg)
4a00 0a 20 20 20 20 20 20 6e 69 6c 29 29 29 29 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20 6f 61 75 74 68 .......nil))))..(aio-defun.oauth
4a20 32 2d 61 75 74 6f 2d 2d 62 72 6f 77 73 65 72 2d 72 65 71 75 65 73 74 20 28 70 72 6f 76 69 64 65 2-auto--browser-request.(provide
4a40 72 20 75 72 6c 2d 6b 65 79 20 64 61 74 61 2d 6b 65 79 73 20 65 78 74 72 61 2d 61 6c 69 73 74 20 r.url-key.data-keys.extra-alist.
4a60 26 6f 70 74 69 6f 6e 61 6c 20 71 75 69 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 &optional.quiet)............(if.
4a80 6f 61 75 74 68 32 2d 61 75 74 6f 2d 6d 61 6e 75 61 6c 6c 79 2d 61 75 74 68 0a 20 20 20 20 20 20 oauth2-auto-manually-auth.......
4aa0 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f .........(aio-await.(oauth2-auto
4ac0 2d 2d 62 72 6f 77 73 65 72 2d 72 65 71 75 65 73 74 2d 6d 61 6e 75 61 6c 6c 79 20 70 72 6f 76 69 --browser-request-manually.provi
4ae0 64 65 72 20 75 72 6c 2d 6b 65 79 20 64 61 74 61 2d 6b 65 79 73 20 65 78 74 72 61 2d 61 6c 69 73 der.url-key.data-keys.extra-alis
4b00 74 20 71 75 69 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 69 6f 2d 61 77 61 69 t.quiet))..............(aio-awai
4b20 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 62 72 6f 77 73 65 72 2d 72 65 71 75 65 73 74 2d t.(oauth2-auto--browser-request-
4b40 61 75 74 6f 20 70 72 6f 76 69 64 65 72 20 75 72 6c 2d 6b 65 79 20 64 61 74 61 2d 6b 65 79 73 20 auto.provider.url-key.data-keys.
4b60 65 78 74 72 61 2d 61 6c 69 73 74 20 71 75 69 65 74 29 29 29 29 0a 0a 0a 28 61 69 6f 2d 64 65 66 extra-alist.quiet))))...(aio-def
4b80 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 62 72 6f 77 73 65 72 2d 72 65 71 75 65 73 74 2d un.oauth2-auto--browser-request-
4ba0 61 75 74 6f 20 28 70 72 6f 76 69 64 65 72 20 75 72 6c 2d 6b 65 79 20 64 61 74 61 2d 6b 65 79 73 auto.(provider.url-key.data-keys
4bc0 20 65 78 74 72 61 2d 61 6c 69 73 74 20 26 6f 70 74 69 6f 6e 61 6c 20 71 75 69 65 74 29 0a 20 20 .extra-alist.&optional.quiet)...
4be0 22 4f 70 65 6e 20 62 72 6f 77 73 65 72 20 66 6f 72 20 74 68 65 20 4f 41 75 74 68 32 20 50 52 4f "Open.browser.for.the.OAuth2.PRO
4c00 56 49 44 45 52 2e 0a 42 72 6f 77 73 65 72 20 69 73 20 6f 70 65 6e 65 64 20 61 74 20 75 72 6c 20 VIDER..Browser.is.opened.at.url.
4c20 61 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20 67 69 76 65 6e 20 62 79 20 74 61 6b 69 6e 67 20 55 and.parameters.given.by.taking.U
4c40 52 4c 2d 4b 45 59 20 61 6e 64 20 44 41 54 41 2d 4b 45 59 53 0a 66 72 6f 6d 20 74 68 65 20 64 61 RL-KEY.and.DATA-KEYS.from.the.da
4c60 74 61 20 6f 66 20 74 68 65 20 50 52 4f 56 49 44 45 52 2c 20 61 6e 64 20 61 64 64 69 6e 67 20 45 ta.of.the.PROVIDER,.and.adding.E
4c80 58 54 52 41 2d 41 4c 49 53 54 2e 20 20 54 68 65 6e 20 77 65 20 6c 69 73 74 65 6e 20 74 6f 20 74 XTRA-ALIST...Then.we.listen.to.t
4ca0 68 65 0a 72 65 64 69 72 65 63 74 20 72 65 73 70 6f 6e 73 65 20 61 6e 64 20 72 65 74 75 72 6e 20 he.redirect.response.and.return.
4cc0 69 74 2e 0a 0a 49 66 20 51 55 49 45 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 73 75 70 70 72 65 it...If.QUIET.is.non-nil,.suppre
4ce0 73 73 20 61 6c 65 72 74 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 3b 20 46 69 72 73 74 20 6f 70 65 ss.alerts."...(let*.(;.First.ope
4d00 6e 20 6c 69 73 74 65 6e 65 72 20 74 6f 20 73 6f 6d 65 20 70 6f 72 74 20 69 6e 20 6c 6f 63 61 6c n.listener.to.some.port.in.local
4d20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 28 73 65 72 76 65 72 2d 70 72 6f 63 2d 66 69 6c 74 65 host..........(server-proc-filte
4d40 72 20 28 61 69 6f 2d 6d 61 6b 65 2d 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 r.(aio-make-callback))..........
4d60 28 73 65 72 76 65 72 2d 70 72 6f 63 20 28 6d 61 6b 65 2d 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 (server-proc.(make-network-proce
4d80 73 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 3a 6e 61 6d 65 20 ss........................:name.
4da0 20 20 20 22 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 68 74 74 70 64 22 0a 20 20 20 20 20 20 20 20 ..."oauth2-auto--httpd".........
4dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 72 76 69 63 65 20 74 0a 20 20 20 20 20 20 ...............:service.t.......
4de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 72 76 65 72 20 20 74 0a 20 20 20 20 .................:server..t.....
4e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 20 20 20 27 6c 6f 63 ...................:host....'loc
4e20 61 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 3a 66 61 6d 69 6c al........................:famil
4e40 79 20 20 27 69 70 76 34 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y..'ipv4........................
4e60 3a 66 69 6c 74 65 72 20 20 28 63 61 72 20 73 65 72 76 65 72 2d 70 72 6f 63 2d 66 69 6c 74 65 72 :filter..(car.server-proc-filter
4e80 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 3a 63 6f 64 69 6e 67 )........................:coding
4ea0 20 20 27 62 69 6e 61 72 79 29 29 29 0a 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 ..'binary))).....(unwind-protect
4ec0 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 73 65 72 76 65 72 2d 70 72 6f 6d 69 73 65 20 .........(let*.((server-promise.
4ee0 28 63 64 72 20 73 65 72 76 65 72 2d 70 72 6f 63 2d 66 69 6c 74 65 72 29 29 0a 20 20 20 20 20 20 (cdr.server-proc-filter)).......
4f00 20 20 20 20 20 20 20 20 20 28 73 65 72 76 65 72 2d 75 72 6c 20 28 66 6f 72 6d 61 74 20 22 68 74 .........(server-url.(format."ht
4f20 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 25 69 2f 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 tp://localhost:%i/".............
4f40 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 61 64 72 20 28 70 72 .......................(cadr.(pr
4f60 6f 63 65 73 73 2d 63 6f 6e 74 61 63 74 20 73 65 72 76 65 72 2d 70 72 6f 63 29 29 29 29 0a 20 20 ocess-contact.server-proc))))...
4f80 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 64 69 72 65 63 74 2d 75 72 69 2d 65 6c 74 20 28 .............(redirect-uri-elt.(
4fa0 63 6f 6e 73 20 27 72 65 64 69 72 65 63 74 5f 75 72 69 20 73 65 72 76 65 72 2d 75 72 6c 29 29 0a cons.'redirect_uri.server-url)).
4fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 43 72 61 66 74 20 61 20 72 65 71 75 65 73 ................;.Craft.a.reques
4fe0 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 65 72 79 2d 65 78 74 72 61 2d 61 6c 69 t................(very-extra-ali
5000 73 74 20 28 63 6f 6e 73 20 72 65 64 69 72 65 63 74 2d 75 72 69 2d 65 6c 74 20 65 78 74 72 61 2d st.(cons.redirect-uri-elt.extra-
5020 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 76 65 72 79 2d alist))................;;.(very-
5040 65 78 74 72 61 2d 61 6c 69 73 74 20 65 78 74 72 61 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 extra-alist.extra-alist)........
5060 20 20 20 20 20 20 20 20 3b 3b 20 61 6c 6d 6f 73 74 20 73 61 6d 65 20 63 6f 64 65 20 61 73 20 62 ........;;.almost.same.code.as.b
5080 65 67 69 6e 6e 69 6e 67 20 6f 66 20 60 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 72 65 71 75 65 73 eginning.of.`oauth2-auto--reques
50a0 74 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f t'................(provider-info
50c0 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 70 72 6f .(oauth2-auto--provider-info.pro
50e0 76 69 64 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61 74 61 2d 61 6c 69 vider))................(data-ali
5100 73 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 63 72 61 66 74 2d 72 65 71 75 65 73 74 2d 61 st.(oauth2-auto--craft-request-a
5120 6c 69 73 74 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 list............................
5140 20 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 64 61 74 61 2d 6b 65 79 73 20 76 65 72 79 2d 65 78 .provider-info.data-keys.very-ex
5160 74 72 61 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61 74 61 tra-alist))................(data
5180 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 75 72 6c 69 66 79 2d 72 65 71 75 65 73 74 20 64 61 .(oauth2-auto--urlify-request.da
51a0 74 61 2d 61 6c 69 73 74 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 20 ta-alist)).................(url.
51c0 28 63 64 72 20 28 61 73 73 6f 63 20 75 72 6c 2d 6b 65 79 20 70 72 6f 76 69 64 65 72 2d 69 6e 66 (cdr.(assoc.url-key.provider-inf
51e0 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 6f 70 65 6e 20 61 75 74 68 6f o)))................;.open.autho
5200 72 69 7a 61 74 69 6f 6e 20 55 52 4c 20 69 6e 20 62 72 6f 77 73 65 72 0a 20 20 20 20 20 20 20 20 rization.URL.in.browser.........
5220 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 2d 61 6c 69 73 74 20 6e 69 6c 29 29 0a 20 20 20 .......(response-alist.nil))....
5240 20 20 20 20 20 20 20 28 62 72 6f 77 73 65 2d 75 72 6c 20 28 63 6f 6e 63 61 74 20 75 72 6c 20 22 .......(browse-url.(concat.url."
5260 3f 22 20 64 61 74 61 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 71 75 69 ?".data))............(unless.qui
5280 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6c 65 72 74 20 22 4c 6f 67 20 69 6e 20 74 6f et.............(alert."Log.in.to
52a0 20 79 6f 75 72 20 61 63 63 6f 75 6e 74 20 66 6f 72 20 45 6d 61 63 73 20 69 6e 20 79 6f 75 72 20 .your.account.for.Emacs.in.your.
52c0 62 72 6f 77 73 65 72 20 77 69 6e 64 6f 77 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 browser.window".................
52e0 20 20 20 3a 74 69 74 6c 65 20 22 45 6d 61 63 73 20 4f 41 75 74 68 32 20 6c 6f 67 69 6e 22 0a 20 ...:title."Emacs.OAuth2.login"..
5300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 27 6f 61 75 ..................:category.'oau
5320 74 68 32 2d 61 75 74 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 20 57 61 69 74 20 75 6e 74 69 th2-auto))...........;.Wait.unti
5340 6c 20 77 65 20 67 65 74 20 61 20 72 65 70 6c 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 27 63 6f 64 l.we.get.a.reply.containing.'cod
5360 65 20 61 6e 64 20 27 73 74 61 74 65 2e 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 e.and.'state............(while.(
5380 6e 6f 74 20 72 65 73 70 6f 6e 73 65 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 not.response-alist).............
53a0 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 (setq.response-alist............
53c0 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 23 27 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 68 74 74 .......(apply.#'oauth2-auto--htt
53e0 70 64 2d 66 69 6c 74 65 72 20 28 61 69 6f 2d 63 68 61 69 6e 20 73 65 72 76 65 72 2d 70 72 6f 6d pd-filter.(aio-chain.server-prom
5400 69 73 65 29 29 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 3b 20 72 65 74 75 72 6e 20 74 68 65 20 ise))))............;.return.the.
5420 72 65 73 70 6f 6e 73 65 2c 20 77 69 74 68 20 74 68 65 20 27 72 65 64 69 72 65 63 74 5f 75 72 69 response,.with.the.'redirect_uri
5440 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 72 65 64 69 72 65 63 74 2d 75 72 69 2d 65 6c ...........(cons.redirect-uri-el
5460 74 20 72 65 73 70 6f 6e 73 65 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 3b 20 41 6c 77 61 79 t.response-alist)).......;.Alway
5480 73 20 6b 69 6c 6c 20 73 65 72 76 65 72 2d 70 72 6f 63 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 s.kill.server-proc.......(delete
54a0 2d 70 72 6f 63 65 73 73 20 73 65 72 76 65 72 2d 70 72 6f 63 29 29 29 29 0a 0a 28 61 69 6f 2d 64 -process.server-proc))))..(aio-d
54c0 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 62 72 6f 77 73 65 72 2d 72 65 71 75 65 73 efun.oauth2-auto--browser-reques
54e0 74 2d 6d 61 6e 75 61 6c 6c 79 20 28 70 72 6f 76 69 64 65 72 20 75 72 6c 2d 6b 65 79 20 64 61 74 t-manually.(provider.url-key.dat
5500 61 2d 6b 65 79 73 20 65 78 74 72 61 2d 61 6c 69 73 74 20 26 6f 70 74 69 6f 6e 61 6c 20 71 75 69 a-keys.extra-alist.&optional.qui
5520 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 22 4f 70 65 6e 20 62 72 6f 77 73 65 72 20 66 6f 72 et)............"Open.browser.for
5540 20 74 68 65 20 4f 41 75 74 68 32 20 50 52 4f 56 49 44 45 52 2e 0a 49 6e 73 74 65 61 64 20 6f 66 .the.OAuth2.PROVIDER..Instead.of
5560 20 6f 70 65 6e 69 6e 67 20 62 72 6f 77 73 65 72 2c 20 64 69 73 70 6c 61 79 20 74 68 65 20 61 75 .opening.browser,.display.the.au
5580 74 68 6f 72 69 7a 61 74 69 6f 6e 20 55 52 4c 20 61 6e 64 20 77 61 69 74 20 66 6f 72 20 75 73 65 thorization.URL.and.wait.for.use
55a0 72 20 74 6f 20 69 6e 70 75 74 20 74 68 65 20 63 6f 64 65 2e 0a 42 72 6f 77 73 65 72 20 55 52 4c r.to.input.the.code..Browser.URL
55c0 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 75 72 6c 20 61 6e 64 20 70 61 72 .is.constructed.from.url.and.par
55e0 61 6d 65 74 65 72 73 20 67 69 76 65 6e 20 62 79 20 74 61 6b 69 6e 67 20 55 52 4c 2d 4b 45 59 20 ameters.given.by.taking.URL-KEY.
5600 61 6e 64 20 44 41 54 41 2d 4b 45 59 53 0a 66 72 6f 6d 20 74 68 65 20 64 61 74 61 20 6f 66 20 74 and.DATA-KEYS.from.the.data.of.t
5620 68 65 20 50 52 4f 56 49 44 45 52 2c 20 61 6e 64 20 61 64 64 69 6e 67 20 45 58 54 52 41 2d 41 4c he.PROVIDER,.and.adding.EXTRA-AL
5640 49 53 54 2e 0a 0a 49 66 20 51 55 49 45 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 73 75 70 70 72 IST...If.QUIET.is.non-nil,.suppr
5660 65 73 73 20 61 6c 65 72 74 73 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 ess.alerts."............(let*.((
5680 72 65 64 69 72 65 63 74 2d 75 72 69 20 22 68 74 74 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 38 redirect-uri."http://localhost:8
56a0 30 38 30 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 64 69 72 65 63 080")...................(redirec
56c0 74 2d 75 72 69 2d 65 6c 74 20 28 63 6f 6e 73 20 27 72 65 64 69 72 65 63 74 5f 75 72 69 20 72 65 t-uri-elt.(cons.'redirect_uri.re
56e0 64 69 72 65 63 74 2d 75 72 69 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 direct-uri))...................(
5700 76 65 72 79 2d 65 78 74 72 61 2d 61 6c 69 73 74 20 28 63 6f 6e 73 20 72 65 64 69 72 65 63 74 2d very-extra-alist.(cons.redirect-
5720 75 72 69 2d 65 6c 74 20 65 78 74 72 61 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 uri-elt.extra-alist))...........
5740 20 20 20 20 20 20 20 20 28 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 28 6f 61 75 74 68 32 2d 61 ........(provider-info.(oauth2-a
5760 75 74 6f 2d 2d 70 72 6f 76 69 64 65 72 2d 69 6e 66 6f 20 70 72 6f 76 69 64 65 72 29 29 0a 20 20 uto--provider-info.provider))...
5780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61 74 61 2d 61 6c 69 73 74 20 28 6f 61 75 ................(data-alist.(oau
57a0 74 68 32 2d 61 75 74 6f 2d 2d 63 72 61 66 74 2d 72 65 71 75 65 73 74 2d 61 6c 69 73 74 0a 20 20 th2-auto--craft-request-alist...
57c0 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 70 72 6f .............................pro
57e0 76 69 64 65 72 2d 69 6e 66 6f 20 64 61 74 61 2d 6b 65 79 73 20 76 65 72 79 2d 65 78 74 72 61 2d vider-info.data-keys.very-extra-
5800 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 61 74 61 20 alist))...................(data.
5820 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 75 72 6c 69 66 79 2d 72 65 71 75 65 73 74 20 64 61 74 (oauth2-auto--urlify-request.dat
5840 61 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 6c a-alist))...................(url
5860 20 28 63 64 72 20 28 61 73 73 6f 63 20 75 72 6c 2d 6b 65 79 20 70 72 6f 76 69 64 65 72 2d 69 6e .(cdr.(assoc.url-key.provider-in
5880 66 6f 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 75 74 68 2d 75 72 fo)))...................(auth-ur
58a0 6c 20 28 63 6f 6e 63 61 74 20 75 72 6c 20 22 3f 22 20 64 61 74 61 29 29 29 0a 0a 20 20 20 20 20 l.(concat.url."?".data))).......
58c0 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 73 74 65 61 64 20 6f 66 20 6f 70 65 6e 69 6e 67 20 62 72 ........;;.Instead.of.opening.br
58e0 6f 77 73 65 72 2c 20 73 68 6f 77 20 55 52 4c 20 61 6e 64 20 77 61 69 74 20 66 6f 72 20 63 6f 64 owser,.show.URL.and.wait.for.cod
5900 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 71 75 69 65 74 0a 20 20 20 e..............(unless.quiet....
5920 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6c 65 72 74 20 28 66 6f 72 6d 61 74 20 22 50 6c 65 61 ............(alert.(format."Plea
5940 73 65 20 76 69 73 69 74 20 74 68 69 73 20 55 52 4c 20 74 6f 20 61 75 74 68 6f 72 69 7a 65 3a 5c se.visit.this.URL.to.authorize:\
5960 6e 25 73 5c 6e 5c 6e 41 66 74 65 72 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 2c 20 63 6f 70 79 n%s\n\nAfter.authorization,.copy
5980 20 74 68 65 20 27 63 6f 64 65 27 20 70 61 72 61 6d 65 74 65 72 20 66 72 6f 6d 20 74 68 65 20 72 .the.'code'.parameter.from.the.r
59a0 65 64 69 72 65 63 74 20 55 52 4c 20 61 6e 64 20 70 61 73 74 65 20 69 74 20 62 65 6c 6f 77 3a 22 edirect.URL.and.paste.it.below:"
59c0 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 20 61 ...............................a
59e0 75 74 68 2d 75 72 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 3a uth-url).......................:
5a00 74 69 74 6c 65 20 22 45 6d 61 63 73 20 4f 41 75 74 68 32 20 6c 6f 67 69 6e 22 0a 20 20 20 20 20 title."Emacs.OAuth2.login"......
5a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 61 74 65 67 6f 72 79 20 27 6f 61 75 74 .................:category.'oaut
5a40 68 32 2d 61 75 74 6f 29 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 61 69 74 20 h2-auto))...............;;.Wait.
5a60 66 6f 72 20 75 73 65 72 20 74 6f 20 69 6e 70 75 74 20 74 68 65 20 63 6f 64 65 0a 20 20 20 20 20 for.user.to.input.the.code......
5a80 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f 64 65 20 28 72 65 61 64 2d 73 74 72 69 6e 67 ........(let.((code.(read-string
5aa0 20 28 66 6f 72 6d 61 74 20 22 50 6c 65 61 73 65 20 76 69 73 69 74 20 74 68 69 73 20 55 52 4c 20 .(format."Please.visit.this.URL.
5ac0 74 6f 20 61 75 74 68 6f 72 69 7a 65 3a 5c 6e 25 73 5c 6e 5c 6e 41 66 74 65 72 20 61 75 74 68 6f to.authorize:\n%s\n\nAfter.autho
5ae0 72 69 7a 61 74 69 6f 6e 2c 20 63 6f 70 79 20 74 68 65 20 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 rization,.copy.the.code.from.the
5b00 20 72 65 64 69 72 65 63 74 20 55 52 4c 20 61 6e 64 20 70 61 73 74 65 20 69 74 20 68 65 72 65 2e .redirect.URL.and.paste.it.here.
5b20 5c 6e 45 6e 74 65 72 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 6f 64 65 3a 20 22 20 61 75 \nEnter.authorization.code:.".au
5b40 74 68 2d 75 72 6c 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 72 65 74 th-url))))................;;.ret
5b60 75 72 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2c 20 77 69 74 68 20 74 68 65 20 27 72 65 64 69 urn.the.response,.with.the.'redi
5b80 72 65 63 74 5f 75 72 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 72 65 rect_uri................(cons.re
5ba0 64 69 72 65 63 74 2d 75 72 69 2d 65 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 direct-uri-elt..................
5bc0 20 20 20 20 28 6c 69 73 74 20 28 63 6f 6e 73 20 27 63 6f 64 65 20 63 6f 64 65 29 0a 20 20 20 20 ....(list.(cons.'code.code).....
5be0 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 20 27 72 65 .......................(cons.'re
5c00 64 69 72 65 63 74 5f 75 72 69 20 72 65 64 69 72 65 63 74 2d 75 72 69 29 0a 20 20 20 20 20 20 20 direct_uri.redirect-uri)........
5c20 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 20 27 73 74 61 74 65 ....................(cons.'state
5c40 20 28 63 64 72 20 28 61 73 73 6f 63 20 27 73 74 61 74 65 20 64 61 74 61 2d 61 6c 69 73 74 29 29 .(cdr.(assoc.'state.data-alist))
5c60 29 29 29 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 75 ))))))..(defconst.oauth2-auto--u
5c80 72 6c 2d 75 6e 72 65 73 65 72 76 65 64 0a 20 20 22 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f rl-unreserved..."abcdefghijklmno
5ca0 70 71 72 73 74 75 76 77 78 79 7a 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 pqrstuvwxyzABCDEFGHIJKLMNOPQRSTU
5cc0 56 57 58 59 30 31 32 33 34 35 36 37 38 39 2d 5f 22 0a 20 20 22 4c 69 73 74 20 6f 66 20 76 61 6c VWXY0123456789-_"..."List.of.val
5ce0 69 64 20 6e 6f 6e 2d 70 61 64 64 69 6e 67 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 20 42 61 73 id.non-padding.characters.in.Bas
5d00 65 36 34 20 55 52 4c 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 2e 22 29 0a 0a 28 64 65 66 75 e64.URL.encoded.string.")..(defu
5d20 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 72 61 6e 64 6f 6d 2d 73 74 72 69 6e 67 20 28 6c 65 n.oauth2-auto--random-string.(le
5d40 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 72 61 6e 64 6f 6d 20 73 74 72 69 6e 67 20 6f 66 20 n)..."Return.a.random.string.of.
5d60 6c 65 6e 67 74 68 20 4c 45 4e 2e 0a 55 73 65 73 20 6f 6e 6c 79 20 63 68 61 72 61 63 74 65 72 73 length.LEN..Uses.only.characters
5d80 20 76 61 6c 69 64 20 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 60 62 61 73 65 36 34 75 .valid.in.the.output.of.`base64u
5da0 72 6c 2d 65 6e 63 6f 64 65 2d 73 74 72 69 6e 67 27 2e 22 0a 20 20 3b 20 69 6e 73 70 69 72 65 64 rl-encode-string'."...;.inspired
5dc0 20 62 79 20 68 74 74 70 3a 2f 2f 78 61 68 6c 65 65 2e 69 6e 66 6f 2f 65 6d 61 63 73 2f 65 6d 61 .by.http://xahlee.info/emacs/ema
5de0 63 73 2f 65 6c 69 73 70 5f 69 6e 73 65 72 74 5f 72 61 6e 64 6f 6d 5f 6e 75 6d 62 65 72 5f 73 74 cs/elisp_insert_random_number_st
5e00 72 69 6e 67 2e 68 74 6d 6c 0a 20 20 28 6c 65 74 20 28 28 72 61 6e 64 2d 6c 65 6e 20 28 6c 65 6e ring.html...(let.((rand-len.(len
5e20 67 74 68 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 75 72 6c 2d 75 6e 72 65 73 65 72 76 65 64 29 gth.oauth2-auto--url-unreserved)
5e40 29 29 0a 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 28 64 6f ))....(with-temp-buffer......(do
5e60 74 69 6d 65 73 20 28 5f 6c 20 6c 65 6e 29 0a 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 65 times.(_l.len)........(insert.(e
5e80 6c 74 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 75 72 6c 2d 75 6e 72 65 73 65 72 76 65 64 20 28 lt.oauth2-auto--url-unreserved.(
5ea0 72 61 6e 64 6f 6d 20 72 61 6e 64 2d 6c 65 6e 29 29 29 29 0a 20 20 20 20 20 28 62 75 66 66 65 72 random.rand-len))))......(buffer
5ec0 2d 73 74 72 69 6e 67 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d -string))))..(defun.oauth2-auto-
5ee0 2d 62 61 73 65 36 34 75 72 6c 2d 65 6e 63 6f 64 65 2d 73 74 72 69 6e 67 20 28 73 74 72 69 6e 67 -base64url-encode-string.(string
5f00 20 26 6f 70 74 69 6f 6e 61 6c 20 6e 6f 2d 70 61 64 29 0a 20 20 22 50 61 63 6b 61 67 65 2d 6c 6f .&optional.no-pad)..."Package-lo
5f20 63 61 6c 20 76 65 72 73 69 6f 6e 20 6f 66 20 e2 80 98 62 61 73 65 36 34 75 72 6c 2d 65 6e 63 6f cal.version.of....base64url-enco
5f40 64 65 2d 73 74 72 69 6e 67 e2 80 99 2e 0a 0a 42 61 73 65 36 34 75 72 6c 2d 65 6e 63 6f 64 65 20 de-string......Base64url-encode.
5f60 53 54 52 49 4e 47 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 0a 0a 4f STRING.and.return.the.result...O
5f80 70 74 69 6f 6e 61 6c 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 4e 4f 2d 50 41 44 20 6d ptional.second.argument.NO-PAD.m
5fa0 65 61 6e 73 20 64 6f 20 6e 6f 74 20 61 64 64 20 70 61 64 64 69 6e 67 20 63 68 61 72 20 3d 2e 0a eans.do.not.add.padding.char.=..
5fc0 0a 54 68 69 73 20 70 72 6f 64 75 63 65 73 20 74 68 65 20 55 52 4c 20 76 61 72 69 61 6e 74 20 6f .This.produces.the.URL.variant.o
5fe0 66 20 62 61 73 65 20 36 34 20 65 6e 63 6f 64 69 6e 67 20 64 65 66 69 6e 65 64 20 69 6e 20 52 46 f.base.64.encoding.defined.in.RF
6000 43 20 34 36 34 38 2e 0a 0a 45 78 69 73 74 73 20 62 65 63 61 75 73 65 20 74 68 69 73 20 70 61 63 C.4648...Exists.because.this.pac
6020 6b 61 67 65 20 69 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 45 6d 61 63 73 20 32 36 kage.is.compatible.with.Emacs.26
6040 2e 31 2c 20 62 75 74 0a e2 80 98 62 61 73 65 36 34 75 72 6c 2d 65 6e 63 6f 64 65 2d 73 74 72 69 .1,.but....base64url-encode-stri
6060 6e 67 e2 80 99 20 77 61 73 20 6f 6e 6c 79 20 61 64 64 65 64 20 69 6e 20 45 6d 61 63 73 20 32 37 ng....was.only.added.in.Emacs.27
6080 2e 31 2e 22 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 62 61 73 65 36 34 75 72 6c 2d 65 .1."...(if.(fboundp.'base64url-e
60a0 6e 63 6f 64 65 2d 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 3b 3b 20 55 73 65 20 66 75 6e 63 61 ncode-string).......;;.Use.funca
60c0 6c 6c 20 74 6f 20 73 69 6c 65 6e 63 65 20 66 6c 79 63 68 65 63 6b 2e 0a 20 20 20 20 20 20 28 66 ll.to.silence.flycheck........(f
60e0 75 6e 63 61 6c 6c 20 27 62 61 73 65 36 34 75 72 6c 2d 65 6e 63 6f 64 65 2d 73 74 72 69 6e 67 20 uncall.'base64url-encode-string.
6100 73 74 72 69 6e 67 20 6e 6f 2d 70 61 64 29 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 65 6e 63 20 28 string.no-pad).....(let*.((enc.(
6120 62 61 73 65 36 34 2d 65 6e 63 6f 64 65 2d 73 74 72 69 6e 67 20 73 74 72 69 6e 67 20 74 29 29 0a base64-encode-string.string.t)).
6140 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 63 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d ...........(enc.(replace-regexp-
6160 69 6e 2d 73 74 72 69 6e 67 20 22 2b 22 20 22 2d 22 20 65 6e 63 29 29 0a 20 20 20 20 20 20 20 20 in-string."+"."-".enc)).........
6180 20 20 20 28 65 6e 63 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e ...(enc.(replace-regexp-in-strin
61a0 67 20 22 2f 22 20 22 5f 22 20 65 6e 63 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 6e 6f 2d 70 61 g."/"."_".enc))).......(if.no-pa
61c0 64 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 d...........(replace-regexp-in-s
61e0 74 72 69 6e 67 20 22 3d 22 20 22 22 20 65 6e 63 29 0a 20 20 20 20 20 20 20 20 65 6e 63 29 29 29 tring."="."".enc).........enc)))
6200 29 0a 0a 3b 3b 20 43 6f 6e 74 72 6f 6c 20 66 6c 6f 77 20 74 6f 20 61 75 74 68 65 6e 74 69 63 61 )..;;.Control.flow.to.authentica
6220 74 65 20 63 6c 69 65 6e 74 20 74 6f 20 74 68 65 20 4f 41 75 74 68 32 20 70 72 6f 76 69 64 65 72 te.client.to.the.OAuth2.provider
6240 73 0a 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 72 65 66 72 65 s...(aio-defun.oauth2-auto-refre
6260 73 68 2d 6f 72 2d 61 75 74 68 65 6e 74 69 63 61 74 65 20 28 75 73 65 72 6e 61 6d 65 20 70 72 6f sh-or-authenticate.(username.pro
6280 76 69 64 65 72 20 70 6c 69 73 74 29 0a 20 20 22 54 72 79 20 74 6f 20 72 65 66 72 65 73 68 2c 20 vider.plist)..."Try.to.refresh,.
62a0 61 6e 64 20 69 66 20 72 65 66 72 65 73 68 69 6e 67 20 66 61 69 6c 73 2c 20 61 75 74 68 65 6e 74 and.if.refreshing.fails,.authent
62c0 69 63 61 74 65 2e 0a 46 6f 72 20 55 53 45 52 4e 41 4d 45 2c 20 50 52 4f 56 49 44 45 52 2c 20 61 icate..For.USERNAME,.PROVIDER,.a
62e0 6e 64 20 50 4c 49 53 54 20 73 65 65 20 e2 80 98 6f 61 75 74 68 32 2d 61 75 74 6f 2d 72 65 66 72 nd.PLIST.see....oauth2-auto-refr
6300 65 73 68 e2 80 99 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 69 73 65 20 28 6f 61 75 74 esh...."...(let*.((promise.(oaut
6320 68 32 2d 61 75 74 6f 2d 72 65 66 72 65 73 68 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 h2-auto-refresh.username.provide
6340 72 20 70 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 73 75 6c 74 20 28 61 69 6f 2d r.plist))..........(result.(aio-
6360 61 77 61 69 74 20 28 61 69 6f 2d 63 61 74 63 68 20 70 72 6f 6d 69 73 65 29 29 29 29 0a 20 20 20 await.(aio-catch.promise))))....
6380 20 28 69 66 20 28 65 71 20 28 63 61 72 20 72 65 73 75 6c 74 29 20 3a 73 75 63 63 65 73 73 29 0a .(if.(eq.(car.result).:success).
63a0 20 20 20 20 20 20 20 20 3b 20 49 66 20 73 75 63 63 65 65 64 65 64 2c 20 72 65 74 75 72 6e 20 74 ........;.If.succeeded,.return.t
63c0 68 65 20 72 65 73 75 6c 74 0a 20 20 20 20 20 20 20 20 28 63 64 72 20 72 65 73 75 6c 74 29 0a 20 he.result.........(cdr.result)..
63e0 20 20 20 20 20 3b 20 49 66 20 66 61 69 6c 65 64 2c 20 61 75 74 68 65 6e 74 69 63 61 74 65 20 69 .....;.If.failed,.authenticate.i
6400 6e 73 74 65 61 64 0a 20 20 20 20 20 20 28 61 69 6f 2d 61 77 61 69 74 20 28 6f 61 75 74 68 32 2d nstead.......(aio-await.(oauth2-
6420 61 75 74 6f 2d 61 75 74 68 65 6e 74 69 63 61 74 65 20 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 auto-authenticate.username.provi
6440 64 65 72 29 29 29 29 29 0a 0a 28 61 69 6f 2d 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f der)))))..(aio-defun.oauth2-auto
6460 2d 61 75 74 68 65 6e 74 69 63 61 74 65 20 28 75 73 65 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 -authenticate.(username.provider
6480 29 0a 20 20 22 41 75 74 68 65 6e 74 69 63 61 74 65 73 20 55 53 45 52 4e 41 4d 45 20 75 73 69 6e )..."Authenticates.USERNAME.usin
64a0 67 20 50 52 4f 56 49 44 45 52 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 70 6c 69 73 74 2e 22 g.PROVIDER.and.returns.a.plist."
64c0 0a 20 20 28 6c 65 74 2a 20 28 28 73 74 61 74 65 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 72 ...(let*.((state.(oauth2-auto--r
64e0 61 6e 64 6f 6d 2d 73 74 72 69 6e 67 20 38 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 64 65 2d andom-string.8))..........(code-
6500 76 65 72 69 66 69 65 72 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 72 61 6e 64 6f 6d 2d 73 74 verifier.(oauth2-auto--random-st
6520 72 69 6e 67 20 34 33 29 29 0a 20 20 20 20 20 20 20 20 20 28 62 69 6e 61 72 79 2d 63 6f 64 65 2d ring.43))..........(binary-code-
6540 63 68 61 6c 6c 65 6e 67 65 20 28 73 65 63 75 72 65 2d 68 61 73 68 20 27 73 68 61 32 35 36 20 63 challenge.(secure-hash.'sha256.c
6560 6f 64 65 2d 76 65 72 69 66 69 65 72 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 ode-verifier.nil.nil.t))........
6580 20 20 28 72 65 73 70 6f 6e 73 65 20 28 61 69 6f 2d 61 77 61 69 74 0a 20 20 20 20 20 20 20 20 20 ..(response.(aio-await..........
65a0 20 20 20 20 20 20 20 20 20 20 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 62 72 6f 77 73 65 72 ...........(oauth2-auto--browser
65c0 2d 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 -request......................pr
65e0 6f 76 69 64 65 72 20 27 61 75 74 68 6f 72 69 7a 65 5f 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 ovider.'authorize_url...........
6600 20 20 20 20 20 20 20 20 20 20 20 27 28 63 6c 69 65 6e 74 5f 69 64 20 74 65 6e 61 6e 74 20 73 63 ...........'(client_id.tenant.sc
6620 6f 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 6c 6f 67 ope)......................`((log
6640 69 6e 5f 68 69 6e 74 20 2e 20 2c 75 73 65 72 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 in_hint...,username)............
6660 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 5f 74 79 70 65 20 2e 20 22 63 6f ............(response_type..."co
6680 64 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 de")........................(res
66a0 70 6f 6e 73 65 5f 6d 6f 64 65 20 2e 20 22 71 75 65 72 79 22 29 20 3b 3b 20 6d 69 63 72 6f 73 6f ponse_mode..."query").;;.microso
66c0 66 74 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ft-only........................(
66e0 61 63 63 65 73 73 5f 74 79 70 65 20 2e 20 22 6f 66 66 6c 69 6e 65 22 29 20 3b 3b 20 67 6f 6f 67 access_type..."offline").;;.goog
6700 6c 65 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 le-only........................(
6720 73 74 61 74 65 20 2e 20 2c 73 74 61 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 state...,state).................
6740 20 20 20 20 20 20 20 28 63 6f 64 65 5f 63 68 61 6c 6c 65 6e 67 65 20 2e 20 2c 28 6f 61 75 74 68 .......(code_challenge...,(oauth
6760 32 2d 61 75 74 6f 2d 2d 62 61 73 65 36 34 75 72 6c 2d 65 6e 63 6f 64 65 2d 73 74 72 69 6e 67 20 2-auto--base64url-encode-string.
6780 62 69 6e 61 72 79 2d 63 6f 64 65 2d 63 68 61 6c 6c 65 6e 67 65 20 74 29 29 0a 20 20 20 20 20 20 binary-code-challenge.t)).......
67a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 64 65 5f 63 68 61 6c 6c 65 6e 67 65 .................(code_challenge
67c0 5f 6d 65 74 68 6f 64 20 2e 20 22 53 32 35 36 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 _method..."S256")))))..........(
67e0 72 65 73 70 6f 6e 73 65 2d 73 74 61 74 65 20 28 63 64 72 20 28 61 73 73 6f 63 20 27 73 74 61 74 response-state.(cdr.(assoc.'stat
6800 65 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 64 69 72 65 63 74 e.response)))..........(redirect
6820 2d 75 72 69 20 28 63 64 72 20 28 61 73 73 6f 63 20 27 72 65 64 69 72 65 63 74 5f 75 72 69 20 72 -uri.(cdr.(assoc.'redirect_uri.r
6840 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 64 65 20 28 63 64 72 20 28 esponse)))..........(code.(cdr.(
6860 61 73 73 6f 63 20 27 63 6f 64 65 20 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 0a 20 20 20 20 3b 20 assoc.'code.response))))......;.
6880 56 65 72 69 66 79 20 74 68 61 74 20 74 68 65 20 72 65 74 75 72 6e 20 73 74 61 74 65 20 6d 61 74 Verify.that.the.return.state.mat
68a0 63 68 65 73 2e 0a 20 20 20 20 3b 20 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 6d 69 63 72 6f 73 6f ches......;.https://docs.microso
68c0 66 74 2e 63 6f 6d 2f 65 6e 2d 75 73 2f 61 7a 75 72 65 2f 61 63 74 69 76 65 2d 64 69 72 65 63 74 ft.com/en-us/azure/active-direct
68e0 6f 72 79 2f 64 65 76 65 6c 6f 70 2f 76 32 2d 6f 61 75 74 68 32 2d 61 75 74 68 2d 63 6f 64 65 2d ory/develop/v2-oauth2-auth-code-
6900 66 6c 6f 77 23 73 75 63 63 65 73 73 66 75 6c 2d 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 28 75 6e flow#successful-response.....(un
6920 6c 65 73 73 20 28 65 71 75 61 6c 20 73 74 61 74 65 20 72 65 73 70 6f 6e 73 65 2d 73 74 61 74 65 less.(equal.state.response-state
6940 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 22 53 74 61 74 65 20 73 65 6e ).......(error........"State.sen
6960 74 20 61 6e 64 20 72 65 74 75 72 6e 65 64 20 64 6f 20 6e 6f 74 20 6d 61 74 63 68 20 2d 20 73 65 t.and.returned.do.not.match.-.se
6980 63 75 72 69 74 79 20 72 69 73 6b 3a 20 73 74 61 74 65 3d 25 73 20 72 65 73 70 6f 6e 73 65 5f 73 curity.risk:.state=%s.response_s
69a0 74 61 74 65 3d 25 73 22 0a 20 20 20 20 20 20 20 73 74 61 74 65 20 72 65 73 70 6f 6e 73 65 2d 73 tate=%s"........state.response-s
69c0 74 61 74 65 29 29 0a 0a 20 20 20 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 6d 61 6b 65 2d 70 tate))......(oauth2-auto--make-p
69e0 6c 69 73 74 0a 20 20 20 20 20 28 61 69 6f 2d 61 77 61 69 74 0a 20 20 20 20 20 20 28 6f 61 75 74 list......(aio-await.......(oaut
6a00 68 32 2d 61 75 74 6f 2d 2d 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72 h2-auto--request........provider
6a20 20 27 74 6f 6b 65 6e 5f 75 72 6c 0a 20 20 20 20 20 20 20 27 28 63 6c 69 65 6e 74 5f 69 64 20 74 .'token_url........'(client_id.t
6a40 65 6e 61 6e 74 20 63 6c 69 65 6e 74 5f 73 65 63 72 65 74 29 0a 20 20 20 20 20 20 20 60 28 28 72 enant.client_secret)........`((r
6a60 65 64 69 72 65 63 74 5f 75 72 69 20 2e 20 2c 72 65 64 69 72 65 63 74 2d 75 72 69 29 0a 20 20 20 edirect_uri...,redirect-uri)....
6a80 20 20 20 20 20 20 28 63 6f 64 65 20 2e 20 2c 63 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 28 67 ......(code...,code)..........(g
6aa0 72 61 6e 74 5f 74 79 70 65 20 2e 20 22 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 5f 63 6f 64 65 22 rant_type..."authorization_code"
6ac0 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 64 65 5f 76 65 72 69 66 69 65 72 20 2e 20 2c 63 6f 64 )..........(code_verifier...,cod
6ae0 65 2d 76 65 72 69 66 69 65 72 29 29 29 29 0a 20 20 20 20 20 6e 69 6c 29 29 29 0a 0a 28 61 69 6f e-verifier))))......nil)))..(aio
6b00 2d 64 65 66 75 6e 20 6f 61 75 74 68 32 2d 61 75 74 6f 2d 72 65 66 72 65 73 68 20 28 5f 75 73 65 -defun.oauth2-auto-refresh.(_use
6b20 72 6e 61 6d 65 20 70 72 6f 76 69 64 65 72 20 70 6c 69 73 74 29 0a 20 20 22 52 65 66 72 65 73 68 rname.provider.plist)..."Refresh
6b40 20 61 63 63 65 73 73 20 6f 66 20 55 53 45 52 4e 41 4d 45 20 75 73 69 6e 67 20 50 52 4f 56 49 44 .access.of.USERNAME.using.PROVID
6b60 45 52 20 75 73 69 6e 67 20 74 68 65 20 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e 20 69 6e 20 50 4c ER.using.the.refresh-token.in.PL
6b80 49 53 54 2e 0a 52 65 74 75 72 6e 20 74 68 65 20 72 65 66 72 65 73 68 65 64 20 70 6c 69 73 74 2e IST..Return.the.refreshed.plist.
6ba0 22 0a 20 20 28 6c 65 74 20 28 28 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e 20 28 70 6c 69 73 74 2d "...(let.((refresh-token.(plist-
6bc0 67 65 74 20 70 6c 69 73 74 20 3a 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 get.plist.:refresh-token))).....
6be0 28 75 6e 6c 65 73 73 20 72 65 66 72 65 73 68 2d 74 6f 6b 65 6e 0a 20 20 20 20 20 20 28 65 72 72 (unless.refresh-token.......(err
6c00 6f 72 20 22 52 65 66 72 65 73 68 20 74 6f 6b 65 6e 20 69 73 20 6e 69 6c 20 69 6e 20 70 6c 69 73 or."Refresh.token.is.nil.in.plis
6c20 74 3d 25 73 22 20 28 70 70 2d 74 6f 2d 73 74 72 69 6e 67 20 70 6c 69 73 74 29 29 29 0a 0a 20 20 t=%s".(pp-to-string.plist)))....
6c40 20 20 3b 20 52 65 66 72 65 73 68 20 61 6e 20 6f 61 75 74 68 32 2d 74 6f 6b 65 6e 0a 20 20 20 20 ..;.Refresh.an.oauth2-token.....
6c60 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 6d 61 6b 65 2d 70 6c 69 73 74 0a 20 20 20 20 20 28 61 (oauth2-auto--make-plist......(a
6c80 69 6f 2d 61 77 61 69 74 20 28 6f 61 75 74 68 32 2d 61 75 74 6f 2d 2d 72 65 71 75 65 73 74 0a 20 io-await.(oauth2-auto--request..
6ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72 20 27 74 6f 6b 65 6e 5f ................provider.'token_
6cc0 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 63 6c 69 65 6e 74 5f 69 64 url..................'(client_id
6ce0 20 74 65 6e 61 6e 74 20 63 6c 69 65 6e 74 5f 73 65 63 72 65 74 29 0a 20 20 20 20 20 20 20 20 20 .tenant.client_secret)..........
6d00 20 20 20 20 20 20 20 20 60 28 28 72 65 66 72 65 73 68 5f 74 6f 6b 65 6e 20 2e 20 2c 72 65 66 72 ........`((refresh_token...,refr
6d20 65 73 68 2d 74 6f 6b 65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 esh-token)....................(g
6d40 72 61 6e 74 5f 74 79 70 65 20 2e 20 22 72 65 66 72 65 73 68 5f 74 6f 6b 65 6e 22 29 29 29 29 0a rant_type..."refresh_token")))).
6d60 20 20 20 20 20 70 6c 69 73 74 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 6f 61 75 74 68 32 2d .....plist)))..(provide.'oauth2-
6d80 61 75 74 6f 29 0a 0a 3b 3b 3b 20 6f 61 75 74 68 32 2d 61 75 74 6f 2e 65 6c 20 65 6e 64 73 20 68 auto)..;;;.oauth2-auto.el.ends.h
6da0 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ere.............................
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 ................................